32
Neopod: une base de données objet distribuée Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems 11 juillet 2011 Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

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

Gaël LE MIGNOT — Bruno DUPUIS

Pilot Systems

11 juillet 2011

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Plan

1 IntroductionZODBImplémentationsexistantes

2 Architecture GénéraleSchéma GénéralRéplication

3 Opérations internesConnexion du clientLecture

CommitAjout d’un nœud« Mort » d’un nœud

4 ObjectisFonctionnementd’ObjectisLes limitations

5 Neoppod sur ObjectisObjectifs visésLa solution

6 Conclusion

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Introduction

Introduction

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

ZODB

La ZODB (Zope Object Database)

Écrite en PythonCréée pour ZopeBase de données ObjetRespect des contraintes d’ACIDité

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Implémentations I

FS Storage

Un fichier en append-onlyLe process Python lit et écrit directementPas de concurrence possibleMauvaise scalabilité

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Implémentations II

ZEOArchitecture client-serverLe server lit et écrit dans un fichier en append-onlyLe server gère la concurrence entre les clientsCache sur les clientsLe server gère les invalidations de cacheMauvaise scalabilitéAucune tolérance à la panne

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Implémentations III

ZEO-RaidRéplication de type RAID-1Scalabilité limitée : chaque nœud possède l’intégralité dela base

RelStorage

Stockage des objets sous forme de pickles dans une baseSQLPosgreSQL et MySQLRéplication possible au niveau SQLScalabilité limitée : chaque nœud possède l’intégralité dela base

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

NEO

Historique2005 : Démarrage du projet par Nexedi (ERP5)2009 : Création du consortium System@ticfev. 2010 : ReleaseDéploiements (ERP5, Plone3, Plone4)

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

System@tic

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Architecture Générale

Architecture Générale

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Schéma général

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Réplication

Nœud maîtreRéplication simpleUn primaire et plusieurs secondairesEn cas de panne, élection d’un nouveau primaire

Nœud de stockage

Choix du niveau de réplicationLe nœud maître décide des données possédées parchaque nœud de stockageLe nœud maître maintient une table de partition qu’ilpartage avec les nœuds de stockageEn cas de panne : le maître redistribue les données

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Opérations internes

Opérations internes

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Connexion

Connexion du client

HandshakeLe client se connecte sur le nœud maîtreLe nœud maître enregistre le clientLe nœud maître envoie au client la table de partitionactuelle

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Lecture

LectureLe client vérifie qu’il n’a pas l’objet en cacheLe client trouve un nœud de Stockage qui contient ladonnéeLe client interroge directement le nœud de Stockage

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Commit I

Commit

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Ajout d’un nœud de stockage

Ajout d’un nœud

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

« Mort » d’un nœud de stockage

« Mort » d’un nœud

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Objectis

Objectis

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Présentation

Objectis c’est...Une plateforme d’hébergement gratuit en Zope/PloneActuellement, propose des sites en Plone 4Des instances contiennent des sites en Plone 1 à 3 et enZope purNécessite un code de validation, via myplone

Objectis c’est aussi...Une communauté avec un forum et un tracker de supportUn site traduit en 8 langues18 257 sites au total

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

L’architecture

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Création d’un site

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Gestion des instances

Les slots et les instancesChaque 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 slotsLes sites sont créés sur un Zope du bon type ayant desslots libresSupprimer un site libère le slotQuand il n’y a plus de slots, on ne peut plus créer decompteIl faut alors manuellement créer une autre instance

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

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œurLa répartition de charge entre les instances est irrégulièreUne fois une instance pleine, on ne peut plus grand chosepour elle

Autres problèmesPas de tolérance de panneInstances vulnérables au DoS

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Neoppod sur Objectis

Neoppod sur Objectis

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Les objectifs visés

Meilleur tolérance de panneUne instance plantée ne doit pas couper ses sitesÀ terme, on veut même pouvoir éteindre une VM sanscouper 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 nouvellesinstancesPouvoir ajouter des ressources supplémentairessimplement

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

La solution magique

NeoppodOn utilise Neoppod pour les donnéesOn met un cluster Neoppod par version de Plone

EffetsOn a de la tolérance de panne entre les instancesOn peut ajouter des instances Zope et des noeuds destockage, à la voléeLes ressources sont totalement mutualisées

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

L’architecture

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

L’architecture complète

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Conclusion

Conclusion

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

Conclusion

L’état actuelPlone 3.3 et 4.0 sous NeoppodTout fonctionne tranquillementPour l’instant, une VM par version de Plone

Le futurMise en place de tolérance de panneRépartition de charge entre les VMsPour ça, il nous faut plus de monde !

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée

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

En attendant

Un cadeauUn 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-Sahttp://contributions.pilotsystems.net/

Des questions ?

Gaël LE MIGNOT — Bruno DUPUIS Pilot Systems Neopod: une base de données objet distribuée