Conceptos relacionados con la alta disponibilidad de la arquitectura distribuida Dubbo

        Alta disponibilidad: se refiere en un sistema o arquitectura distribuida, después de una serie de diseños, reducir el tiempo en que el sistema no puede brindar servicios para mejorar la disponibilidad del sistema y las aplicaciones.

1. Zookeeper está inactivo y conectado directamente a Dubbo.

Pregunta: El centro de registro de cuidadores del zoológico no funciona, ¿pueden los consumidores seguir llamando a los servicios expuestos por el proveedor? ¿Se puede llamar al servicio sin un centro de registro?

Respuesta: si

razón:

Robustez

1. El tiempo de inactividad del centro de monitoreo no afectará el uso, solo se perderán algunos datos de muestreo.

2. Una vez que la base de datos está inactiva, el centro de registro aún puede proporcionar consultas de la lista de servicios a través del caché, pero no puede registrar nuevos servicios.

3. Clúster punto a punto del centro de registro; si alguno falla, cambiará automáticamente a otro.

4. Después de que todos los centros de registro estén inactivos, los proveedores y consumidores de servicios aún pueden comunicarse a través del caché local.

5. El proveedor del servicio es apátrida, si alguno de ellos falla, el uso no se verá afectado.

6. Después de que todos los proveedores de servicios estén inactivos, la aplicación del consumidor de servicios no podrá usarse y tendrá que volver a conectarse indefinidamente esperando que el proveedor de servicios se recupere.

        Incluso si no tenemos un centro de registro, podemos usar el método de conexión directa de Dubbo para permitir que los consumidores consulten los servicios expuestos por el proveedor: cuando el método proporcionado por el proveedor deba llamarse de forma remota, use la anotación @Reference para Inyección de conexión directa.

//    @Reference  //dubbo会自动去注册中心找这个暴露出来的服务
    @Reference(url = "172.0.0.1:20880")  //本机提供者应用的具体url
    UserService userService;

2. Estrategia de equilibrio de carga

        Load Balance (LB) es un componente clave indispensable de un sistema de alta concurrencia y alta disponibilidad. El objetivo es utilizar un algoritmo específico para intentar distribuir uniformemente el tráfico de red a múltiples servidores para mejorar la velocidad de respuesta general y el rendimiento del sistema. Disponibilidad.

        1. Aleatorio (equilibrio de carga aleatorio)

                El servidor se llama aleatoriamente, pero con probabilidades aleatorias establecidas por peso. Cuanto mayor sea el volumen de llamadas, más uniforme será la distribución y el peso será más uniforme después de utilizar el peso según la probabilidad, lo que favorece el ajuste dinámico del peso del proveedor.

        2. Sondeo (equilibrio de carga RoundRobin)

                Cada servidor se llama en un bucle y la proporción de round robin también se puede configurar de acuerdo con el peso (por ejemplo). Sin embargo, existe el problema de que los proveedores lentos acumulan solicitudes. Por ejemplo, la segunda máquina es muy lenta pero no se bloquea. Cuando la solicitud se transfiere a la segunda máquina, se atasca allí. Con el tiempo, todas las solicitudes se atascan en la segunda maquina..

        3. Equilibrio de carga menos activo

                Distribuya las solicitudes al servidor candidato con la menor cantidad de conexiones/solicitudes (el servidor que actualmente maneja la menor cantidad de solicitudes).

        4. Hash consistente (ConsistentHash LoadBalance)

                Llamar al mismo método con los mismos parámetros, según la distribución Hash, llamará al mismo servidor cada vez

3. Rebaja del servicio

        Cuando la presión del servidor aumenta drásticamente, es posible que algunos servicios y páginas no se procesen estratégicamente o se procesen de manera simple en función de las condiciones comerciales y el tráfico reales, liberando así recursos del servidor para garantizar el funcionamiento normal o eficiente de las transacciones principales. Puede utilizar la función de degradación del servicio para bloquear temporalmente un servicio no crítico con errores y definir una estrategia de retorno después de la degradación.

       En pocas palabras: sacrificar a una persona para preservar la situación general.

       Por ejemplo, ahora que el servidor está ejecutando muchas funciones (generación de pedidos, gestión de usuarios, publicidad, etc.), ha alcanzado su límite y no se puede revertir rápidamente. Podemos detener temporalmente o simplemente procesar el negocio publicitario para liberar recursos del procesador. y procesar otros núcleos primero del negocio para lograr operaciones más eficientes.

        

         En este momento, puede seleccionar "Escudo" o "Tolerancia a fallos" en la interfaz visual de Dubbo para degradar el servicio.

 

        (1) Blindaje: significa que las llamadas al método del consumidor al servicio devolverán directamente valores nulos y no se iniciarán llamadas remotas. Se utiliza para proteger a la persona que llama del impacto cuando servicios sin importancia no están disponibles.

        (2) Tolerancia a fallos: significa que después de que el consumidor no llama al método del servicio, devuelve un valor nulo y no arroja una excepción. Se utiliza para tolerar el impacto en las personas que llaman cuando los servicios sin importancia son inestables.

Supongo que te gusta

Origin blog.csdn.net/weixin_64709241/article/details/129768445
Recomendado
Clasificación