mundo - que es zookeeper kafka
Confiabilidad de ZooKeeper-tres contra cinco nodos (2)
Básicamente, Zookeeper funcionará bien siempre que los Active Zookeepers estén en MAJORITY en comparación con los Zookeepers fallidos. Además, en el caso de un tamaño de quórum uniforme, es decir, 2,4,6, etc. Falló = Activo, por lo que no se recomienda.
Tanto el 3 como el 4 manejarán solo 1 fallas, entonces ¿por qué querríamos usar 4 Zookeepers en lugar de 3?
De las preguntas frecuentes de ZooKeeper :
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.
Con un conjunto de 3 servidores, si un servidor se saca de rotación y un servidor tiene una interrupción inesperada, entonces aún queda un servidor que no debe garantizar la interrupción del servicio. ¿Entonces por qué la necesidad de 5 servidores? ¿O es más que solo la interrupción del servicio que se está considerando?
Actualizar:
Gracias a @sbridges por señalar que tiene que ver con mantener un quórum. Y la forma en que ZK define un quórum es ceil(N/2)
donde N
es el número original en el conjunto (y no solo el conjunto disponible actualmente).
Ahora, una búsqueda en Google para el quórum ZK encuentra esto en el capítulo del libro de HBase en ZK :
En ZooKeeper, se admite un número par de pares, pero normalmente no se usa porque un conjunto de tamaño uniforme requiere, proporcionalmente, más pares para formar un quórum que lo que requiere un conjunto de tamaño impar. Por ejemplo, un conjunto con 4 pares requiere 3 para formar un quórum, mientras que un conjunto con 5 también requiere 3 para formar un quórum. Por lo tanto, un conjunto de 5 permite a dos pares fallar y aún mantener el quórum, y por lo tanto es más tolerante a las fallas que el conjunto de 4, lo que permite solo un par hacia abajo.
Y esta paráfrasis de Wikipedia en el blog Edward J. Yoon:
En general, esta es la mayoría de las personas que se espera que estén allí, aunque muchos cuerpos pueden tener un quórum más alto o más bajo.
Zookeeper requiere que tengas un quórum de servidores arriba, donde el quórum es ceil(N/2)
. Para un conjunto de 3 servidores, eso significa que 2 servidores deben estar activos en cualquier momento, para un conjunto de 5 servidores, 3 servidores deben estar activos en cualquier momento.