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

Post on 17-May-2015

696 views 0 download

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

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