Realizzare software complessi con componenti semplici che interagiscono in forme ben definite è da sempre il modo per ottenere architetture robuste ed efficienti.
ZeroMQ e Redis permettono di implementare questo paradigma ed estenderlo alle reti, ai diversi linguaggi, alle diverse architetture hardware.
ZeroMQ e Redis: soluzioni open source per l'integrazione di componenti
1. Componenti
ZeroMQ
Redis
Conclusioni
ZeroMQ e Redis:
soluzioni Open Source per l’integrazione di
Componenti
Matteo Fortini
LinuxDay
Ferrara, 27 Ottobre 2012
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
2. Componenti
ZeroMQ
Redis
Conclusioni
Componenti
Riutilizzabili
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
3. Componenti
ZeroMQ
Redis
Conclusioni
Componenti
Testabili Singolarmente
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
4. Componenti
ZeroMQ
Redis
Conclusioni
Componenti
Scritti in diversi linguaggi
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
5. Componenti
ZeroMQ
Redis
Conclusioni
Componenti
Cross-platform
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
6. Componenti
ZeroMQ
Redis
Conclusioni
Componenti
Modulari
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
7. Componenti
ZeroMQ
Redis
Conclusioni
Componenti
Distribuibili
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
8. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
The Intelligent Transport Layer
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
9. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Come iniziano i progetti?
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
10. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Come finiscono?
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
11. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Vantaggi di ZeroMQ
• Serverless
• Orientata ai messaggi
• Cross platform
• Cross linguaggio
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
12. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Trasparente
• inproc:// → memoria, thread
• ipc:// → UNIX R sockets, processi
• tcp:// → rete
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
13. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Pattern
[ti costringe a pensare alle interazioni]
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
14. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
REQ/REP
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
15. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
PIPE
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
16. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
PUB/SUB
[anche multimaster → (e)pgm://]
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
17. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Devices
• Forwarder → PUB/SUB
• Streamer → PIPE
• Broker → REQ/REP
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
18. Componenti Evoluzione dei progetti
ZeroMQ Caratteristiche di ZeroMQ
Redis Pattern
Conclusioni Difetti
Difetti
• Robustezza sulla rete
• Uso di thread
• assert()
• Performance
• Fork: http://crossroads.io
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
19. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Redis is an open source, advanced
key-value store.
It is often referred to as a data structure
server since keys can contain strings, hashes,
lists, sets and sorted sets.
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
20. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Il problema dello stato
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
21. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Cos’è Redis
• NoSQL
• Key-Value
• Piccolo
• Efficiente
• In-memory
• Cross platform (server/clients)
• Cross linguaggio (clients)
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
22. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Non solo Key-Value
• HASH
• LIST
• SET/ORDERED SET
• BITSET
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
23. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Funzioni avanzate
• Transazioni
• INC/DEC atomici
• PUB/SUB
• EXPIRE
• MONITOR
• Lua scripting
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
24. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Distribuito
• Master/Slave
• Sentinel
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
25. Il problema dello stato
Componenti Redis
ZeroMQ Non solo Key-Value
Redis Funzioni avanzate
Conclusioni Distribuito
Difetti
Difetti
• Limitato dalla RAM
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
26. Componenti
ZeroMQ
Redis
Conclusioni
[Piccola demo...]
Grazie!
Domande?
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C
27. Componenti
ZeroMQ
Redis
Conclusioni
Acknowledgements
• Clones Army image by Fred Dunn
https://secure.flickr.com/photos/gratapictures/
• Dandelion image by undergroundbastard
https://secure.flickr.com/photos/undergroundbastard/
• Pattern image by Akbar Sim
https://secure.flickr.com/photos/akbar2/
• Gears image by freefotouk
https://secure.flickr.com/photos/freefoto/
• Pipes image by Domiriel
https://secure.flickr.com/photos/domiriel/
• Antenna image by Janne Aaltonen
https://secure.flickr.com/photos/janneaaltonen/
• Map pin image by joebuzzica
https://secure.flickr.com/photos/63352809@N02/
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di C