Eseguire Apache ZooKeeper (questo vale anche per il sistema in stile PAXOS) con 2 membri - il che non è raccomandato - non ha senso, perché se
- membro1 scende
- membro2 scende
- c'è una partizione di rete tra member1 e member2
, ZooKeeper dichiarerà che l'orario di lavoro è finito, in quanto non esiste un singolo sottogruppo con una netta maggioranza di membri (in questo caso: > 1). Quindi eseguire ZooKeeper su 2 membri lo rende meno disponibile rispetto all'esecuzione di un singolo membro.
Perché il vincolo della maggioranza non può essere allentato in modo tale che quando c'è un sub cluster con esattamente il 50% dei membri, viene considerato il sottogruppo attivo se contiene il membro più anziano ? (Più vecchio appena prima della partizione, cioè quando il cluster era membro completo) Chi è il primogenito è l'informazione di cui ZooKeeper tiene traccia, quindi l'implementazione sembra facile.
In questo modo, non ci imbattiamo nel temuto scenario del cervello diviso e il cluster ZooKeeper potrebbe rimanere in alto in 2 dei 3 casi precedenti, migliorando la disponibilità, specialmente quando si eseguono solo 2 membri.
Qualcosa contro questo?