Your SlideShare is downloading. ×
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra

1,986

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,986
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
45
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CassandraHaute disponibilité et élasticité avec Cassandra17/06/2011
  • 2. Speaker @mfiguiere blog.xebia.fr Michaël Figuière Distributed Architectures NoSQLSearch Engines
  • 3. Cassandra en quelques mots• Projet Apache, base de données NoSQL, peer to peer, hautement disponible Possibilité de stocker plusieurs To• Encore en version 0.8 Mais déjà déployée en production !• Approche très différente des bases de données relationnelles Nécessite un peu d’apprentissage...
  • 4. Dynamo et CassandraObjectifs similaires : - Création de Dynamo - Dernier incident majeur en 2004• Faible latence - < 40 min d’indisponibilité par an• Très haute disponibilité• Scalabilité massive - Création de Cassandra - Recherche dans les messages - 500 millions d’utilisateurs
  • 5. SGBDR et scalabilité
  • 6. Comment assurer la scalabilité avec un SGBDR ? Mise en oeuvre typique avec MySQL Réplication synchrone ou asynchrone
  • 7. Sharding avec un SGBDR
  • 8. Sharding avec un SGBDRSur serveur A Sur serveur B
  • 9. Sharding avec un SGBDRSur serveur A Sur serveur B ? ?
  • 10. Sharding avec un SGBDRSur serveur A Dénormalisation Sur serveur B Dénormalisation
  • 11. Sharding avec un SGBDRSur serveur A Dénormalisation Sur serveur B Dénormalisation On perd alors beaucoup de l’intérêt du relationnel !
  • 12. Sharding avec un SGBDR : les problèmes• Pour garder de bonnes performances, les relations many-to-many et many-to-one nécessitent d’être dé-normalisées• Gestion du resharding• Code applicatif complexifié
  • 13. Une alternative
  • 14. D’une table de hachage à une BDD clé-valeur Ensemble des clés partitionnées selon leur préfixe
  • 15. D’une table de hachage à une BDD clé-valeur Ensemble des clés Consistent hashing
  • 16. D’une table de hachage à une BDD clé-valeur Une partition par Multiples partitions instance par instance
  • 17. L’architecture de Cassandra
  • 18. Organisation des noeuds en anneau Noeud Noeud Noeud Noeud Noeud Replica Noeud Partition 1 Replica Replica Partition 2 Partition N
  • 19. Organisation des noeuds en anneau Noeud Noeud L’organisation en anneau permet de d’affecter un Noeud Noeud intervalle à chaque partition, facilitant ainsi les ajouts et suppressions d’instances Noeud Noeud
  • 20. Interactions Client / Serveur Client Noeud Noeud Client Noeud Noeud Client Noeud Client Noeud
  • 21. Interactions Client / Serveur Client Client ? Noeud Noeud Noeud replica Noeud replica Client Noeud Noeud Client replica
  • 22. Organisation des noeuds en anneau Client Noeud Noeud replica Client Noeud Noeud replica Client Noeud Noeud Client replica Agit en tant que proxy
  • 23. Gestion des défaillances• Mécanisme d’anti-entropie, assurant des réplicas identiques Echange des Hash des données entre réplicas• Hinted-Handoff stocke les écritures pendant l’absence d’un noeud Semblable à une prise de messages
  • 24. Stockage sur disque
  • 25. Architecture append-only de Cassandra MemTable RAM Disque Log SSTable
  • 26. Architecture append-only de Cassandra MemTable RAM Disque Log SSTable
  • 27. Que devient ACID ?
  • 28. Que devient ACID ?• Tout accès réseau est faillible• Des concessions doivent être faites sur le modèle de données• Des concessions doivent être faites sur la consistance
  • 29. Le théorème CAP Sur ces 3 propriétés, seules 2 sont réalisables Consistance à la fois Disponibilité Tolérance aux défaillances
  • 30. Le théorème CAPCassandra BDD relationnelles Consistance Disponibilité Tolérance aux défaillances Impossible
  • 31. Consistance éventuelle Client Noeud Noeud replica Client Noeud Noeud replica Client Noeud Client replica Noeud Transfère les requêtes R/W vers tous les réplicas
  • 32. Consistance selon nombre de réponses attendues Temps A A A A 4 réplicas
  • 33. Consistance selon nombre de réponses attendues Temps A A A A 4 réplicas B A A A Ecriture avec attente d’accusé d’un seul noeud
  • 34. Consistance selon nombre de réponses attendues Temps R+W<N A A A A 4 réplicas B A A A B A A ALecture avec attente de Ecriture avec attente réponse de 2 noeuds d’accusé d’un seul noeud
  • 35. Consistance selon nombre de réponses attendues R+W=N A A A A B B A A B B A ALecture avec attente de Ecriture avec attente réponse de 2 noeuds d’accusé de 2 noeuds
  • 36. Consistance selon nombre de réponses attendues R+W>N A A A A B B B A B B B ALecture avec attente de Ecriture avec attente réponse de 3 noeuds d’accusé de 2 noeuds
  • 37. Consistance apparente pour le client 1 Client Noeud Noeud 2 replica 3 Client 4 2 Noeud Noeud 3 replica Client 3 2 Noeud Client replica Noeud Transfère les requêtes R/W vers tous les réplicas
  • 38. Atomicité et Isolation• Les données ne sont plus co-localisées Localisation non prédictible dans le temps• Les transactions distribuées nuiraient à la disponibilité et aux performances• Atomicité et Isolation par opération sur une clé
  • 39. Durabilité• Ecriture sur un ou plusieurs disques La réplication permet de renforcer la durabilité• Ecriture multiples en mémoire La réplication apporte la durabilité• En mémoire avec écriture asynchrone sur disque Pas de durabilité
  • 40. Modèle de données
  • 41. Le modèle en famille de colonnes A chaque ID de ligne correspond une liste de couples clé-valeur BDD relationnelle BDD orientée colonnes
  • 42. Super-colonnes Les valeurs d’une super-colonne sont des collections de colonnes
  • 43. Un modèle de données peu intuitif...
  • 44. Exemple avec un panier d’achat johndoe 17:21 Iphone 17:32 DVD Player 17:44 MacBook willsmith 6:10 Camera 8:29 Ipad pitdavis 14:45 PlayStation 15:01 Asus EEE 15:03 Iphone
  • 45. APIs disponibles• Cassandra est accédé par Thrift, un RPC développé par Facebook Thrift est disponible pour les principaux langages• Hector est un client de haut niveau pour Java Offre un mapping de type JPA• PhpCassa est un client pour PHP, PyCassa est un client pour python
  • 46. Exemple d’écriture avec CassandraCluster cluster = HFactory.getOrCreateCluster("cluster", new CassandraHostConfigurator("server1:9160"));Keyspace keyspace = HFactory.createKeyspace("EcommerceKeyspace", cluster, new QuorumAllConsistencyLevelPolicy());Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer);mutator.insert("johndoe", "ShoppingCartColumnFamily", HFactory.createStringColumn("14:21", "Iphone")); Insère une colonne dans une ShoppingCartColumnFamily
  • 47. Exemple de lecture avec CassandraSliceQuery<String, String, String> query = HFactory.createSliceQuery(keyspace, stringSerializer, stringSerializer, stringSerializer);query.setColumnFamily("ShoppingCartColumnFamily") .setKey("johndoe") .setRange("", "", false, 10);QueryResult<ColumnSlice<String, String>> result = query.execute(); Lit un intervalle de 10 colonnes dans une ShoppingCartColumnFamily
  • 48. Un cas d’usage
  • 49. Un site de e-commerce Recherche des Solr produits Stockage du catalogue produits MySQL Application Stockage des Cassandra comptes clients Stockage de Memcached données de sessions
  • 50. Cassandra en production
  • 51. Cassandra en production• En production chez de nombreux « Grands du Web »• Outillage encore réduit• Monitoring par JMX• Les backups peuvent être problématiques avec des volumes importants• La gestion du cluster requiert une équipe d’exploitation expérimentée
  • 52. DataStax OpsCenter
  • 53. L’intérêt pour l’entreprise• Stockage polyglotte : une meilleure adéquation entre la BDD et les données• Scalabilité linéaire : être à même de répondre aux besoins les plus gourmands• Haute disponibilité : du multi-serveurs au multi-datacenters• Elasticité : une intégration naturelle à la logique du Cloud Computing• Curseur pour s’adapter : + de consistence ou + de fiabilité (Quorums)• Et finalement... la possibilité crée le besoin !
  • 54. Questions / Réponses ? @mfiguiere blog.xebia.fr

×