Utilité d'une horloge dans l'approche logoot ?

Les joies de distribuer des données !

Le problème exposé dans ce sujet a été résolu.

Salut à tous,

Bon, je précise dès le début, j’ai posté cette question sur SO avant de la poser ici, mais le pic (quand la question est visible dans la liste des questions posées récemment) est passé et ma question va sombrer dans les méandres de SO. C’est une question assez spécifique donc ça ne m’étonne pas trop. J’espère trouver quelqu’un qui apprécie tout comme moi la problématique de distribuer des données sur différentes machines. Ça y est, le sujet arrive :

Je suis en train de planifier un logiciel d’édition collective en P2P et j’avais prévu d’utiliser le principe WOOT. C’est à dire une méthode similaire à de l’OT sauf que les opérations sont situés par rapport à ce qu’il y a avant et après. Le problème aurait été que j’aurai eu un très grand nombre de tombes (vu que mes atomes sont des caractères…) donc j’ai continué à chercher et j’ai trouvé ce PDF sur l’approche Logoot. C’est parfait, plus de tombes !

Donc, tout est clair pour moi, sauf un truc : pourquoi est-ce qu’on doit avoir une horloge pour chaque site, qui incrémente à chaque nouvelle opération ? J’ai lu le document, ils la décrivent mais ils ne parlent pas de l’utiliser. Est-ce c’est juste par habitude, parce que WOOT/autre solution basé sur les tombstones nécessite cette vector clock ?

Est-ce qu’il y a une situation qui nécessite la valeur d’horloge pour être résolu sans conflit ?

Dans ma question SO, je me demandais si ça ne servait pas à permettre d’avoir une longue liste d’atomes qui proviennent du même site en utilisant une seul position (donc en utilisant l’horloge pour classer les atomes qui ont la même position et qui viennent du même site). Sauf que, en y pensant à nouveau, j’ai réalisé que c’était stupide puisqu’on ne pourrait plus placer d’atomes entre ces atomes.

En espérant que je ne suis pas le seul timbré sur ce site à aimer ce genre de problématique, je vous remercie de votre lecture. :)

Edit : fun fact, ma question SO qui date de 2h apparaît dans le top 3 des réponses pour la recherche Google "logoot clock". Ça a pas l’air d’être un sujet très discuté sur internet.

Réponse générale sur les systèmes distribués, les horloges et la causalité

Un système distribué (composés de plusieurs morceaux interagissant) c’est complexe car plein de problèmes nouveaux arrivent qu’on avait pas avec un système centralisé.

Une propriété essentielle qu’on souhaite garder, c’est la causalité (les conséquences n’arrivent pas avant les causes). Dans un exemple (non causal), A écrit un truc, B corrige une faute de frappe et C voit la correction avant que le message de A ne lui soit parvenu => ca coince. Il faut ordonner les messages.

Pour ce faire, on va utiliser un système d’horloge. Il n’y pas une seule horloge (sinon tu es dans un système centralisé) mais au contraire chaque composant a sa propre horloge. Il existe plusieurs types d’horloge comme les horloges de Lamport ou les horloges vectorielles. Avec ca, on va pouvoir construire des algorithmes (distribués) pour garantir la causalité des messages.

De manière générale, tu peux regarder les 3 premiers PDF de ce cours sur les systèmes répartis + celui sur le P2P.

Edit: en survolant le document disponible sur HAL, les horloges sont bien utilisées dans la section 4.

+0 -0

Merci pour ces précisions et ces liens. :)

En fait, ça y ai, j’ai compris leur utilité. Je pensais que la position était suffisante pour qu’un line id soit unique, mais en fait, non. Parce que si on n’a pas l’horloge, on ne peut pas savoir si un delete est un dupliqua d’un delete déjà appliqué ou si on n’a juste pas encore reçu l’insert correspondant.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte