Neopod: une base de données objet distribuée                    Gaël L E M IGNOT — Bruno D UPUIS                          ...
Plan                                                              Commit  1    Introduction                               ...
Introduction                              Introduction    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une bas...
ZODB La ZODB (Zope Object Database)     Écrite en Python     Créée pour Zope     Base de données Objet     Respect des con...
Implémentations I  FS Storage      Un fichier en append-only      Le process Python lit et écrit directement      Pas de co...
Implémentations II  ZEO     Architecture client-server      Le server lit et écrit dans un fichier en append-only      Le s...
Implémentations III  ZEO-Raid     Réplication de type RAID-1      Scalabilité limitée : chaque nœud possède l’intégralité ...
NEO Historique      2005 : Démarrage du projet par Nexedi (ERP5)      2009 : Création du consortium System@tic      fev. 2...
System@tic   Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base de données objet distribuée
Architecture Générale          Architecture Générale    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base ...
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
Réplication  Nœud maître     Réplication simple      Un primaire et plusieurs secondaires      En cas de panne, élection d...
Opérations internes              Opérations internes    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base ...
Connexion  Connexion du client  Handshake     Le client se connecte sur le nœud maître      Le nœud maître enregistre le c...
Lecture  Lecture      Le client vérifie qu’il n’a pas l’objet en cache       Le client trouve un nœud de Stockage qui conti...
Commit I  Commit    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base de données objet distribuée
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é...
« 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...
Objectis                                     Objectis    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base...
Présentation  Objectis c’est...       Une plateforme d’hébergement gratuit en Zope/Plone       Actuellement, propose des s...
L’architecture     Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base de données objet distribuée
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
Gestion des instances  Les slots et les instances      Chaque instance Zope possède un type (Plone 3, Plone 4,      ...)  ...
Objectis fonctionne mais...  Sur la gestion des slots       Créer une instance Objectis est assez délicat       À cause du...
Neoppod sur Objectis          Neoppod sur Objectis    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base de...
Les objectifs visés  Meilleur tolérance de panne      Une instance plantée ne doit pas couper ses sites      À terme, on v...
La solution magique  Neoppod      On utilise Neoppod pour les données      On met un cluster Neoppod par version de Plone ...
L’architecture     Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base de données objet distribuée
L’architecture complète    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base de données objet distribuée
Conclusion                               Conclusion    Gaël L E M IGNOT — Bruno D UPUIS Pilot Systems   Neopod: une base d...
Conclusion  L’état actuel       Plone 3.3 et 4.0 sous Neoppod      Tout fonctionne tranquillement      Pour l’instant, une...
En attendant  Un cadeau      Un code offert pour 50 sites : rmll2011-neo  La page de pub      Pilot Systems, société de se...
Prochain SlideShare
Chargement dans…5
×

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

1 132 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 132
Sur SlideShare
0
Issues des intégrations
0
Intégrations
87
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

×