Uso de tolerancia a fallas de clúster, equilibrio de carga y degradación del servicio en Spring Cloud Alibaba Dubbo

De hecho, ya hemos introducido el balanceo de cargas Ribbon. En el caso de un gran tráfico, aumentaremos el número de nodos mediante expansión horizontal para balancear el tráfico de solicitudes, mejorando así el rendimiento del servicio en general. Como marco de microservicio, Spring Cloud Alibaba utiliza Dubbo como marco de comunicación. Dubbo proporciona cuatro estrategias de equilibrio de carga, a saber, algoritmo aleatorio (aleatorio), roundrobin (roundrobin), llamada menos activa (menos activa) y algoritmo hash consistente. (Consistenthash). Entre ellos, el algoritmo aleatorio puede establecer el peso para el servidor con mejor rendimiento, y cuanto mayor sea la probabilidad de la solicitud. El algoritmo de rotación es establecer la tasa de rotación de acuerdo con el peso después de la convención. El nodo con las llamadas menos activas y el procesamiento lento recibirá menos solicitudes, consistente Los parámetros de solicitud del algoritmo hash se envían al mismo servidor. El siguiente es el diagrama de clases de equilibrio de carga proporcionado por Dubbo:

Al utilizar la estrategia de equilibrio de carga de Dubbo, puede agregar el parámetro de equilibrio de carga a la anotación @Service. El valor de equilibrio de carga es el nombre de la estrategia de equilibrio de carga, que es el valor entre paréntesis de la estrategia de equilibrio de carga descrita anteriormente. Por ejemplo, establecemos la estrategia de equilibrio de carga en Para el entrenamiento de rotación, las anotaciones de @Service son las siguientes:

@Service(loadbalance="roundrobin")
public class HelloServiceImpl implements HelloService {
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

La estrategia de equilibrio de carga de Dubbo es relativamente simple. Sigamos presentando la estrategia de degradación del servicio de Dubbo. La degradación del servicio es una estrategia de protección. Cuando la presión del servicio es alta, los servicios sin importancia se pueden degradar para garantizar el funcionamiento normal de los servicios básicos. Por ejemplo, cada año en Double Eleven, la evaluación de productos y otros servicios se degradan para garantizar que la mayoría de las transacciones de los usuarios sean normales. Dubbo proporciona un método de configuración Mock para lograr la degradación del servicio. Es decir, cuando el proveedor del servicio tiene una excepción, los datos inferiores se devuelven a través de la configuración de degradación. El siguiente es un ejemplo. Necesitamos implementar la interfaz del proveedor de servicios. El código es el siguiente:

public class MockHelloServciceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "服务异常";
    }
}

Cuando utilizamos la degradación del servicio de Dubbo, solo necesitamos agregar el parámetro simulado a la anotación @Reference, cuyo valor es la implementación del servicio de degradación, que es la clase que escribimos anteriormente, y configurar el clúster para que no falle. Los ejemplos son los siguientes:

@RestController
public class HelloController {
    @Reference(check = false, mock = "cn.org.microservice.consume.servcice.MockHelloServciceImpl",cluster = "failfast")
    private HelloService helloService;
    @GetMapping("/hello/{name}")
    public String sayHello(@PathVariable String name) {
        return helloService.sayHello(name);
    }
}

En la degradación del servicio anterior, usamos el parámetro de clúster. Este parámetro se usa para configurar la tolerancia a fallas de Dubbo y la tolerancia a fallas se refiere al método de procesamiento después de que la solicitud falla debido a excepciones de red, excepciones de servicio, etc. cuando la persona que llama al servicio vuelve a llamar al servicio. Para las personas que llaman al servicio técnico, se necesita un mecanismo para manejar este tipo de error con gracia. Dubbo proporciona un total de 6 mecanismos tolerantes a fallas, que pueden ampliarse por sí mismos. Los 6 métodos de tolerancia a fallos proporcionados por Dubbo son los siguientes:

Clúster de conmutación por error: cambia automáticamente después de una falla. Cuando la llamada de servicio falla, se cambiará a otros nodos del clúster para intentarlo. El número predeterminado de reintentos es 2. Puede modificar el número de reintentos mediante el atributo de reintentos.

Clúster Failfast: Fallo rápido Después de que falla la llamada de servicio, se informará un error inmediatamente, es decir, solo se inicia una llamada.

Clúster a prueba de fallas: a prueba de fallas, lo que significa que cuando ocurre una excepción, la excepción se ignora directamente.

Clúster de conmutación por recuperación: responde automáticamente después de una falla. Cuando la llamada de servicio es anormal, la solicitud fallida se registra en segundo plano y se retransmite regularmente.

Clúster de bifurcación: llame a varios servicios en el clúster en paralelo, siempre que uno regrese correctamente. El número máximo de paralelos se puede establecer a través del parámetro bifurcaciones,

Clúster de transmisión: Llamadas de transmisión y todos los proveedores de servicios, cualquier error de servicio indica que la persona que llama ha fallado.

Configurar la tolerancia a fallas en Dubbo es muy simple, solo agregue anotaciones de clúster en @Service. El siguiente es un ejemplo de tolerancia a fallas de Dubbo:

@Service(loadbalance="roundrobin",cluster = "failfast")
public class HelloServiceImpl implements HelloService {
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

La siguiente figura muestra el diagrama de clases de implementación de tolerancia a fallas:

                                                                                                                                                           

Supongo que te gusta

Origin blog.csdn.net/wk19920726/article/details/108411066
Recomendado
Clasificación