Implementación de degradación del servicio Springcloud-hystrix

1. Una breve introducción a hystrix

Hystrix es una biblioteca tolerante a fallas y latencia diseñada para aislar puntos de acceso a sistemas remotos, servicios y bibliotecas de terceros, detener fallas en cascada y lograr resistencia en sistemas distribuidos complejos donde las fallas son inevitables.

2. Implementación de la degradación del servicio hystrix

La degradación del servicio es una estrategia que se maneja en el lado del cliente. Cuando el servidor deja de funcionar, puede utilizar los valores predeterminados.

Este artículo se basa en el siguiente artículo

https://blog.csdn.net/weixin_43520670/article/details/114294972

1. Escriba la clase de implementación de FallbackFactory en la carpeta de servicio del módulo api

En el módulo api, escribimos UserClientServiceFallbackFactory para implementar el método FallbackFactory como método de procesamiento para la degradación del servicio.

El código específico es el siguiente:

package com.hzxy.springcloud.service;

import com.hzxy.springcloud.model.User;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;

@Component
public class UserClientServiceFallbackFactory implements FallbackFactory {
    
    


    public UserClientService create(Throwable throwable) {
    
    
        return new UserClientService() {
    
    
            public List<User> Hi() {
    
    
                List<User> users  = new ArrayList<User>();
                User user = new User();
                user.setId(15L).setName("id => " + 15 + ",不存在该用户,或者信息无法找到").setDb("不存在数据库");
                users.add(user);
                return users;
            }	
        };
    }
}

2. Agregue parámetros a la anotación @FeignClient en la carpeta de servicio del módulo api

Agregue un comentario para que UserClientServiceFallbackFactory se pueda usar El
código completo es el siguiente

package com.hzxy.springcloud.service;


import com.hzxy.springcloud.model.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;

@Component
@FeignClient(value = "springcloud-provider-user",fallbackFactory = UserClientServiceFallbackFactory.class)      // value 参数是服务提供者的服务名称,fallbackFactory后面填我们实现的class文件
public interface UserClientService {
    
    

    // 请求提供者的url
    @RequestMapping("/hello")
    public List<User> Hi();
}

3. Reduzca el servicio de configuración en el módulo springcloud-consumer-user-fing para que esté disponible

# 开启服务降级feign.hystrix
feign:
  hystrix:
    enabled: true

3. Prueba

Encienda 7001,
Inserte la descripción de la imagen aquí
8001 y finja e ingrese http://ybg.eureka1.com/hi. Cuando cerremos el servicio 8001, visítelo nuevamente.
Inserte la descripción de la imagen aquí
¡Muestra nuestros valores predeterminados y la prueba es exitosa!

4. La diferencia entre servicio fusible y degradación del servicio.

  • Fusible de servicio: en el lado del servidor, un tiempo de espera de servicio agotado o una anomalía causa el fusible
  • Degradación del servicio: en el lado del cliente, considerando la carga general de solicitudes del sitio web, cuando un servidor se fusiona o apaga, el servicio ya no se llamará. En este momento, en el lado del cliente, podemos preparar un FallbackFactory y devolver un valor (valor predeterminado)), aunque el nivel general ha bajado, pero aún puede usar

Supongo que te gusta

Origin blog.csdn.net/weixin_43520670/article/details/114337999
Recomendado
Clasificación