Eclipse configurado para ejecutarse SpringCloud (Hoxton + 2.2.4) estructuras micro-fusible Servicios Marco Modelo + Hystrix hystrix y del cuadro de mandos

breve introducción

En las dependencias del sistema distribuidos entre los servicios y complejo de servicios, una situación inevitable es que algunos servicios se producirá un error, lo que lleva a otros servicios que dependen de ellos aparecen hilo de bloqueo de programación remota. Un único punto de fallo para una solicitud de servicio hará que la petición de un usuario se bloquea, el resultado final es un hilo de recursos agotados de todo el servicio. Dado que los servicios de dependencia, otros servicios que dependen de conducirán al servicio fracaso también está bloqueado en el hilo, el hilo que conduce al agotamiento de los recursos para estos servicios, hasta que no están disponibles, lo que resulta en todo el sistema de servicio no está disponible, que el efecto avalancha. Con el fin de prevenir el efecto avalancha, lo que resulta en un modelo de fusible.

SpringCloud Netflix se dio cuenta de la biblioteca nombre de interruptor llamado Hystrix, proporciona una función de fusible, puede evitar fallos en los sistemas distribuidos aparece vinculada. Hystrix se evita mediante el aislamiento de fallo de ligamiento punto de acceso de servicio, y el fracaso para proporcionar una solución que aumenta la elasticidad de todo el sistema distribuido.

Cuando el número de fracasos de una interfaz API de servicio es menor que el valor umbral se establece dentro de un cierto tiempo, el fusible se encuentra en un estado cerrado, la interfaz normal de API de servicio. Cuando el número de solicitud de fallas de procesamiento de interfaz API es conjunto superior a un umbral, estamos decididos a que la API de interfaz de MAMMALIA, falla, el fusible se abre, al solicitar las realiza la interfaz API de una lógica fail-fast (es decir, de vuelta a la retirada de repliegue lógico), no realice la lógica de negocio, no se bloqueó la solicitud hilo. Fusible en el estado abierto, después de un período de tiempo en un estado semi-abierta, y una petición normal a realizar un determinado número de lógica para ejecutar rápidamente las restantes solicitudes se producirá un error, si así lo solicita para realizar lógica normal falla, el fusible sigue abriendo, si correcta, apague el fusible. Tales fusibles tienen la capacidad de repararse a sí mismo.
Aquí Insertar imagen Descripción
servicio de la figura B falla por alguna razón, no está disponible, todas las llamadas al servicio de tiempo de espera B. B cuando la llamada no llega a un valor umbral particular (dentro de 5 segundos se produce 20 veces el valor predeterminado fracaso Hystrix se ha definido anteriormente), un enlace estará en el estado abierto, entonces no serán todas las llamadas al servicio B ejecución, sustituido por un interruptor de circuito proporciona un mensaje abierto representación enlace de retorno. Hystrix proporciona el mecanismo apropiado que permite a los desarrolladores definen las noticias Fallbak.

abierta enlace bloqueado error cascada, puede ser sumergida o dejar un mal momento para el servicio de reparación. Este repliegue puede llamar a otro Hystrix protección, los datos estáticos, o valores nulos legalmente. Fallbacks puede formar una estructura de cadena, por lo que la parte inferior de la primera llamada de retorno de otros servicios empresariales para regresar datos estáticos.

Fusibles en la cinta y RestTemplate

dependencias add pom.xml

<!--ribbon中使用断路器-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

Modificar la clase de arranque

Además notas @EnableHystrix, la función de fusible abierto hystrix

  • RibbonApplication.java
package org.springcloud.ribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
public class RibbonApplication {

    public static void main(String[] args) {
        SpringApplication.run(RibbonApplication.class, args);
    }
}

Servicio Modificar

En el método hola () más @HystrixCommand comentario. Con este método se habilita comentario hi () en la función de fusible Hystrix, en los cuales:

@HystrixCommand muestra que el método es el paquete hystrix, puede aislarse dependencia de servicio, degradación, fallar rápido, funciones relacionadas reintento rápido hystrix, etc.

  • métodos de reducción de escala fallbackMethod
  • commandProperties atributo de configuración común, el correspondiente HystrixCommand atributo puede estar configurado, por ejemplo, agrupación de hebras o la cantidad de aislamiento de la señal, las reglas, etc. fusible fundido
  • ignoreExceptions ignoran la excepción, no incluido en el valor por defecto HystrixBadRequestException Despiste
  • GROUPKEY () nombre del grupo, nombre de la clase por defecto
  • commandKey nombre del comando, utilice el nombre predeterminado

fallbackMethod se enrolla métodos de vuelta (de retorno) de la lógica. En el presente ejemplo, una cadena de retorno directo. En el estado abierto del fusible, las lleva a cabo la lógica de reserva. La mejor la lógica de repliegue es devolver un poco de cuerda estática, que no requiere una lógica compleja, no remotamente invocar otros servicios, por lo que facilita la realización de un corte rápido, recursos hilo de liberación. Si debe invocar otros servicios en la lógica de respaldo remoto, los mejores de la llamada remota otros servicios, también añadir un fusible.

  • RibbonService.java
package org.springcloud.ribbon;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

@Service
public class RibbonService {
    @Autowired
    RestTemplate restTemplate;
    
    @HystrixCommand(fallbackMethod = "hiError")
    public String hi(String name){
        return restTemplate.getForObject("http://springcloud-eureka-provider/hi?name="+name,String.class);
    }
    
    public String hiError(String name){
        return "hi,"+name+", use Ribbon + hystrix, eureka-provider is down!";
    }
}

Con el fin de iniciar el proyecto

springcloud-Eureka-Cluster-Puesto1
springcloud-Eureka-Cluster-peer2
springcloud-Eureka-Cluster-peer3
springcloud-Eureka-provider1
springcloud-Eureka-Provider2 son
-Eureka-provider3 springcloud
springcloud-cinta
Aquí Insertar imagen Descripción
, después de todo arranque normal, parada springcloud-Eureka-provider1 proveedores, puerto: 8001 servicio de
acceso a la ventana de comando curl http://eureka-ribbon.com:8100/hi?name=zhaojq, el interruptor automático ya está en vigor, inmediata: proveedor de servicios colgó
Aquí Insertar imagen Descripción

Feign en uso en disyuntores

Modificar application.yml archivo

Fingir son auto-disyuntor, no se activa de forma predeterminada. Es necesario para abrirlo en el fichero de configuración.

  • application.yml
spring:
  application:
    name: springcloud-feign
  freemarker:
    prefer-file-system-access: false
  security:
    user:
      name: admin
      password: 123456

server:
  port: 8101

eureka:
  instance:
    hostname: eureka-feign.com
    instance-id: eureka-feign
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer1.com:8897/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer2.com:8898/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer3.com:8899/eureka/

feign:
  hystrix:
    enabled: true  

Modificar FeignConsumer

En @FeignClient anotaciones fallback configuración de clase con el procesamiento a prueba de rápido. La clase de tratamiento como clase Feign lógico de fusión debe implementar una interfaz que ser modificado @FeignClient.

  • FeignConsumer.java
package org.springcloud.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Component
/*指定这个接口所要调用的提供者服务名称 */
@FeignClient(value = "springcloud-eureka-provider",configuration = FeignConfig.class,fallback = FeignHystrix.class)

public interface FeignConsumer {
    @GetMapping(value = "/hi")
    String sayHiFromEurekaProvider(@RequestParam(value = "name")String name);
}

Nueva lógica de clase fusible Feign

Aquí Insertar imagen Descripción

  • FeignHystrix.java
package org.springcloud.feign;

import org.springframework.stereotype.Component;

@Component
public class FeignHystrix implements FeignConsumer {

    @Override
    public String sayHiFromEurekaProvider(String name) {
        eturn "hi,"+name+", use Feign + hystrix, eureka-provider is down!";
    }
}

Con el fin de iniciar el proyecto

springcloud-Eureka-Cluster-Puesto1
springcloud-Eureka-Cluster-peer2
springcloud-Eureka-Cluster-peer3
springcloud-Eureka-provider1
springcloud-Eureka-Provider2 son
-Eureka-provider3 springcloud
springcloud-Feign
Aquí Insertar imagen Descripción
después de todo arranque normal, parada springcloud-Eureka-provider1 proveedores, puerto: 8001 servicio de
acceso a la ventana de comando curl http://eureka-feign.com:8101/hi, el interruptor automático ya está en vigor, inmediata: proveedor de servicios colgó
Aquí Insertar imagen Descripción

hystrix del tablero de instrumentos

Hystrix cuadro de instrumentos como un estado del interruptor automático de un componente que proporciona una monitorización de datos y la interfaz gráfica amigable.

Uso Hystrix tablero de instrumentos en la cinta de opciones

dependencias add pom.xml

<!--ribbon中使用断路器-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

Modificar application.yml archivo

Vigilancia del inicio

  • application.yml
spring:
  application:
    name: springcloud-ribbon
  freemarker:
    prefer-file-system-access: false
  security:
    user:
      name: admin
      password: 123456
    
server:
  port: 8100

# 自定义配置负载均衡策略
Load_Balance:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

eureka:
  instance:
    hostname: eureka-ribbon.com
    instance-id: eureka-ribbon
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer1.com:8897/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer2.com:8898/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer3.com:8899/eureka/

#actuator端口
management:
  endpoints:
    web:
      #修改访问路径  2.0之前默认是/, 2.0默认是 /actuator
      base-path: "/actuator"
      #开放所有页面节点  默认只开启了health、info两个节点
      exposure:
        include: '*'
  server:
    port: 9001
    servlet:
      context-path: /
    ssl:
      enabled: false
  endpoint:
    health:
      show-details: always
    hystrix:
      stream:
        enabled: true

Modificar la clase de arranque

Además comentario @EnableHystrixDashboard.

  • RibbonApplication.java
package org.springcloud.ribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
@EnableHystrixDashboard
public class RibbonApplication {

    public static void main(String[] args) {
        SpringApplication.run(RibbonApplication.class, args);
    }
}

Con el fin de iniciar el proyecto

springcloud-eureka-cluster-Peer1
springcloud-eureka-cluster-peer2
springcloud-eureka-cluster-peer3
springcloud-Eureka-provider1
springcloud-Eureka-provider2
springcloud-Eureka-provider3
springcloud-cinta

En el primer navegador para acceder al acceso http://eureka-ribbon.com:8100/hi, a continuación, visite http://eureka-ribbon.com:9001/actuator/hystrix.stream, las pantallas del navegador indicadores de datos del fusible
Aquí Insertar imagen Descripción

acceso http://eureka-ribbon.com:8100/hystrix

Aquí Insertar imagen Descripción
Haga clic Moniter Corriente
Aquí Insertar imagen Descripción

Esta página muestra el fusible índice valle de datos, lo que significa que los indicadores de datos como se muestra en el diagrama de documento oficial Hystrix, la dirección de documento: https: //github.com/Netflix/Hystrix/wiki

Aquí Insertar imagen Descripción

Hystrix del tablero de instrumentos en uso en Feign

dependencias add pom.xml

Fingir viene Hystrix dependientes se inicia dependiente, por lo que necesita para empezar a añadir la dependencia en el POM

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

Modificar application.yml archivo

Vigilancia del inicio

  • application.yml
spring:
  application:
    name: springcloud-feign
  freemarker:
    prefer-file-system-access: false
  security:
    user:
      name: admin
      password: 123456

server:
  port: 8101

eureka:
  instance:
    hostname: eureka-feign.com
    instance-id: eureka-feign
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer1.com:8897/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer2.com:8898/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer3.com:8899/eureka/

feign:
  hystrix:
    enabled: true  
    
management:
  endpoints:
    web:
      base-path: "/actuator"
      exposure:
        include: "*"
  server:
    port: 9002
    servlet:
      context-path: /
    ssl:
      enabled: false
  endpoint:
    health:
      show-details: always
    hystrix:
      stream:
        enabled: true

Modificar la clase de arranque

Además @EnableHystrix y comentario @EnableHystrixDashboard.

  • FeignApplication.java
package org.springcloud.feign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
@EnableHystrix
@EnableHystrixDashboard
public class FeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class, args);
    }
}

Con el fin de iniciar el proyecto

springcloud-eureka-cluster-Peer1
springcloud-eureka-cluster-peer2
springcloud-eureka-cluster-peer3
springcloud-Eureka-provider1
springcloud-Eureka-provider2
springcloud-Eureka-provider3
springcloud-Feign

En el primer navegador para acceder al acceso http://eureka-feign.com:8101/hi, a continuación, visite http://eureka-feign.com:9002/actuator/hystrix.stream, las pantallas del navegador indicadores de datos del fusible
Aquí Insertar imagen Descripción

acceso http://eureka-feign.com:8101/hystrix

Aquí Insertar imagen Descripción

Haga clic Moniter Corriente

Aquí Insertar imagen Descripción

Publicado 72 artículos originales · ganado elogios 66 · Vistas de 150.000 +

Supongo que te gusta

Origin blog.csdn.net/miaodichiyou/article/details/104350283
Recomendado
Clasificación