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 !