|
|||||||
Archives
Articles récents
Commentaires récents
|
« Un retour d’expérience gagnant : portage d’applications Web sur Windows Azure DynamoDB : le décryptage de la nouvelle solution NoSQL de AWS »
Système de stockage orienté objet en anneaux Frédéric Faure, 14 février 2012
Des solutions de stockage suivant les même idées directrices que celles que l’on peut trouver dans les grands Cloud publics sont apparues depuis déjà quelques temps maintenant, et je me suis intéressé particulièrement à une solution de stockage orienté objet basée sur un système en anneaux. Cette solution de Scality nommée Ring Organic Storage, propose un système de stockage peu coûteux avec des fonctionnalités similaires à celles que l’on peut trouver sur S3. Il permet d’associer à une URL un objet stocké sous forme de binaire. On note que ce principe d’anneau est le même que l’on trouve sur des bases comme Cassandra, sauf que dans notre cas il s’agit de stockage orienté objet. Je me suis donc intéressé au fonctionnement de cette solution déjà déployée dans des productions chez des hébergeurs et des fournisseurs de service. Cible Architecture
Cette architecture privilégie la disponibilité et la durabilité des données via un surcoût en disques durs puisque le principe est de redonder la donnée entre plusieurs noeuds de stockage écrivant sur des sets de disques différents. Ce choix est basé sur le fait que le disque dur n’est pas un composant très coûteux dans la mise en place d’une infrastructure. Les noeuds fonctionnent sur un système de peer-to-peer, il n’y a donc pas de SPOF (Single Point Of Failure) ou d’engorgement et un load-balancing naturel s’effectue. A noter que la cohérence de ce système est configurable de manière à ce que l’on puisse atteindre une cohérence forte ou une cohérence à terme : à vous de définir votre niveau de cohérence ou quorum. Par exemple, si W+R > N, alors le jeu d’écritures et le jeu de lectures se recouvrent toujours et l’on peut garantir une cohérence forte, avec :
La gestion des clés En plus, les voisins directs d’un noeud dans l’anneau peuvent reprendre la responsabilité des données de leur voisin si il « venait à disparaître » de l’anneau afin de proxyfier les requêtes vers les données redondées (via l’algorithme). Le but est de pouvoir accéder aux données que l’on cherche à partir de n’importe quel point d’entrée (c’est-à-dire à partir de n’importe quel noeud de l’anneau) en un minimum de sauts. Par exemple pour ce système, le nombre de sauts annoncé est de :
Pour accéder au noeud contenant la donnée cherchée, on y arrivera donc en moins de log(n) sauts (avec n le nombre de noeuds). A noter que pour de meilleurs temps d’accès (diminution du nombre de sauts), la topologie de l’anneau est cachée au niveau des connecteurs (cf. accès aux données) au fur et à mesure de sa découverte. A noter que la répartition des clés s’effectue via un « Consistent Hash » : cela permet lors de l’ajout ou de la suppression d’un noeud de n’affecter que « (1/n) x nb total clés » clés (avec n… toujours le nombre de noeuds ;ob). On peut aussi utiliser les clés pour identifier le type de données stockées (via un des éléments composant la clé) et les affecter vers des disques (harware) sous-jacents particuliers (SATA, SAS, SSD, …) en fonction des ressources que l’on souhaite affecter à ce type de données. Cela offre des possibilités intéressantes. A noter également qu’en fonction de la taille des fichiers stockés, il est prévu des optimisations autant pour la manipulation de plein de petits fichiers (écriture en série dans des fichiers/blocs plus importants) que pour la manipulation de fichiers de grande taille (découpage en blocs et parallélisation des lectures/écritures). Il faut penser que pour ce genre d’utilisation, il faudra réfléchir également au niveau des composants hardware : par exemple pour des gros fichiers, il faudra envisager une bande passante suffisante pour permettre un bon débit, de même que pour beaucoup de petits fichiers, il faudra optimiser les IOs et prévoir un ratio disques/serveurs convenable et utiliser des disques adaptés (SAS ou SSD). L’accès aux données
En plus du type de connecteur, il est intéressant de voir les fonctionnalités d’authentification qui sont implémentées (pouvant interroger un système local en XML/RPC), les systèmes d’ACLs et les mécanismes de facturation. Tout à fait le genre d’éléments que l’on retrouve dans les Cloud IaaS type AWS.
Conclusion Il est possible de sélectionner le hardware sous-jacent qui servira à stocker un type d’objets en fonction d’éléments composant sa clé de stockage pour optimiser l’accès à ces données. De plus, en fonction de ce que l’on recherche avec ce système (bande passante, IOs ou stockage pur), il faut penser à privilégier les éléments hardware nécessaires. J’espère que ce sujet vous aura intéressé et n’hésitez pas à nous contacter pour plus d’informations sur ce produit. Frédéric FAURE @Twitter @Ysance 14 février 2012 | Tags: Cloud Computing, Cloud Hybride, Cloud Privé, IaaS, Organic Ring Storage, Scality | Categories: Architecture, Cloud Computing, Infrastructure, Scalability, Sharding / Partitionnement, Systèmes Distribués |
Laisser un commentaire
Répondre
Annuler
Vous pouvez utiliser ces balises HTML
|
Decrypt, Le ForumDecrypt, Le Forum est ouvert ! Venez échanger avec nous et avec la communauté.
Ex |