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

2,312 views
2,233 views

Published on

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

No Downloads
Views
Total views
2,312
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. CassandraHaute disponibilité et élasticité avec Cassandra17/06/2011
  2. 2. Speaker @mfiguiere blog.xebia.fr Michaël Figuière Distributed Architectures NoSQLSearch Engines
  3. 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. 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. 5. SGBDR et scalabilité
  6. 6. Comment assurer la scalabilité avec un SGBDR ? Mise en oeuvre typique avec MySQL Réplication synchrone ou asynchrone
  7. 7. Sharding avec un SGBDR
  8. 8. Sharding avec un SGBDRSur serveur A Sur serveur B
  9. 9. Sharding avec un SGBDRSur serveur A Sur serveur B ? ?
  10. 10. Sharding avec un SGBDRSur serveur A Dénormalisation Sur serveur B Dénormalisation
  11. 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. 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. 13. Une alternative
  14. 14. D’une table de hachage à une BDD clé-valeur Ensemble des clés partitionnées selon leur préfixe
  15. 15. D’une table de hachage à une BDD clé-valeur Ensemble des clés Consistent hashing
  16. 16. D’une table de hachage à une BDD clé-valeur Une partition par Multiples partitions instance par instance
  17. 17. L’architecture de Cassandra
  18. 18. Organisation des noeuds en anneau Noeud Noeud Noeud Noeud Noeud Replica Noeud Partition 1 Replica Replica Partition 2 Partition N
  19. 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. 20. Interactions Client / Serveur Client Noeud Noeud Client Noeud Noeud Client Noeud Client Noeud
  21. 21. Interactions Client / Serveur Client Client ? Noeud Noeud Noeud replica Noeud replica Client Noeud Noeud Client replica
  22. 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. 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. 24. Stockage sur disque
  25. 25. Architecture append-only de Cassandra MemTable RAM Disque Log SSTable
  26. 26. Architecture append-only de Cassandra MemTable RAM Disque Log SSTable
  27. 27. Que devient ACID ?
  28. 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. 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. 30. Le théorème CAPCassandra BDD relationnelles Consistance Disponibilité Tolérance aux défaillances Impossible
  31. 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. 32. Consistance selon nombre de réponses attendues Temps A A A A 4 réplicas
  33. 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. 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. 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. 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. 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. 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. 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. 40. Modèle de données
  41. 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. 42. Super-colonnes Les valeurs d’une super-colonne sont des collections de colonnes
  43. 43. Un modèle de données peu intuitif...
  44. 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. 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. 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. 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. 48. Un cas d’usage
  49. 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. 50. Cassandra en production
  51. 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. 52. DataStax OpsCenter
  53. 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. 54. Questions / Réponses ? @mfiguiere blog.xebia.fr

×