09 octobre 2006

Réplication entre centraux

Rappel d'une vieille idée (un peu à la base du truc, hein) : ça serait bien si n'importe qui pouvait installer un moteur « Les Fûts », que ce soit sur un gros serveur avec QoS, sur un LAN coupé du net, voire sur un portable, et que ces moteurs répliquent leurs données entre eux, à la manière de NNTP. J'ai bien dit « à la manière » ;-) On aurait des protocoles standard pour les échanges, et le b*rdel fonctionnerait aussi bien comme NNTP que comme un SCM... Le rêve.

À ce que j'ai compris, XWiki a aussi une vision qui parle de réplication, avec XWiki Concerto, pour lequel ils viennent d'obtenir une aide de l'ANR (Agence Nationale de la Recherche).

Pour les Fûts, l'idée est de considérer que les données, versionnées, faut-il une nouvelle fois le rappeler, sont des résultats de traitements, et que les traitements sont ce que font les centraux quand ils exécutent les commandes postées par les caches applicatifs.

Le central assure :
  • l'absence de conflits entre les traitements (puisque c'est lui qui les ordonnance)
  • la cohérence des données
  • l'indexation des données
  • le versioning des données
Il dispose :
  • d'un référentiel temporel
  • d'un référentiel des versions de données (« révisions »)
Il peut être découplé de tout espace de stockage. Son boulot est surtout d'assurer la gestion des informations sur les données, pas forcément des données elles-mêmes. En revanche, il archive pas mal de trucs, en particulier toutes les commandes.

Quand deux centraux s'échangent des informations, on ne fait transiter que les commandes (« tout est message », rappelez-vous), pas les données. Ça n'aurait aucun sens de répliquer les données, car on est incapable d'assurer la cohérence d'une donnée isolée.

Les données sont en quelque sorte des validations par les centraux des commandes. Les commandes sont donc estampillées « non validées, locales à tel cache applicatif », ou « validées, provenant de tel central ». Les données sont estampillées « non validées, locales à tel cache applicatif », ou « validées, provenant du central auquel est rattaché le cache applicatif »

Même si elle ne concerne que les commandes, la réplication entre centraux doit s'appuyer sur des identifiants « universels », qui permettront de référencer dans tous les centraux les mêmes objets :
  • identifiants d'articles (c'est le champ Message-ID dans NNTP)
  • identifiants d'utilisateurs (c'est la base visible de la base du projet !)
  • dates
  • URLs, e-mails, adresses IP...
  • types d'actions élémentaires
  • autres identifiants, externes (exemple : ISBN...)

Aucun commentaire: