ZeroMQ e Redis: soluzioni open source per l'integrazione di componenti

27
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

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 of ZeroMQ e Redis: soluzioni open source per l'integrazione di componenti

Page 1: ZeroMQ e Redis: soluzioni open source per l'integrazione di componenti

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

Page 2: 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

Page 3: 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

Page 4: 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

Page 5: 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

Page 6: 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

Page 7: 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

Page 8: 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

Page 9: 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

Page 10: 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

Page 11: 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

Page 12: 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

Page 13: 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

Page 14: 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

Page 15: 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

Page 16: 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

Page 17: 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

Page 18: 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

Page 19: 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

Page 20: 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

Page 21: 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

Page 22: 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

Page 23: 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

Page 24: 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

Page 25: 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

Page 26: 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

Page 27: 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