Tutaj (algoritmus)

(átirányítva innen: " Raft Algorithm ")

A Raft  egy algoritmus konszenzusos problémák megoldására megbízhatatlan számítástechnikai hálózatban [1] . A régebbi Paxos algoritmus hiányosságait figyelembe véve fejlesztették ki . A kulcsötletek kiválasztásánál az egyszerűbb és praktikusabb megoldásokat részesítették előnyben. Viszonylagos egyszerűsége ellenére azonban a Raft biztonságos és hatékony állapotgép -megvalósítást biztosít a fürt számítástechnikai rendszer tetején .

A Raft számos nyílt forráskódú implementációja létezik különböző programozási nyelveken [2] . A Raft és a Paxos közötti közös ellentét ellenére a Raft valójában a Paxos család protokollja, és számos megvalósítási részletet megoszt a MultiPaxos-szal, a ZAB-val ( Zookeeper Atomic Broadcast ) és másokkal.

Jellemzők

A fázisok egyértelmű szétválasztása: A Raft a klaszterkezelési feladatot több, lazán összekapcsolt részfeladatra bontja, amelyek közül a legfontosabbak a vezetőválasztás (szavazás) és a protokoll replikációja. Ezen feladatok mindegyike lehetővé teszi a részletesebb felosztást. Ez leegyszerűsíti az algoritmus megértését, és csökkenti a hibák kockázatát a végrehajtás során.

Explicit vezető: A Raft azt feltételezi, hogy mindig van explicit vezető a fürtben. Csak ez a vezető küld új rekordokat más fürtcsomópontoknak. Így a fennmaradó csomópontok követik a vezetőt, és nem lépnek kölcsönhatásba egymással (kivéve a szavazási fázist). Ha egy külső kliens egy normál csomóponton keresztül csatlakozik a fürthöz, akkor minden kérése átirányul a vezetőhöz, és csak onnan érkezik a csomópontokhoz.

A munkaprotokollok nem tartalmazhatnak hiányosságokat, vagyis a bejegyzések szigorúan egymás után kerülnek hozzáadásra. Ez bizonyos korlátozásokat támaszt a Paxoshoz képest, de lehetővé teszi az algoritmus nagymértékű egyszerűsítését. Ezenkívül az alkalmazott feladatok sajátosságai leggyakrabban nem teszik lehetővé a hiányosságokat tartalmazó protokollokkal való megfelelő munkát. Az a tény, hogy a Paxos lehetővé teszi az ilyen hiányosságok előfordulását, gyakran a Paxos hátránya, amelyet nagyon nehéz kezelni.

A fürt átméretezése: A Raft megkönnyíti a fürt újrakonfigurálását a munka leállítása nélkül: csomópontok hozzáadása vagy eltávolítása.

Telepítés

A Raft egy fürt tetejére épül, minden csomóponton egy állapotgép fut. A Raft megbízható jeltovábbítást biztosít az összes csomóponthoz, adott sorrendben. Így minden állapotgép átmenete ugyanazon állapotsorok mentén biztosított. Így minden csomópont garantáltan megegyezik a többi csomóponttal.

Fontos körülmény, hogy a Raft szigorúan számozza az összes bejegyzést a munkajegyzőkönyvben. A bejegyzéseknek szigorúan egymás után kell lenniük. Ezek a számok fontos szerepet játszanak az algoritmus működésében. Ezek szerint meghatározzák a csomópont állapotának relevanciájának mértékét. Vezetőválasztáskor mindig a legkorszerűbb csomópont lesz a vezető. Ugyanezeket a számokat használják a szavazási ülések számozására. Egy csomópont szavazási kérésenként csak egyszer szavazhat.

Leader's Choice

Ha egy normál csomópont hosszú ideig nem kap üzenetet a vezetőtől, akkor „jelölt” állapotba kerül, és szavazásra kéri a többi csomópontot. Más csomópontok arra a jelöltre szavaznak, akitől az első kérést kapták. Ha a jelölt üzenetet kap a vezetőtől, akkor visszavonja jelöltségét, és visszatér a normál állapotba. Ha a jelölt megkapja a szavazatok többségét, akkor ő lesz a vezető. Ha nem kapta meg a többséget (ez az az eset, amikor egyszerre több jelölt jelent meg a klaszterben, és megoszlottak a szavazatok), akkor a jelölt véletlenszerű ideig vár, és új szavazási eljárást kezdeményez.

A szavazás addig ismétlődik, amíg a vezetőt meg nem választják.

Protokoll replikáció

A vezető teljes mértékben felelős a megfelelő protokoll replikációért. Kérelmet küld a fürt összes csomópontjának egy új rekord hozzáadására, és csak akkor tekinti sikeresnek a tranzakciót, ha a csomópontok többsége megerősítette, hogy az adatok alkalmazásra kerültek, és az eredményt állandó adathordozóra mentette.

Rezsi

Amint az az algoritmus leírásából látható, a szavazás véletlenszerű elvárásokon alapul. Ahhoz, hogy az algoritmus hatékonyan működjön, a következő összefüggéseknek kell teljesülniük:

Az alkalmazott problémáknál ezek a feltételek leggyakrabban könnyen teljesíthetők. A csomópontok interakciós idejét általában ezredmásodpercben mérik. A szavazás ideje másodperc. A meghibásodások közötti normál működési idő hónap.

Jegyzetek

  1. Ongaro, Diego; Ousterhout, John In Search of an Understandable Consensus Algorithm (hozzáférhetetlen link) (2013). Letöltve: 2015. szeptember 2. Az eredetiből archiválva : 2014. szeptember 8.. 
  2. Raft Consensus Algorithm (2014). Letöltve: 2017. szeptember 29. Az eredetiből archiválva : 2017. szeptember 29.

Linkek