¿Cómo funciona Dubbo? El registro está muerto. ¿Podemos seguir comunicándonos?
1.El proceso de llamada de Dubbo
2.2 El diseño general. Du Bo
3. A juzgar por el código fuente, muestra que el centro de registro aún puede continuar comunicándose después de colgar.
Diagrama de arquitectura del proceso de llamada de Dubbo
Descripción del proceso:
1. El proveedor vincula el puerto especificado e inicia el servicio.
2. El proveedor se conecta al centro de registro y envía la IP local, el puerto, la información de la aplicación y la información del servicio al centro de registro para su almacenamiento.
3. Consumidor, conéctese al centro de registro y envíe la información de la solicitud y la información del servicio solicitado al centro de registro.
4. El centro de registro compara la lista de proveedores correspondiente en función de la información del servicio solicitada por el consumidor y la envía al caché de la aplicación del consumidor.
5. Cuando un consumidor inicia una llamada remota, inicia la llamada basándose en una de las listas de consumidores almacenadas en caché.
Cambios de estado en 6.6. Los proveedores serán notificados al centro de registro en tiempo real, y luego el centro de registro lo enviará a los consumidores en tiempo real.
La importancia de este diseño:
El diseño general de Dubbo es el siguiente:
Desde el código fuente, muestra que el centro de registro puede continuar comunicarse incluso si muere. Primero, los consumidores deben registrarse en el Centro de registro de Zookeeper.
Luego use RegistryDirectory para monitorear varios directorios (se activará automáticamente una vez para obtener los datos actuales en estos directorios).
El directorio de configuración dinámica del servicio introducido actualmente:/dubbo/config/dubbo/org.Apache.dubbo.demo.demo service:1.1:g1.configurators
Por ejemplo, monitoreo del directorio de usuarios proporcionado:
Cuando un proveedor de servicios se registra, zookeeper lo enviará automáticamente al consumidor suscrito, luego lo convertirá en un invocador y lo almacenará en el caché.
Miramos el código al llamar:
Vemos el método doInvoke de FailoverClusterInvoker.
invoker invoker = select(load balance, invocation, copyInvokers, invoked
Este método obtiene el invocador del caché según el balanceador de carga,
Arriba de CopyInvokers está la lista en la que almacenamos en caché.
invokers = router chain . route(getConsumerUrl(), invocation);
En resumen, cuando se inicia nuestro sistema, todos los servicios en el centro de registro se han almacenado en caché, los centros de registro posteriores se almacenarán en caché. ¡Solo afecta a altas posteriores, no a convocatorias!
RPC distribuido de Dubbo, marco de microservicio,
Incluye tres funciones clave: llamadas remotas basadas en interfaz, tolerancia a fallas y equilibrio de carga, registro y descubrimiento automático de servicios.
Dubbo hace que llamar a servicios remotos sea tan fácil como llamar a servicios java locales.
Consulte la documentación oficial de Dubbo: incluidos los detalles de implementación, los detalles de llamadas remotas y los servicios públicos del proveedor de servicios.
Proceso principal.
1. El proveedor se registra en el centro de registro.
2. Los consumidores se suscriben a los servicios del centro de registro, y el centro de registro notificará a los consumidores sobre los servicios registrados.
3. El consumidor llama al proveedor.
4. Tanto los consumidores como los proveedores notifican al centro de seguimiento de forma asincrónica.
Utilice zk como centro de registro:
Cuando el proveedor inicia, registra sus servicios en el centro de registro zk.
Cuando los consumidores comienzan, se suscriben a los servicios que necesitan desde el centro de registro zk.
Entonces, es posible. Cuando el consumidor comienza, extraerá la interfaz de dirección del productor registrado de zk y la almacenará en caché localmente. Cada llamada se realiza en función de una dirección almacenada localmente. El consumidor tiene una lista de productores locales y continuará trabajando de acuerdo con la lista, pero no puede sincronizar la lista de servicios más reciente del centro de registro. No importa si el centro de registro a corto plazo cuelga, pero hay que repararlo lo antes posible. No importa si cuelga, siempre y cuando no se agreguen nuevos servicios. Si desea llamar a un nuevo servicio, no puede hacerlo.