Riak et l'anti-entropie

le

Riak sort la RC1 de sa version 1.3. Grande nouveauté, l'anti entropie active. Le terme est accrocheur, on dirait un argument de marchand de lessive.

Entropie est un joli mot issu du vocabulaire de la thermodynamique pour décrire l'impossibilité de garder une pièce rangée, le bordel, quoi. Pour rappel, Riak a fait le pari d'une architecture décentralisé et réparti les données sur les différents nœuds du cluster, avec une certaine redondance. Les données sont distribuées dans des vnodes, et les nœuds sont responsables d'un certain nombre de vnode, pour être plus précis. Dans ses versions antérieures, Riak faisait de la réparation à la lecture. Je demande une clef, en exigeant la présence de 2 exemplaires valides, il n'en existe plus qu'une dans mon cluster, Riak répond "non". Il déclenche tout de suite une réparation, en recopiant la donnée pour respecter le quota de réplication. Je repose la question, tout de suite après, Riak répond "oui, voici la valeur". Le terme pour décrire ce comportement un peu fourbe est "eventually consistant". Attention, ce terrible faux amis se traduit par "finalement consistant ". L'effet peut être encore plus surprenant, j'écris une clef en ne demandant une copie synchro et 2 copies différées, puis demande la même clef avec 2 copies effectives, il risque de me répondre "non". Ah, ce n'est pas dans Postgres que l'on verrait ça!

Le pari de la réparation à la demande est un peu dangereux, une donnée peu usitée risque de disparaitre au fil du temps. Mais vérifier tout le temps que tout est cohérent est couteux. Imaginez un chef de rayon qui passe son temps à courir pour tout remettre en place. Le système anti entropie est plus fin que ça, il fait d'ailleurs partie des fondements de Cassandra. Les nœuds discutent entre eux, de temps en temps, et échangent des arbres de Merkel.

Pour simplifier, un arbre de Merkel est un système de hash et d'arborescence, où le hash du père est construit à partir du hash des fils, en cascade. Si le hash racine est le même, le contenu est le même, sinon, on compare la liste des hashs des fils du premier niveau, pour trouver la divergence, pour arriver jusqu'à la feuille différente. C'est plus rapide et plus condensé que de comparer des listes de feuilles. Les dates de modifications, "que c'est il passé depuis la dernière fois?" sont aussi utilisé pour réduire la discussion. Rappelons que Riak a pour vocation de stocker des To de donnée en triple exemplaire, avec un ticket d'entrée à 5 serveurs, pour avoir des nuits tranquilles.


Partager cet article :