Introducción a hystrix, fusible de servicio, degradación del servicio, introducción al tablero

Directorio

Problemas que enfrentan los sistemas distribuidos

Introducción a hystrix

¿Qué puede hacer Hystrix?

Fusible de servicio

Degradación del servicio

Introducción al tablero de instrumentos


Problemas que enfrentan los sistemas distribuidos

Una aplicación en una arquitectura distribuida compleja tiene docenas de dependencias, y cada dependencia inevitablemente fallará en algún momento.

Avalancha de servicio

Cuando llame entre múltiples microservicios, suponga que el microservicio A llama al microservicio B y al microservicio C, y el microservicio B y el microservicio C llaman a otros microservicios, lo que se denomina "abanico". Si el tiempo de respuesta de una llamada de microservicio en el enlace de despliegue es demasiado largo o no está disponible, la llamada al microservicio A consumirá más y más recursos del sistema, lo que provocará que el sistema se bloquee, el llamado "efecto avalancha".

Para aplicaciones de alto tráfico, una sola dependencia de back-end puede hacer que todos los recursos en todos los servidores se saturen en unos pocos segundos. Peor que las fallas, estas aplicaciones también pueden causar mayores demoras entre los servicios, colas de respaldo ajustadas, subprocesos y otros recursos del sistema, causando más fallas en cascada en todo el sistema. Todo esto indica la necesidad de aislar y gestionar fallas y demoras para que la falla de una sola dependencia no pueda cancelar la aplicación o el sistema completo.

Introducción a hystrix

Hystrix es una biblioteca de código abierto para manejar el retraso y la tolerancia a fallas de los sistemas distribuidos. En un sistema distribuido, muchas dependencias inevitablemente no se llamarán, como tiempos de espera, excepciones, etc. No causará una falla general del servicio, evitará fallas en cascada y mejorará la flexibilidad del sistema distribuido.

El "disyuntor" en sí mismo es un dispositivo de conmutación. Después de que una unidad de servicio falla, la supervisión de fallas del disyuntor (similar a un fusible quemado) devuelve una respuesta invocable que puede manejarse (FallBack) a la persona que llama. , En lugar de esperar mucho tiempo o lanzar una excepción que la persona que llama no puede manejar , esto asegura que el hilo de la persona que llama al servicio no se ocupará innecesariamente durante mucho tiempo, evitando así la propagación de fallas en el sistema distribuido, e incluso Avalancha

¿Qué puede hacer Hystrix?

Degradación del servicio

Fusible de servicio

Límite de servicio

Monitoreo casi en tiempo real

Fusible de servicio

El mecanismo de fusible es un mecanismo de protección de enlace de microservicio para tratar el efecto de avalancha.

Cuando un microservicio del enlace de despliegue no está disponible o el tiempo de respuesta es demasiado largo, el servicio se degradará, y luego se fusionará la llamada del microservicio del nodo, y la información de respuesta de "error" se devolverá rápidamente. Cuando se detecta que la respuesta de llamada al microservicio del nodo es normal, se restablece el enlace de la llamada. En el marco de Spring Cloud, el mecanismo de fusibles se implementa a través de Hystrix. Hystrix supervisará el estado de las llamadas entre microservicios. Cuando una llamada fallida alcanza un cierto umbral, el valor predeterminado es que 20 llamadas fallidas en 5 segundos iniciarán el mecanismo de fusible. La anotación del mecanismo de fusible es @HystrixCommand.

Degradación del servicio

Los recursos generales son casi insuficientes, y algunos servicios se cerrarán con dolores dolorosos, y las dificultades se superarán antes de volver a abrir.

El procesamiento de degradación del servicio se realiza en el lado del cliente y no tiene nada que ver con el lado del servidor

package com.atguigu.springcloud.service;
 
import java.util.List;
 
import org.springframework.stereotype.Component;
 
import com.atguigu.springcloud.entities.Dept;
 
import feign.hystrix.FallbackFactory;
 
@Component//不要忘记添加,不要忘记添加
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService>
{
  @Override
  public DeptClientService create(Throwable throwable)
  {
   return new DeptClientService() {
     @Override
     public Dept get(long id)
     {
       return new Dept().setDeptno(id)
               .setDname("该ID:"+id+"没有没有对应的信息,Consumer客户端提供的降级信息,此刻服务Provider已经关闭")
               .setDb_source("no this database in MySQL");
     }
 
     @Override
     public List<Dept> list()
     {
       return null;
     }
 
     @Override
     public boolean add(Dept dept)
     {
       return false;
     }
   };
  }
}
 
 
 

package com.atguigu.springcloud.service;
 
import java.util.List;
 
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
import com.atguigu.springcloud.entities.Dept;
 
@FeignClient(value = "MICROSERVICECLOUD-DEPT",fallbackFactory=DeptClientServiceFallbackFactory.class)
public interface DeptClientService
{
  @RequestMapping(value = "/dept/get/{id}",method = RequestMethod.GET)
  public Dept get(@PathVariable("id") long id);
 
  @RequestMapping(value = "/dept/list",method = RequestMethod.GET)
  public List<Dept> list();
 
  @RequestMapping(value = "/dept/add",method = RequestMethod.POST)
  public boolean add(Dept dept);
}
 
 

Introducción al tablero de instrumentos

Además de aislar llamadas a servicios dependientes, Hystrix también proporciona monitoreo de llamadas casi en tiempo real (Hystrix Dashboard). Hystrix registrará continuamente la información de ejecución de todas las solicitudes iniciadas a través de Hystrix y la mostrará a los usuarios en forma de informes estadísticos y gráficos, incluidos Cuántas solicitudes se ejecutan por segundo, cuántos éxitos, cuántos fracasos, etc. Netflix monitorea las métricas anteriores a través del proyecto hystrix-metrics-event-stream. Spring Cloud también proporciona la integración de Hystrix Dashboard para convertir el contenido de monitoreo en una interfaz visual.

 

 

 

 

 

 

 

 

 

 

524 artículos originales publicados · Me gusta 80 · Visitas 150,000+

Supongo que te gusta

Origin blog.csdn.net/xushiyu1996818/article/details/104538928
Recomendado
Clasificación