Algoritme voor consensus van het vlot

Het consensusalgoritme van Raft is een computeralgoritme dat een toestandsmachine over een cluster van computersystemen verdeelt. Het zorgt ervoor dat elk knooppunt in het cluster het eens is over dezelfde reeks toestandsovergangen, zelfs bij storingen. Het algoritme is ontworpen als een gemakkelijker te begrijpen alternatief voor de Paxos-protocollen voor het oplossen van storingen. Het heeft open source-referentie-implementaties zoals C ++, Java en Scala.

Wat is consensus

Consensus is het proces waarbij meerdere servers het eens worden over een specifieke waarde op basis van de stemmen van elke server. Als er eenmaal een beslissing is genomen over een waarde, is de beslissing definitief. De waarde waartoe besloten is, moet door een server worden ingediend, wat betekent dat het consensusalgoritme zelf geen waarde kan bedenken. Simpel gezegd, de waarde kan 0 of 1 zijn, waardoor alle servers kunnen beslissen of ze iets willen doen of niet. Consensus wordt gebruikt in de context van gerepliceerde toestandsmachines, een wiskundig rekenmodel.

Hoe Raft werkt

Vlotfuncties door een leider in het cluster te kiezen. Een server in een cluster is een leider of een volger, en kan mogelijk een kandidaat zijn als de leider niet beschikbaar is. De leider beheert de replicatie van het logboek naar andere servers en accepteert verzoeken van klanten. Een leider leidt tot het faalt of de verbinding verbreekt, in welk geval een nieuwe leider wordt gekozen uit de kandidaten. Gegevens stromen in één richting: van de leider naar andere servers.

Raft ontleedt consensus in drie onafhankelijke subproblemen:

  • Leidersverkiezing: Als de huidige leider faalt, moet er een nieuwe leider worden gekozen.
  • Logboekreplicatie: Door middel van replicatie moet de leider zijn eigen server gesynchroniseerd houden met de logboeken van alle andere servers.
  • Veiligheid: Geen enkele andere server kan een logboekvermelding bij een bepaalde index aanvragen als een server al een logboekvermelding voor die index heeft vastgelegd. Dit is om ervoor te zorgen dat logboeken consistent zijn en dat machinaal door de staat dezelfde set opdrachten uitvoert.

Raft kan worden gebruikt voor replicatie in gedistribueerde systemen. Het bouwt sterke en consistente systemen zonder concessies te doen aan prestaties of nauwkeurigheid. Gedistribueerde databases zoals TiDB en YugabyteDB gebruiken Raft voor leidersverkiezingen en gegevensreplicatie voor NewSQL-databasebeheer.