Les coulisses techniques de Twitter Manhattan, la base de données de nouvelle génération de Twitter

Twitter est connu pour avoir démarré ses activités en faisant le choix de MySQL comme base de données principale. Un choix qui reste vrai, même si l'Américain travaille sur une base temps réel depuis plusieurs années maintenant : le projet Manhattan. On trouve donc MySQL, Manhattan, mais aussi PostgreSQL, Cassandra et Vertica à divers stades du système d'information de Twitter. MySQL reste la base la plus déployée dans cette architecture, avec des clusters qui dépassent le millier de nœuds. Twitter utilise les fonctions de réplication standards de MySQL pour ses applications "classiques", mais son propre framework pour gérer la haute disponibilité des données sur ses milliers d'instances MySQL. 

architecture de manhattan.
Architecture de Manhattan. © Twitter

L'Américain a reversé à la communauté certains de ses développements dans le cadre de l'initiative WebScaleSQL mais aussi via le projet Mysos. Il s'agit d'un équivalent de ce que réalise Apache Mesos dans la gestion de grands parcs de serveurs mais transposé aux instances MySQL. Mysos vise à automatiser la gestion des clusters MySQL pour ajouter et supprimer des nœuds, prendre en charge les pannes, automatiser le déploiement de nouvelles grappes de serveurs, etc. En outre, Twitter contribue actuellement au projet Apache Parquet qui est un format de stockage des données sous forme de colonnes. Un mode de stockage très performant disponible sous Hadoop grâce aux ingénieurs de Twitter.

Le futur de Twitter, c'est Manhattan

Si MySQL reste le principal outil de stockage des informations chez Twitter, le groupe travaille activement depuis plusieurs années sur la prochaine génération de base de données distribuée qui viendra remplacer MySQL. Le projet Manhattan vise à créer une base très fortement distribuée, capable de répondre à plusieurs millions de requêtes par seconde et présentant un très faible temps de latence. Cette base de données se structure en trois couches.

Manhattan embarque la technologie Hadoop

Au niveau le plus bas, le noyau qui supporte plusieurs moteurs de stockage de natures différentes, puis une couche de services de stockage exposés aux applications, et enfin des interfaces. Twitter a d'ores et déjà développé trois moteurs de stockage pour Manhattan : seadb pour les fichiers en mode lecture seule, sstable pour les charges mixtes lectures/écriture, et btree pour les applications orientées lecture. Parmi les services offerts par Manhattan à ses utilisateurs, on relève une fonction Hadoop d'import des données en très gros volumes. 

Manhattan est en production depuis plus de deux ans chez Twitter. Mais il reste difficile de savoir quelle part des services de Twitter est aujourd'hui supportée par cette base de données et quelle est celle qui repose encore sur MySQL. Les ingénieurs de Twitter considèrent que beaucoup de chemin reste devant la masse de fonctionnalités réclamées par les différents services de la société avant que Manhattan corresponde pleinement aux attentes.

Twitter / Base de données