¿Cómo poner el archivo de configuración de Spring en zookeeper?
Esto describe aproximadamente las cosas principales que Zookeeper puede hacer: gestión de configuración, servicio de nombres, sincronización distribuida y gestión de clústeres. Entonces, ¿qué son exactamente estos servicios? ¿Por qué necesitamos un servicio así? ¿Por qué utilizamos Zookeeper para implementarlo? ¿Cuáles son los beneficios de utilizar Zookeeper? A continuación presentaré cuáles son y qué sistemas de código abierto se utilizan.
Gestión de estructuras
En nuestra aplicación, además del código, también hay algunas configuraciones. Por ejemplo, conexión a base de datos. Normalmente, utilizamos archivos de configuración para introducir estos archivos de configuración en el código. Sin embargo, cuando tenemos solo una configuración y un servidor, y no lo modificamos con frecuencia, es una buena práctica usar archivos de configuración, pero si tenemos muchas configuraciones, muchos servidores necesitan esta configuración, y puede ser dinámica, utilizar archivos de configuración no es una buena idea. En este momento, a menudo es necesario encontrar una manera de gestionar las configuraciones de forma centralizada. Modificamos la configuración en este lugar centralizado y todos los interesados en esta configuración pueden obtener la modificación. Por ejemplo, podemos poner la configuración en la base de datos y luego todos los servicios que deben configurarse van a esta base de datos para leer la configuración. Sin embargo, dado que el funcionamiento normal de muchos servicios depende en gran medida de esta configuración, este servicio de configuración centralizada debe tener una alta confiabilidad. Generalmente, podemos usar clústeres para proporcionar este servicio de configuración, pero ¿cómo garantizar la coherencia de la configuración en el clúster y mejorar la confiabilidad mediante el uso de clústeres? En este punto, es necesario 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. Actualmente, muchos proyectos de código abierto utilizan Zookeeper para mantener las configuraciones. Por ejemplo, en HBase, el cliente solo necesita conectarse a Zookeeper para obtener la información de configuración necesaria del clúster de HBase antes de continuar con otras operaciones. Además, Zookeeper también se utiliza para mantener la información del corredor en la cola de mensajes de código abierto Kafka. 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 fácil de entender. Por ejemplo, para acceder a un sistema a través de la red, necesitamos saber la dirección IP de la otra parte, pero las direcciones IP son muy hostiles para las personas. En este momento, debe utilizar el nombre de dominio para acceder. Pero la computadora no puede ser otro nombre de dominio. ¿Qué hacemos si tenemos un mapeo de nombre de dominio a dirección IP en cada máquina, esto puede resolver algunos problemas, pero qué pasa si la IP correspondiente al nombre de dominio cambia? Entonces tenemos el sistema de nombres de dominio. Sólo necesitamos acceder a un punto conocido y nos dirá cuál es la IP correspondiente a este nombre de dominio. Habrá muchos problemas de este tipo en nuestras aplicaciones, especialmente cuando tengamos muchos servicios. Sería inconveniente guardar la dirección del servicio localmente, pero si solo necesita acceder a un punto de acceso conocido, proporcionar una entrada unificada aquí facilitará mucho el mantenimiento.
Bloqueo distribuido
De hecho, en el primer artículo, Zookeeper se presentó como un servicio de coordinación distribuida. De esta forma, podemos utilizar Zookeeper para coordinar actividades entre múltiples procesos distribuidos. Por ejemplo, en un entorno distribuido, para mejorar la confiabilidad, se implementa el mismo servicio en todos los servidores de nuestro clúster. Sin embargo, si cada servidor del clúster realiza una cosa, deberá coordinarse entre sí y la programación será muy complicada. Si solo tuviéramos un servicio en funcionamiento, tendríamos un único punto. Normalmente, otro enfoque consiste en utilizar bloqueos distribuidos. En un momento determinado, sólo se permite funcionar un servicio. Cuando este servicio falla, el bloqueo se libera y conmuta inmediatamente a otro servicio.
Muchos sistemas distribuidos hacen esto. Este diseño tiene un nombre mejor llamado elección de líder. Por ejemplo, Master de HBase adopta este mecanismo. Sin embargo, 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úster
En un clúster distribuido, algunos nodos suelen entrar y salir por diversos motivos, como fallos de hardware, fallos de software y problemas de red. Se unen nuevos nodos y los antiguos abandonan el clúster. En este momento, otras máquinas en el clúster deben sentir este cambio y luego tomar las decisiones correspondientes en función de este cambio. Por ejemplo, el nuestro es un sistema de almacenamiento distribuido y un nodo de control central es responsable de la asignación del almacenamiento. Cuando llega 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. Además, por ejemplo, en una arquitectura SOA distribuida, los servicios los proporciona un clúster. Cuando un consumidor accede a un servicio, se debe utilizar algún mecanismo para descubrir qué nodos pueden proporcionar actualmente el servicio (esto también se denomina descubrimiento de servicios. Por ejemplo, el marco SOA de código abierto de Alibaba, Dubbo, utiliza Zookeeper como mecanismo subyacente para el descubrimiento de servicios). También hay una cola Kafka de código abierto que utiliza Zookeeper para la gestión en línea y fuera de línea de Cosnumer.
PD
Este artículo enumera algunos servicios que Zookeeper puede proporcionar y brinda algunos ejemplos en sistemas de código abierto. Más adelante comenzaremos con la instalación y configuración de Zookeeper y presentaremos más a fondo cómo usar Zookeeper con ejemplos.
(Reimprimir)