2

Prenez le cas d'utilisation d'un jeu en réseau multijoueur. Instantanément, vous avez le problème de la réplication et de la réconciliation de l'état partagé sur le réseau.Existe-t-il une relation entre les CRDT et le protocole RAFT - ou sont-ils orthogonaux?

Il semble y avoir un multiple d'outils visant à les aspects de ce problème, et deux en particulier semblent se chevaucher:

  1. Conflict-free Replicated Data Types (CRDTs) - utilisé pour
  2. Le RAFT consensus algorithm - pour le choix d'une transaction leader dans un réseau distribué pour aider à atteindre un consensus.

Ma question est: Existe-t-il une relation entre les CRDT et le protocole RAFT - ou sont-ils orthogonaux?

Répondre

3

En termes de systèmes distribués, les deux sont assez différents et servent des cas d'utilisation très différents. Alors que les deux visent à obtenir une forte cohérence, les CRDT le font généralement sans sacrifier la disponibilité, et Raft le fait au détriment de la disponibilité. Face à une partition réseau, les CRDT resteront disponibles, mais un cluster Raft peut devenir partiellement ou totalement indisponible. Raft est un algorithme de consensus qui repose sur la majorité de la grappe communiquant les uns avec les autres pour progresser.

Il existe également des différences dans le type d'état pouvant être géré par chacun. Les CRDT fonctionnent pour représenter un ensemble limité et bien défini de types de données, tandis que Raft et d'autres algorithmes de consensus peuvent être utilisés pour modéliser un éventail beaucoup plus large de structures de données et d'algorithmes potentiels. Raft est généralement utilisé pour modéliser une machine d'état répliquée. Les commandes de la machine d'état sont journalisées et répliquées via l'algorithme Raft et appliquées à une machine d'état. Les machines d'état peuvent être utilisées pour modéliser des structures de données telles que des cartes et des ensembles ou pour contrôler la simultanéité en modélisant des éléments tels que des verrous, des élections de leaders et des sémaphores.

Vous devez également regarder votre système en termes d'évolutivité, et les radars et les CRTD diffèrent ici également. Raft est un système basé sur un leader. Raft élit un seul nœud comme leader, et tous les changements d'état d'une machine d'état répliquée Radt passent par ce seul leader et sont répliqués de façon synchrone sur la majorité des suiveurs avant d'être appliqués à la machine d'état. Alternativement, les CRDT sont significativement plus évolutifs car ils ne sont pas limités par un seul nœud.

En fin de compte, la différence entre Raft et CRDT est la différence entre la cohérence et la performance. Radeau est conçu pour créer une vue cohérente d'un système unique en mettant l'accent sur la sécurité sur la performance. Typiquement, les algorithmes de consensus comme Raft sont utilisés pour des choses comme la gestion de la configuration et la découverte de services. Les CRDT sont conçus pour être rapides et cohérents sans sacrifier la disponibilité. Généralement, les CRDT sont utilisés pour le stockage dans des systèmes plus dépendants de la disponibilité et moins critiques.