dubbo y el cuidador del zoológico
Dubbo es un marco distribuido para la invocación remota de servicios, que puede realizar comunicación remota, configuración dinámica, enrutamiento de direcciones y otras funciones. Por ejemplo, en la demostración introductoria de los servicios de exposición, puede hacer que el protocolo de llamada remota utilice el protocolo dobbo (dubbo://x.x.x.x) u otros protocolos, configurar la dirección del clúster del cuidador del zoológico, implementar el equilibrio de carga suave y configurar el método de equilibrio, etc. En ausencia de un registro, también se puede lograr la comunicación entre el servidor y la persona que llama, lo que se denomina comunicación punto a punto "sin intermediarios". Sin embargo, si hay demasiadas configuraciones para el editor del servicio y la persona que llama, especialmente cuando se utiliza un clúster para proporcionar servicios, se expondrán muchos problemas: agregar nodos requiere modificar el archivo de configuración, no se puede detectar el tiempo de inactividad de la máquina del servidor, etc. Se puede integrar con el registro para gestionar dinámicamente la publicación y la invocación de servicios. Esto equivale a asignar las funciones de registro de servicios y publicación push al registro (guardián del zoológico).
Dubbo implementa la invocación de servicios a través del método RPC, es decir, el cliente y el servidor **** usan una interfaz (la interfaz se convierte en un paquete jar, y este paquete jar se introduce en el lado del cliente y del servidor ). La interfaz del cliente se escribe y se llama, la interfaz orientada al servidor se escribe e implementa y la comunicación de red en el medio la implementa el marco.
Echemos un vistazo a la declaración de configuración de Spring para el servicio público, el archivo proveedor.xml
Veamos al consumidor del servicio, el archivo consumer.xml
Esta es una llamada de servicio típica de punto a punto. Por supuesto, podemos configurar múltiples proveedores de servicios en consumer.xml para alta disponibilidad y configurar estrategias de equilibrio de carga para las respuestas.
Para configurar varias personas que llaman al servicio, agregue varias direcciones en el atributo URL de dubbo: etiqueta de referencia en consumer.xml, separadas por punto y coma; configure la estrategia de equilibrio de carga en consumer.xml dubbo. Simplemente agréguelo al atributo loadbalance de la etiqueta: referencia, y los valores disponibles son los siguientes cuatro tipos:
Entonces, ¿cuáles son los problemas con la arquitectura actual?
1. Cuando el proveedor de servicios agrega un nodo, es necesario modificar el archivo de configuración.
2. Cuando uno de los proveedores de servicios deja de funcionar, el consumidor del servicio no puede detectarlo a tiempo y también enviará solicitudes al servicio caído.
En este momento, es necesario introducir un registro. Dubbo actualmente admite cuatro tipos de registros (multidifusión, zookeeper, redis, simple). Se recomienda utilizar el registro Zookeeper. Agregar provide .xml y consumer.xml se puede modificar de la siguiente manera:
Si zookeeper es un clúster, separe varias direcciones con comas
Elimine la conexión directa configurada en consumer.xml
¿Cómo guardar la información de registro en zookeeper?
Después de iniciar el servicio anterior, observamos que hay un nodo dubbo adicional y otros nodos en el nodo raíz de zookeeper, como se muestra en la siguiente figura.
¿Por qué la dirección del servicio en el último nodo, ¿el último nodo A está marcado en verde? Debido a que el último nodo es un nodo temporal y los otros nodos son nodos persistentes, cuando el servicio deja de funcionar, este nodo desaparecerá automáticamente y ya no proporcionará servicios, y los consumidores de servicios ya no lo solicitarán. Si se implementan varios DemoServices, habrá varios nodos bajo el proveedor, uno de los cuales guardará la dirección de servicio de DemoService.
De hecho, un clúster de zookeeper puede ser utilizado por múltiples aplicaciones porque diferentes marcos construyen diferentes nodos encima de zookeeper sin afectarse entre sí. Por ejemplo, dubbo crea un nodo /dubbo y storm crea un nodo /storm.
Introducción a Zookeeper:
Zookeeper es un subproyecto de Apacahe Hadoop. Es un servicio de directorio basado en árbol que admite cambios y es adecuado para su uso como registro para servicios Dubbo. en producción.Tiene alta resistencia industrial en el medio ambiente y es recomendado.
Descripción del proceso:
Admite las siguientes funciones:
Suplemento:
¿Qué marco de serialización utiliza el protocolo de Dubbo?
Dubbo tiene múltiples protocolos y diferentes protocolos utilizan diferentes marcos de serialización de forma predeterminada. Por ejemplo, el protocolo dubbo utiliza la serialización Hessian2 de forma predeterminada (Nota: Hessian2 es el desarrollo secundario de Alibaba basado en Hessian, llamado Hessian2). El protocolo rmi utiliza la serialización nativa de Java de forma predeterminada.