Niezawodność ZooKeeper - trzy w porównaniu z pięcioma węzłami
Reliability:
A single ZooKeeper server (standalone) is essentially a coordinator with
no reliability (a single serving node failure brings down the ZK service).
A 3 server ensemble (you need to jump to 3 and not 2 because ZK works
based on simple majority voting) allows for a single server to fail and
the service will still be available.
So if you want reliability go with at least 3. We typically recommend
having 5 servers in "online" production serving environments. This allows
you to take 1 server out of service (say planned maintenance) and still
be able to sustain an unexpected outage of one of the remaining servers
w/o interruption of the service.
W przypadku zestawu 3-serwerowego, jeśli jeden serwer zostanie wyłączony z obrotu, a jeden serwer ma nieoczekiwane przestoje, to nadal pozostanie jeden serwer, który nie powinien powodować przerwy w działaniu usługi. Dlaczego więc potrzeba 5 serwerów? A może chodzi o coś więcej niż tylko rozważanie przerwania usługi?
Aktualizacja:
Dzięki @sbridges za wskazanie, że ma to związek z utrzymaniem kworum. A sposób, w jaki ZK definiuje kworumceil(N/2)
gdzieN
jestoryginalny numer w zespole (a nie tylko aktualnie dostępny zestaw).
Teraz wyszukiwanie google w kworum ZK znajduje to w książce HBaserozdział o ZK:
W ZooKeeper obsługiwana jest parzysta liczba elementów równorzędnych, ale zwykle nie jest używana, ponieważ zespół o równej wielkości wymaga proporcjonalnie większej liczby elementów równorzędnych, aby utworzyć kworum, niż wymaga tego zespół o dziwnych rozmiarach. Na przykład zespół z 4 rówieśnikami wymaga 3, aby utworzyć kworum, podczas gdy zespół z 5 wymaga również 3, aby utworzyć kworum. Tak więc zespół 5 pozwala 2 rówieśnikom na porażkę i nadal zachowuje kworum, a zatem jest bardziej odporny na błędy niż zespół 4, co pozwala tylko 1 jednemu peerowi.
I to parafrazowanie Wikipedii w dziele Edwarda J. Yoonblog:
Zazwyczaj jest to większość ludzi, którzy powinni tam być, chociaż wiele ciał może mieć niższe lub wyższe kworum.