Cassandra chez Chronopost

Transcription

Cassandra chez Chronopost
Cassandra chez Chronopost
pour traiter en temps réel 1,5 milliard d’événements par an
Qui suis-je ?
Alexander DEJANOVSKI
• Ingénieur EAI
• Depuis 15 ans chez Chronopost
•@alexanderDeja
Chronopost International
Notre métier
Leader de la livraison express de colis jusqu’à 30 kg aux entreprises comme aux
particuliers partout dans le monde, Chronopost s’appuie sur en France sur un réseau
constitué de 75 sites opérationnels et 7 hubs. Chronopost dessert plus de 230 pays en
Europe et dans le monde.
En 2014 :
3 500 salariés
Plus de 60 000 entreprises clientes
4 500 tournées de livraison par jour
114,5 millions de colis livrés
230 pays desservis
33% des colis livrés en BtoC
25% de son CA à l’International
L’EAI chez
Chronopost
Flux EAI chez Chronopost
• TIBCO BusinessWorks
• 750 000 échanges/j
• 3M d’étapes/j
Suivi des flux EAI
Développement interne : FLUKS
Base relationnelle
Suivi des flux EAI
Suivi des flux EAI
Suivi des flux EAI
Suivi des flux EAI
Problèmes
• Contentions
• Latences
• Statistiques
Proposition d’un PoC NoSQL sur Fluks
• Portage
• Scalabilité
• Open Source
La jungle « NoSQL/Big Data »
http://nosql-database.org/ liste + de 150 bases NoSQL
Hadoop
HBase
Cassandra
Hypertable
Accumulo
Cloudata
Cloudera
MonetDB
HPCC
Apache Flink
Splice Machine
MongoDB
Elasticsearch
Couchbase
CouchDB
RethinkDB
RavenDB
MarkLogic
Server
Clusterpoint
Server
NeDB
Terrastore
AmisaDB
JasDB
RaptorDB
djondb
EJDB
densodb
SisoDB
SDB
ThruDB
iBoxDB
DynamoDB
Riak
Redis
Aerospike
FoundationDB
LevelDB
Berkeley DB
Oracle NOSQL
GenieDB
BangDB
Scalaris
Scalien
Voldemort
Dynomite
KAI
MemcacheDB
Spark
….
#CassandraSummit
Notre short list
• HBase
• Cassandra
• MongoDB
Cassandra
Pourquoi Cassandra ?
• Simplicité
• Réplication
• Tolérance aux pannes
• CQL
• JDBC
• Scalabilité
Partition et réplication
Replication Factor = 3
3 répliques de chaque enregistrement
Requêtes
Scalabilité linéaire
CQL = Cassandra Query Language
• Création de table :
– CREATE TABLE ma_table(
id int,
value text,
PRIMARY INDEX(id)
);
• Requêtage des données :
– SELECT * FROM ma_table WHERE id=?
Il faut réapprendre certaines choses…
• Pas de relations
• Dénormalisation
• Clauses WHERE limitées
• Requêtes analytiques
Le PoC
Cassandra
Portage de Fluks
• Driver JDBC Cassandra (TIBCO/IHM)
• Guava
• 2 mois / 1 personne
Passage en production
• Serveurs décommissionnés
• Août 2014 : 1ère infrastructure
• Avril 2015 : évolution
Résultats en production
• Plus de contention
• Stats temps réel
• RDBMS : 100-120ms / message
• Cassandra : 16-20ms / message
Comparatifs des temps d’intégration
Des stats temps réel ?
• Dans
la version relationnelle :
– Batch
– Recalculs à la demande
• Avec la montée en charge :
– Durée++
– Perturbation insertions
Des stats temps réel ?
• Type « counter » de Cassandra
– Incrémentation/Décrémentation :
UPDATE ma_table
SET my_counter = my_counter + 10
WHERE ma_cle=1
• Le truc génial ?
– UPDATE = INSERT
– Enregistrement créé s’il n’existe pas
Des stats temps réel ?
Attention :
– Cassandra < 2.1 = compteurs approximatifs
• rejeux
• OK pour des stats
Développements
en cours sur
Cassandra
Vision
• Base Cassandra alimentée depuis notre Base Colis
– Toutes les Informations colis
– Tous les événements
Vision
• 2 nouvelles offres Chronopost à la rentrée
• Stockage Cassandra
• Accent fort sur le temps réel
• Stockage en « time series »
Infrastructure
analytique
Notre stack analytique « Big Data »
• Apache Spark 1.2
• Cassandra (via connecteur Spark Datastax)
– Analyse sur profondeur réduite (opérationnel)
• HDFS
– Analyse sur profondeur étendue (archivage)
• Dataiku
Contribution à
l’écosystème
Cassandra
Le driver JDBC « legacy »
• Non maintenu
• Limité
• Cassandra <= 1.2
• Datastax Java driver
Mise à jour du driver JDBC « legacy »
• Cassandra 2.0/2.1
• Load balancing
• Disponible sur code.google.com
• Google : « cassandra jdbc »
• API Thrift
Nouveau driver JDBC
• Réécriture
• Intégration Driver Java Datastax
• Disponible sur github.com/adejanovski
Requêtes asynchrones
Load balancing policies : Token Aware Policy
Load balancing policies : DC Aware Policy
Load balancing policies : DC Aware Policy
Remerciements
• Datastax pour :
– Son invitation aujourd’hui
– Sa contribution au code source Cassandra (>80%)
– Son animation de la communauté Cassandra
• Vous pour :
– M’avoir écouté jusqu’au bout
Merci !