zeromq e redis: soluzioni open source per l'integrazione di componenti
DESCRIPTION
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.TRANSCRIPT
ComponentiZeroMQ
RedisConclusioni
ZeroMQ e Redis:soluzioni Open Source per l’integrazione di
Componenti
Matteo Fortini
LinuxDayFerrara, 27 Ottobre 2012
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Componenti
Riutilizzabili
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Componenti
Testabili Singolarmente
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Componenti
Scritti in diversi linguaggi
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Componenti
Cross-platform
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Componenti
Modulari
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Componenti
Distribuibili
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
The Intelligent Transport Layer
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
Come iniziano i progetti?
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
Come finiscono?
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
Vantaggi di ZeroMQ• Serverless• Orientata ai messaggi• Cross platform• Cross linguaggio
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
Trasparente• inproc:// → memoria, thread• ipc:// → UNIX R© sockets, processi• tcp:// → rete
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
Pattern
[ti costringe a pensare alle interazioni]
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
REQ/REP
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
PIPE
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
PUB/SUB
[anche multimaster → (e)pgm://]Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
Devices• Forwarder → PUB/SUB• Streamer → PIPE• Broker → REQ/REP
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Evoluzione dei progettiCaratteristiche di ZeroMQPatternDifetti
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 Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
Redis is an open source, advancedkey-value store.It is often referred to as a data structureserver since keys can contain strings, hashes,lists, sets and sorted sets.
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
Il problema dello stato
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
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 Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
Non solo Key-Value• HASH• LIST• SET/ORDERED SET• BITSET
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
Funzioni avanzate• Transazioni• INC/DEC atomici• PUB/SUB• EXPIRE• MONITOR• Lua scripting
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
Distribuito• Master/Slave• Sentinel
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Il problema dello statoRedisNon solo Key-ValueFunzioni avanzateDistribuitoDifetti
Difetti• Limitato dalla RAM
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
[Piccola demo...]
Grazie!
Domande?
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti
ComponentiZeroMQ
RedisConclusioni
Acknowledgements
• Clones Army image by Fred Dunnhttps://secure.flickr.com/photos/gratapictures/
• Dandelion image by undergroundbastardhttps://secure.flickr.com/photos/undergroundbastard/
• Pattern image by Akbar Simhttps://secure.flickr.com/photos/akbar2/
• Gears image by freefotoukhttps://secure.flickr.com/photos/freefoto/
• Pipes image by Domirielhttps://secure.flickr.com/photos/domiriel/
• Antenna image by Janne Aaltonenhttps://secure.flickr.com/photos/janneaaltonen/
• Map pin image by joebuzzicahttps://secure.flickr.com/photos/63352809@N02/
Matteo Fortini ZeroMQ e Redis: soluzioni Open Source per l’integrazione di Componenti