Consul - Architecture

Le diagramme d'architecture pour le consul travaillant dans un centre de données peut être mieux décrit comme indiqué ci-dessous -

Comme nous pouvons le constater, il existe trois serveurs différents, qui sont gérés par Consul. L'architecture de travail fonctionne à l'aide de l'algorithme de radeau, qui nous aide à élire un leader parmi les trois serveurs différents. Ces serveurs sont ensuite étiquetés en fonction des balises telles queFollower et Leader. Comme son nom l'indique, l'adepte est responsable de suivre les décisions du leader. Ces trois serveurs sont en outre connectés les uns aux autres pour toute communication.

Chaque serveur interagit avec son propre client en utilisant le concept de RPC. La communication entre les clients est possible grâce àGossip Protocolcomme mentionné ci-dessous. La fonction Communication avec Internet peut être rendue disponible en utilisant TCP ou une méthode de communication à potins. Cette communication est en contact direct avec l'un des trois serveurs.

Algorithme de radeau

Raft est un algorithme de consensus pour gérer un journal répliqué. Il repose sur le principe deCAP Theorem, qui stipule qu'en présence d'une partition réseau, il faut choisir entre cohérence et disponibilité. Les trois principes fondamentaux du théorème CAP ne peuvent pas tous être atteints à un moment donné. Il faut au mieux faire un compromis pour deux d'entre eux.

UNE Raft Clustercontient plusieurs serveurs, généralement dans le nombre impair. Par exemple, si nous avons cinq serveurs, cela permettra au système de tolérer deux pannes. À tout moment, chaque serveur est dans l'un des trois états:Leader, Follower, ou Candidate. Dans une opération normale, il y a exactement un leader et tous les autres serveurs sont des suiveurs. Ces suiveurs sont dans un état passif, c'est-à-dire qu'ils n'émettent aucune demande d'eux-mêmes, mais répondent simplement aux demandes des dirigeants et du candidat.

L'illustration suivante décrit le modèle de flux de travail à l'aide duquel l'algorithme de radeau fonctionne -

Données de valeur clé

Depuis la version 0.7.1 du Consul, il y a eu une introduction de données de valeurs clés séparées. La commande KV est utilisée pour interagir avec le magasin de valeurs-clés du consul via la ligne de commande. Il expose les commandes de haut niveau pourInserting, Updating, Reading et Deletingdu magasin. Pour obtenir le magasin d'objets Clé / Valeur, nous appelons la méthode KV disponible pour le client consul -

kv := consul.KV()

le KVPair Structureest utilisé pour représenter une seule entrée clé / valeur. Nous pouvons voir la structure de Consul KV Pair dans le programme suivant.

type KVPair struct {
   Key string
   CreateIndex uint64
   ModifyIndex uint64
   LockIndex uint64
   Flags uint64
   Value []byte
   Session string
}

Ici, les différentes structures mentionnées dans le code ci-dessus peuvent être définies comme suit -

  • Key- C'est un nom d'URL slash. Par exemple - sites / 1 / domaine.

  • CreateIndex - Numéro d'index attribué lors de la création de la clé.

  • ModifyIndex - Numéro d'index attribué lors de la dernière mise à jour de la clé.

  • LockIndex - Numéro d'index créé lors de l'acquisition d'un nouveau verrou sur l'entrée clé / valeur

  • Flags - Il peut être utilisé par l'application pour définir la valeur personnalisée.

  • Value - Il s'agit d'un tableau d'octets de 512 Ko maximum.

  • Session - Il peut être défini après la création d'un objet de session.

Types de protocole

Il existe deux types de protocole dans Consul, appelés -

  • Protocole de consensus et
  • Protocole de potins

Comprenons-les maintenant en détail.

Protocole de consensus

Le protocole de consensus est utilisé par Consul pour assurer la cohérence telle que décrite par le théorème CAP. Ce protocole est basé sur l'algorithme de radeau. Lors de la mise en œuvre du protocole de consensus, l'algorithme de radeau est utilisé lorsque les nœuds de radeau sont toujours dans l'un des trois états: suiveur, candidat ou chef.

Protocole de potins

Le protocole de potins peut être utilisé pour gérer l'adhésion, envoyer et recevoir des messages à travers le cluster. En consul, l'utilisation du protocole de potins se produit de deux manières,WAN (Réseau sans fil) et LAN(Réseau local). Il existe trois bibliothèques connues, qui peuvent implémenter un algorithme Gossip pour découvrir des nœuds dans un réseau peer-to-peer -

  • teknek-gossip - Il fonctionne avec UDP et est écrit en Java.

  • gossip-python - Il utilise la pile TCP et il est également possible de partager des données via le réseau construit.

  • Smudge - Il est écrit en Go et utilise UDP pour échanger des informations d'état.

Les protocoles Gossip ont également été utilisés pour atteindre et maintenir une cohérence de base de données distribuée ou avec d'autres types de données dans des états cohérents, compter le nombre de nœuds dans un réseau de taille inconnue, diffuser les informations de manière robuste, organiser les nœuds, etc.

Appels de procédure à distance

Le RPC peut être désigné comme la forme abrégée des appels de procédure distante. C'est un protocole qu'un programme utilise pour demander un service à un autre programme. Ce protocole peut être localisé dans un autre ordinateur sur un réseau sans avoir à reconnaître les détails du réseau.

La vraie beauté de l'utilisation de RPC dans Consul est que cela nous aide à éviter les problèmes de latence que la plupart des outils de service de découverte avaient il y a quelque temps. Avant RPC, Consul n'avait queTCP et UDPconnexions basées, qui étaient bonnes avec la plupart des systèmes, mais pas dans le cas des systèmes distribués. RPC résout ces problèmes en réduisant la période de temps de transfert des informations de paquet d'un endroit à un autre. Dans ce domaine, GRPC by Google est un excellent outil pour anticiper au cas où l'on souhaiterait observer des benchmarks et comparer les performances.