Upload
piergiorgiopigibasso
View
9
Download
0
Embed Size (px)
DESCRIPTION
Camel, Active MQ, CXF, Zookeepere Karaf: l'integrazione nell'era delCloud, the Apache way
Citation preview
Camel, Active MQ, CXF, Zookeeper e Karaf: l'integrazione nell'era del
Cloud, the Apache way
!
Ugo Landini
Agenda
Scope
Mostrare come sia possibile costruire un sistema di integrazione che sia:
Resiliente
Manutenibile
Flessibile
ad alte Performance
Glossario
Glossario Fabric
Container
OSGI
Rotta (Camel)
Provisioning
Versionamento
Maven/Nexus
GIT
Coda
REST/WS
Zookeeper
ESB
Profiles
Bundle
OSGI
EIP, Enterprise Integration Patterns
Aggregator
Splitter
CBR
Enrichment
Multicast
Wiretap
Cos un ESB?
Cos un ESB
ESB = Enterprise Service Bus
Termine coniato nei primi anni 2000
E un modello architetturale che permette lintegrazione fra applicazioni (EAI)
Si basa sullastrazione di un BUS, in maniera similare allanalogo concetto per le architetture hardware
Cos un ESB
Cos un ESB
Routing delle richieste
Trasformazione dei dati
Versionamento dei servizi
Buffering delle richieste
Bilanciamento e Scalabilit dei servizi
Monitoring e controllo
Cos OSGI?
Cos OSGI?
Uno standard per un Java Modulare
permette di impacchettare il codice in un bundle (jar)
gestisce le dipendenze dei bundle
i bundle OSGI possono essere installati, lanciati, fermati, aggiornati (Lifecycle Management) ed offrire servizi
OSGI = SOA in una JVM
la prima versione risale al 2000 e nasce negli ambienti telco.
Maven / Nexus
Maven lo standard de facto del dependency management nel mondo Java
Nexus un repository Maven centralizzato che facilita lapproccio Devops
permette di gestire le dipendenze in maniera controllata
un server che contiene tutti gli artifatti del processo di sviluppo
Coadiuva la gestione dipendenze a runtime di OSGi
Cos Karaf?
Cos Karaf
Lightweight container per OSGI
Servizi di hot deploy, logging, shell, configuration, provisioning
JEE component : JBoss = bundle OSGI : Karaf
Cos Active MQ?
Cos ActiveMQ
Il Messaging Broker Open Source pi diffuso al mondo
JMS, AMQP, MQTT, OpenWire, STOMP, REST
Java, C, C++, C#, Ruby, Perl, Python, PHP
Pluggable Transport
in-VM, TCP, SSL, NIO, UDP, JGroups
Enterprise Integration Patterns
Lavoro di Hohpe / Woolf
Divenuto uno standard de facto
parlare un linguaggio comune
riutilizzo di know how e soluzioni
Eliminazione codice custom dalle implementazioni
performance, bugs, quantit di codice
Enterprise Integration Patterns
http://camel.apache.org/eip
Cos Camel?
Cos Camel
Framework Open source che implementa i pattern EIP (>100 componenti)
mapping 1:1 fra pattern e componenti
le rotte camel sono gestite tramite OSGI
per Container si intende il contenitore di componenti OSGI
OSGI : Container = EJB : J2EE Server
Camel
Cos ZooKeeper
Cos ZooKeeper
E un componente dellecosistema di Hadoop
Serve a costruire logiche di coordinamento
Sharding, Failover, Discovery, Master election, ecc.
Usato da HBase, Kafka, Solr, Yahoo, Fuse Fabric8
Cos Fabric8?
Cos Fabric8
Fabric8 sfrutta le caratteristiche di OSGI e Zookeeper per fornire ulteriori servizi:
Provisioning (configurazioni, codice, container, fabric stesso!)
Registry centralizzato (configurazioni, load balancing, discovery, fail-over)
Versionamento (git)
Cos JBoss Fuse?
Cos JBoss Fuse
Cos JBoss Fuse
Middleware composto da:
JBoss AMQ (ActiveMQ) per la messaggistica
Camel per le mediazioni (rotte)
CXF per i Web Services
Fabric8 per la governance (registry, provisioning) con Zookeeper, git, hawt.io
decine di sottocomponenti minori
Architettura
Architettura di esempio
ROOT : Zookeeper
Provisioning remoto
Provisioning remoto
Dettaglio Nodi Camel
Processo di sviluppo
Processo di sviluppo
Raccolta del requisito di integrazione
Se il tag A contenuto nel messaggio M ha nel record corrispondente della tabella B il campo X
Trasformazione del messaggio M (rimozione tag t1, aggiunta tag X)
Successiva trasformazione del messaggio M aggiungendo un tag t3
Processo di sviluppo
Traduzione del requisito in Enterprise Integration Patterns
Processo di sviluppo
Processo di sviluppo
Riportare gli EIP sotto forma di codice
usando un DSL Java
usando un DSL XML
con un editor grafico (plugin per Eclipse)
Processo di sviluppo
Processo di sviluppo
Processo di sviluppo
Impacchettare la rotta in un bundle OSGI
mvn install
Fare il push sul repository
mvn deploy
Processo di sviluppo
Tramite CLI console o Web Console, e secondo le strategie di Roll-out aziendale, prelevare il bundle dal repository
I container selezionati faranno partire automaticamente la rotta se il deploy andato a buon fine (in caso di autostart, il default)
Processo canonico
Il processo canonico dunque :
creare una nuova rotta che implementi le nuove regole di business
creare una nuova versione su Fabric, per esempio 1.1
effettuare un check facendo un upgrade di un container alla 1.1
roll-out su tutti i container o roll-back del subset
DEFCON 2
Il processo DEFCON 2:
aprire la console grafica sui server di produzione
editare la rotta
Le console
Hawt.io
Web console
Progetto open source: Hawt.io
Accesso completo e remoto:
container, log, dashboard con strumenti di controllo
rotte camel, nodi AMQ, API Management, cluster.
Hawt.io: vista rotte Camel
Hawt.io
versioni, profili, bundle OSGI, ...
permette il DEBUG grafico delle rotte camel, con breakpoint
permette di editare rotte camel, anche su server di PRODUZIONE
permette di effettuare dei TRACE delle rotte
pu mostrare i SORGENTI di codice Java che ha sollevato uneccezione
Hawt.io: debug remoto e visuale
Command Line Console
Fuse Command Line console
Basata su SSH
Controllo totale locale e remoto del sistema
Scriptabile
Command Line Console
Performance
Performance ActiveMQ
Persistenza AMQ basata su File system
Utilizza LevelDB, un nosql di Google
il Btree di indicizzazione di LevelDB garantisce tempi O(1) per il caricamento dei messaggi
in altre parole, 3 o 30.000.000 di messaggi persistenti vengono presi in carico istantaneamente da un broker.
Performance ActiveMQ
LevelDB permette anche eccellenti tempi di scrittura sul file system
La velocit del disco il singolo fattore pi importante nel tuning.
Circa 10k msg/secondo da 5kb sostenuti per ore su un laptop moderno con SSD
Circa 4.5k msg/secondo sostenuti sul server di Amazon (9k msg/secondo con due dischi)
Performance Camel
Affidabilit
High Availability
AMQ configurabile in modalit Master - Slave
1 Slave per 1 Master
N Slave per M Master (esempio: 2 Slave per 10 Master)
Nodi ActiveMQ
Scalabilit
Scalabilit ActiveMQ
AMQ offre diverse topologie per scalare orizzontalmente:
Network of Brokers
Client side partitioning
Network of Brokers
I messaggi vengono inoltrati fra i brokers
Store and Forward
Mono o bi-direzionale
Questa topologia implica un certo grado di comunicazione fra i broker (chattiness)
Uno o pi hop per raggiungere il server su cui il messaggio presente
Network of Brokers
Client side Partitioning
E la topologia che permette di scalare orizzontalmente in maniera illimitata
I diversi Broker NON sono a conoscenza luno dellaltro
I client partizionano i messaggi secondo un criterio qualsiasi
In questa topologia possibile avere una singola coda deployata su centinaia di broker
Client side Partitioning
Client side Partitioning
E la topologia consigliata per ambienti ad altissime performance, insieme al Master/Slave per lHA
La natura dei messaggi deve prevedere criteri di partizionamento
E anche possibile avere diversi broker divisi per area geografica per architetture Follow The Sun
Success Stories
Customers
Customers
Customers
Customers
Customers
Roadmap
JBoss Fuse Roadmap
JBoss Fuse Roadmap
!
JBoss FUSE 6.0 Aprile 2013
JBoss FUSE 6.1 GA da Luned 14 Aprile :) build 379 https://repository.jboss.org/nexus/content/
repositories/ea/org/jboss/fuse/jboss-fuse-full/
Conclusioni
Resilienza
!
Resilienza
Architettura distribuita
Failover
Master/Slave per lalta affidabilit
Scalabilit orizzontale: Network of Brokers, Client side partitioning
Manutenibilit
!
Manutenibilit
OSGI based, ciclo di vita dei componenti standardizzato (con versionamento)
Console di amministrazione molto potente
Debug/Trace rotte, gestione log, editing rotte, ...
Alte performance
Alte performance
da 4.5k a 10k messaggi al secondo per coda (messaggi persistenti reali da diversi Kb)
Possibile dedicare un broker ed un disco per ogni coda (o anche distribuire la stessa coda su pi macchine ottenendo facilmente > 100k msg/secondo)
Tempi O(1) per presa in carico da parte del broker
Link e risorse
Link e risorse
Active MQ http://activemq.apache.org
Camel https://camel.apache.org
CXF http://cxf.apache.org
ZooKeeper http://zookeeper.apache.org
Karaf http://karaf.apache.org
Fabric8 http://fabric8.io
JBoss FUSE 6.1 EA builds https://repository.jboss.org/nexus/
content/repositories/ea/org/jboss/fuse/jboss-fuse-full/
Red Hat Supported! https://www.jboss.org/products/
fuse.html
Thank you!