Facebook apporte son mcrouter à la communauté open source
Un routeur de protocole memcached

Le , par Stéphane le calme, Chroniqueur Actualités
Le coup d’envoi de l’édition 2014 de la conférence @scale a été donné ce lundi à San Francisco. Le numéro un des réseaux sociaux s’adresse aux ingénieurs qui conçoivent ou maintiennent des systèmes modulaires. Parmi les projets présentés figurent « mcrouter », un routeur de protocole memcached que Facebook a rendu open-source sous licence BSD (Berkeley Source Distribution). Pour rappel, memcached est un système d'usage général servant à gérer la mémoire cache distribuée. Il est souvent utilisé pour augmenter la vitesse de réponse des sites web créés à partir de bases de données. Il gère les données et les objets en RAM de façon à réduire le nombre de fois où une même donnée stockée dans un périphérique externe est lue.

« La plupart des services web débutent comme un ensemble de serveurs d’application front-end couplés aux bases de données utilisées pour gérer le stockage des données. A mesure qu’elles grandissent, les bases de données sont complétées par des caches pour stocker des pièces de données qui sont lues fréquemment afin d’améliorer la performance du site. Souvent, la capacité à accéder rapidement aux données cesse d’être considérée comme une optimisation pour devenir une exigence pour le site », expliquent Anton Likhtarov, Rajesh Nishtala et Ryan McElroy, des ingénieurs Facebook.


Les fonctionnalités apportées par mcrouter sont nombreuses et les ingénieurs de Facebook donnent plus d'explications sur les plus importantes. Nous pouvons citer :
  • le support du protocole standard open source memcached ASCII : tout client pouvant s’adresser au protocole memcached peut d’ores et déjà s’adresser au mcrouter sans qu’aucun changement ne soit nécessaire ;
  • routage par préfixe : mcrouteur peut effectuer un routage de clé en fonction des préfixes. Par exemple, vous pouvez envoyer toutes les clés commençant par « foo » dans un groupe, par le préfixe « bar » dans un autre et toutes les autres clés dans un groupe « wildcard » ;

  • la réplication des groupes : un groupe répliqué possède les mêmes données sur plusieurs hôtes. Les écritures sont répliquées sur tous les hôtes du groupe, tandis que les lectures sont acheminées vers une seule réplique choisie séparément pour chaque client. Cela pourrait se faire soit en raison de limitations de paquets par hôte où un groupe fragmenté ne serait pas capable de gérer la vitesse de lecture, soit pour une disponibilité accrue des données ;

  • support du multi-cluster : la gestion de la configuration pour les grandes configurations multi-cluster est facile. Une seule configuration peut être distribuée à tous les groupes et, en fonction des options de ligne de commande, mcrouter interprétera la configuration en fonction de son emplacement ;
  • Prise en charge IPv6 ;
  • prise en charge de SSL: mcrouter supporte les connexions SSL (entrantes ou sortantes), aussi longtemps que le client ou les hôtes de destination le soutiennent aussi. Il est également possible de configurer plusieurs mcrouters en série ;
  • l'architecture multi-thread: mcrouter peut tirer pleinement parti des systèmes multi-cœurs en démarrant un thread par cœur.



La plupart du code de mcrouter a été écrit en C++ avec quelques librairies écrites en C et du Ragel pour le protocole d’analyse. Le routeur utilise également les librairies open source de Facebook Folly et fbthrift.

télécharger les codes de mcrouter (GitHub)

Source : Facebook

Et vous ?

Qu'en pensez-vous ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Full stack web developer h/f
Multiposting - Ile de France - Paris (75000)
Développeur JAVA J2EE
HUMANLOG - Provence Alpes Côte d'Azur - Sophia Antipolis
Technicien(ne) helpdesk / micro-informatique
Talentéo - Ile de France - Paris

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil