Neopod: une base de données objet distribuée

1 036 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 036
Sur SlideShare
0
Issues des intégrations
0
Intégrations
88
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Neopod: une base de données objet distribuée

  1. 1. Neopod: une base de données objet distribuée Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems 11 juillet 2011 Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  2. 2. Plan Commit 1 Introduction Ajout d’un nœud ZODB « Mort » d’un nœud Implémentations 4 Objectis existantes Fonctionnement 2 Architecture Générale d’Objectis Schéma Général Les limitations Réplication 5 Neoppod sur Objectis 3 Opérations internes Objectifs visés Connexion du client La solution Lecture 6 Conclusion Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  3. 3. Introduction Introduction Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  4. 4. ZODB La ZODB (Zope Object Database) Écrite en Python Créée pour Zope Base de données Objet Respect des contraintes d’ACIDité Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  5. 5. Implémentations I FS Storage Un fichier en append-only Le process Python lit et écrit directement Pas de concurrence possible Mauvaise scalabilité Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  6. 6. Implémentations II ZEO Architecture client-server Le server lit et écrit dans un fichier en append-only Le server gère la concurrence entre les clients Cache sur les clients Le server gère les invalidations de cache Mauvaise scalabilité Aucune tolérance à la panne Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  7. 7. Implémentations III ZEO-Raid Réplication de type RAID-1 Scalabilité limitée : chaque nœud possède l’intégralité de la base RelStorage Stockage des objets sous forme de pickles dans une base SQL PosgreSQL et MySQL Réplication possible au niveau SQL Scalabilité limitée : chaque nœud possède l’intégralité de la base Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  8. 8. NEO Historique 2005 : Démarrage du projet par Nexedi (ERP5) 2009 : Création du consortium System@tic fev. 2010 : Release Déploiements (ERP5, Plone3, Plone4) Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  9. 9. System@tic Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  10. 10. Architecture Générale Architecture Générale Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  11. 11. Schéma général Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  12. 12. Réplication Nœud maître Réplication simple Un primaire et plusieurs secondaires En cas de panne, élection d’un nouveau primaire Nœud de stockage Choix du niveau de réplication Le nœud maître décide des données possédées par chaque nœud de stockage Le nœud maître maintient une table de partition qu’il partage avec les nœuds de stockage En cas de panne : le maître redistribue les données Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  13. 13. Opérations internes Opérations internes Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  14. 14. Connexion Connexion du client Handshake Le client se connecte sur le nœud maître Le nœud maître enregistre le client Le nœud maître envoie au client la table de partition actuelle Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  15. 15. Lecture Lecture Le client vérifie qu’il n’a pas l’objet en cache Le client trouve un nœud de Stockage qui contient la donnée Le client interroge directement le nœud de Stockage Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  16. 16. Commit I Commit Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  17. 17. Ajout d’un nœud de stockage Ajout d’un nœud Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  18. 18. « Mort » d’un nœud de stockage « Mort » d’un nœud Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  19. 19. Objectis Objectis Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  20. 20. Présentation Objectis c’est... Une plateforme d’hébergement gratuit en Zope/Plone Actuellement, propose des sites en Plone 4 Des instances contiennent des sites en Plone 1 à 3 et en Zope pur Nécessite un code de validation, via myplone Objectis c’est aussi... Une communauté avec un forum et un tracker de support Un site traduit en 8 langues 18 257 sites au total Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  21. 21. L’architecture Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  22. 22. Création d’un site Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  23. 23. Gestion des instances Les slots et les instances Chaque instance Zope possède un type (Plone 3, Plone 4, ...) Sur chaque instance Zope, on défini des slots (400 à 600) On regroupe les instances similaires sur une VM Utilisation des slots Les sites sont créés sur un Zope du bon type ayant des slots libres Supprimer un site libère le slot Quand il n’y a plus de slots, on ne peut plus créer de compte Il faut alors manuellement créer une autre instance Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  24. 24. Objectis fonctionne mais... Sur la gestion des slots Créer une instance Objectis est assez délicat À cause du GIL, un Zope ne peut utiliser plus d’un cœur La répartition de charge entre les instances est irrégulière Une fois une instance pleine, on ne peut plus grand chose pour elle Autres problèmes Pas de tolérance de panne Instances vulnérables au DoS Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  25. 25. Neoppod sur Objectis Neoppod sur Objectis Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  26. 26. Les objectifs visés Meilleur tolérance de panne Une instance plantée ne doit pas couper ses sites À terme, on veut même pouvoir éteindre une VM sans couper le service Meilleur gestion des instances Éviter le problème de l’instance ayant tous les gros sites Éviter de devoir configurer sans cesse des nouvelles instances Pouvoir ajouter des ressources supplémentaires simplement Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  27. 27. La solution magique Neoppod On utilise Neoppod pour les données On met un cluster Neoppod par version de Plone Effets On a de la tolérance de panne entre les instances On peut ajouter des instances Zope et des noeuds de stockage, à la volée Les ressources sont totalement mutualisées Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  28. 28. L’architecture Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  29. 29. L’architecture complète Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  30. 30. Conclusion Conclusion Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  31. 31. Conclusion L’état actuel Plone 3.3 et 4.0 sous Neoppod Tout fonctionne tranquillement Pour l’instant, une VM par version de Plone Le futur Mise en place de tolérance de panne Répartition de charge entre les VMs Pour ça, il nous faut plus de monde ! Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée
  32. 32. En attendant Un cadeau Un code offert pour 50 sites : rmll2011-neo La page de pub Pilot Systems, société de services en logiciels libres : http://www.pilotsystems.net Slides en licence CC-By-Sa http://contributions.pilotsystems.net/ Des questions ? Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems Neopod: une base de données objet distribuée

×