Red de conocimiento informático - Problemas con los teléfonos móviles - Zookeeper - ¿Qué puede hacer Zookeeper?

Zookeeper - ¿Qué puede hacer Zookeeper?

Hay esta frase en el sitio web oficial de Zookeeper: ZooKeeper es un servicio centralizado que se utiliza para mantener información de configuración, nombres y proporcionar distribución.

Esto describe aproximadamente las funciones de Zookeeper: gestión de configuración, nombres, proporcionar sincronización distribuida. y brindar servicios grupales. Entonces, ¿qué son exactamente estos servicios? ¿Por qué los necesitamos? ¿Por qué utilizamos Zookeeper para implementarlos? A continuación presentaré cada uno de estos servicios y los sistemas de código abierto que los utilizan.

Gestión de la configuración

En nuestra aplicación, además del código, existen varias configuraciones. Por ejemplo, conexión a base de datos, etc. Generalmente, utilizamos archivos de configuración para introducir estos archivos de configuración en el código. Pero si solo tenemos una configuración y un solo servidor, y no se modifica con frecuencia, usar archivos de configuración es una buena práctica, pero si tenemos muchas configuraciones, muchos servidores necesitan esta configuración y puede ser dinámica, entonces Usar archivos de configuración es una mala idea. En este momento, generalmente necesita encontrar una manera de administrar la configuración de manera centralizada. Cambie la configuración en este lugar centralizado y todos los interesados ​​en la configuración podrán obtener el contenido modificado. Por ejemplo, podemos colocar la configuración en la base de datos y luego todos los servicios que deben configurarse leerán la configuración de esta base de datos. Sin embargo, dado que muchos servicios dependen en gran medida de esta configuración para funcionar correctamente, necesitamos que este servicio de configuración centralizado sea altamente confiable. En circunstancias normales, podemos utilizar un clúster para proporcionar este servicio de configuración, pero solo con un clúster se puede mejorar la confiabilidad. ¿Cómo garantizar la coherencia de la configuración en el clúster? En este momento, debe utilizar un servicio que implemente el protocolo de coherencia. Zookeeper es uno de esos servicios, que utiliza el protocolo de coherencia Zab para proporcionar coherencia. Muchos proyectos de código abierto ahora usan Zookeeper para mantener la configuración. Por ejemplo, en HBase, el cliente se conecta a Zookeeper, obtiene la información de configuración necesaria del clúster de HBase y luego puede realizar más operaciones. En la cola de mensajes de código abierto Kafka, Zookeeper también se utiliza para mantener la información del corredor. Zookeeper también se usa ampliamente en el marco SOA de código abierto Dubbo de Alibaba para administrar algunas configuraciones e implementar la gobernanza del servicio.

Servicio de nombres

El servicio de nombres es muy fácil de entender. Por ejemplo, para acceder a un sistema a través de la red, debemos conocer la dirección IP de la otra parte, pero las direcciones IP son muy hostiles para las personas. En este caso, necesitamos usar un nombre de dominio para acceder. Pero las computadoras no pueden poner alias a nombres de dominio. ¿Qué hacer? Si tenemos un mapeo de nombre de dominio a dirección IP en cada máquina, esto puede resolver parte del problema, pero ¿qué pasa si la dirección IP correspondiente al nombre de dominio cambia? Entonces tenemos DNS. Simplemente vamos a un punto conocido y te dice cuál es la dirección IP del dominio. Habrá muchos problemas de este tipo en nuestras aplicaciones, especialmente cuando tenemos muchos servicios. Será muy inconveniente si guardamos la dirección del servicio localmente, pero si solo necesitamos acceder a un punto de acceso familiar, proporcione uno aquí. Las entradas unificadas lo harán. ser mucho más fácil de mantener.

Bloqueo distribuido

De hecho, en el primer artículo, Zookeeper se presentó como un servicio de coordinación distribuida. Esto nos permite utilizar Zookeeper para coordinar la actividad entre múltiples procesos distribuidos. Por ejemplo, en un entorno distribuido, para mejorar la confiabilidad, implementamos el mismo servicio en todos los servidores del clúster. Sin embargo, lo único que debe hacer cada servidor del clúster es coordinarse entre sí, lo que puede resultar muy complejo de programar. Y si solo dejamos que un servicio realice la operación, entonces habrá un único punto de falla. Otro enfoque es utilizar el bloqueo distribuido, que permite que solo un servicio realice el trabajo en un momento dado. Cuando ese servicio deja de funcionar, el bloqueo se libera y se entrega inmediatamente a otro servicio.

Muchos sistemas distribuidos adoptan este enfoque y un mejor nombre para este diseño es Elección de Líder. Por ejemplo, Master de HBase utiliza este mecanismo. Pero cabe señalar que los bloqueos distribuidos siguen siendo diferentes de los bloqueos en el mismo proceso, por lo que deben usarse con más precaución que los bloqueos en el mismo proceso.

Gestión de clústeres

En un clúster distribuido, los nodos suelen aparecer y desaparecer debido a diversos motivos (como fallos de hardware, fallos de software y problemas de red). Los nuevos nodos se unen y los antiguos salen del clúster. En este momento, otras máquinas del clúster deben sentir este cambio y tomar decisiones apropiadas en función de este cambio. Por ejemplo, somos un sistema de almacenamiento distribuido con un nodo de control central responsable de la asignación de almacenamiento. Cuando se agrega nuevo almacenamiento, debemos asignar nodos de almacenamiento según el estado actual del clúster. En este momento, necesitamos percibir dinámicamente el estado actual del clúster. Por ejemplo, en la arquitectura SOA distribuida, los servicios son proporcionados por clústeres. Cuando los consumidores acceden a un servicio, necesitan utilizar algún mecanismo para descubrir qué nodos pueden proporcionar actualmente el servicio (esto también se denomina descubrimiento de servicios, como Alibaba El código abierto). El marco SOA Dubbo utiliza Zookeeper como mecanismo subyacente para el descubrimiento de servicios). La cola Kafka de código abierto utiliza Zookeeper como gestión en línea y fuera de línea de Cosnumer.

Posdata

En este artículo, enumeramos algunos de los servicios que Zookeeper puede proporcionar y damos algunos ejemplos desde dentro del sistema de código abierto. Luego comenzaremos instalando y configurando Zookeeper y pasaremos a usar ejemplos a través de ejemplos.

(Reimpreso)