Springcloud de cero a construir un micro-servicio (siete) ---- en lugar de utilizar el Sentinel Hystrix

En primer lugar, en lugar de utilizar el Sentinel Hystrix

1. Modificar el archivo POM
(1), además de la primavera en la nube-openfeign dependencias se basan en la nube dependencias del módulo
Nota: Añadir aquí el objetivo es resolver el muelle de nube de arranque-openfeign2.2.0.RELEASE en el nombre de método de interfaz mal escrito problema.
Específicamente consulte el artículo https://www.cnblogs.com/cdfive2018/p/12537412.html
<dependency>
<la groupId> org.springframework.cloud </ la groupId>
<la artifactId> Spring nube-openfeign-Dependencias </ la artifactId>
<Versión> $ {primavera-Cloud-alibaba.version} </ Version>
<tipo> POM </ type>
<scope> Importar </ scope>
</ dependency>
(2) Consumidor Nube-más-módulo de primavera cloud- arrancador-alibaba-centinela dependiente
<dependency>
<la groupId> com.alibaba.cloud </ la groupId>
<la artifactId> Spring-Cloud-motor de arranque-alibaba-centinela </ la artifactId>


Uso feign.sentinel.enabled = verdadera alternativa feign.hystrix.enabled = true
después de las modificaciones
# feign.hystrix.enabled = true
feign.sentinel.enabled = true
3. Modificar módulo de nube de código de consumo
de clase modificaciones CloudConsumerApplication
en público RestTemplate restTemplate ( ) {
return new nueva RestTemplate ();
}
aumentará @SentinelRestTemplate el método
efecto modificado se convierte en
@LoadBalanced
@Bean
@SentinelRestTemplate
pública RestTemplate RestTemplate () {
return new nueva RestTemplate ();
}

En segundo lugar, mediante el Sentinel
1. Revisión código del módulo nube-consumo
(1) nueva clase SentinelGlobalDefaultUtil, y tratado como un bloque unificado de retorno, el valor de retorno de la interfaz es de notar aquí debe ser unificada
paquete com.plkd.consumer.sentinel;

com.alibaba.csp.sentinel.slots.block.BlockException importación;

public class SentinelGlobalDefaultUtil {
public static int última BLOCK_FLAG = 88888;
public static final de cadena FALLBACK_DEFAULT_RESULT = "retroceso";

public int estática globalBlockHandler (BlockException ex) {
System.out.println:; ( "bloqueado por" + ex.getClass () getSimpleName ()).
volver BLOCK_FLAG;
}

estático public String globalDefaultFallback (t Throwable) {
System.out.println ( "Repliegue llamó:" + t.getClass () getSimpleName ().);
volver FALLBACK_DEFAULT_RESULT;
}
}

(2)修改OrderController类增加使用SentinelResource注解
修改后结果:
@RequestMapping (valor = "/ getUserByOrderId / {id}", method = RequestMethod.GET)
@SentinelResource (blockHandler = "globalBlockHandler", blockHandlerClass = SentinelGlobalDefaultUtil.class,
defaultFallback = "globalDefaultFallback", fallbackClass = {SentinelGlobalDefaultUtil.class})
public String getUserByOrderId (@PathVariable ( "id") int id) {
retorno userRemoteClient.findUserByUserName ( "Michael") toString ().;
}

2. Modificar el código del módulo de usuario-open-api
(1) nueva clase UserFeignClientFallbackFactory
com.plkd.usercenter.client.sentinel paquete;

com.plkd.usercenter.client.UserRemoteClient importación;
com.plkd.usercenter.dto.UseDto importación;
feign.hystrix.FallbackFactory importación;
org.springframework.stereotype.Component importación;

/ *
Se recomienda utilizar esta forma de realización, de repliegue fallbackFactory atributos basados en la información de anomalía puede obtener
* /
@Component
clase pública UserFeignClientFallbackFactory los implementos FallbackFactory <UserRemoteClient> {
@ Override
UserRemoteClient pública Crear (Throwable Throwable) {
return new nueva UserRemoteClient () {
@ Override
usedto findUserByUserName pública (el usuario String) {
System.out.println ( "llamadas remotas que sean limitativos o degradados, Throwable:" Throwable +);
return null;
}
};
}
}
(2) modificar la clase UserRemoteClient
la anotación modificada FeignClient @FeignClient (name = "nube-proveedor ", fallbackFactory = UserFeignClientFallbackFactory.class)

En tercer lugar, el despliegue de paneles Sentinel
1. Descargar la consola de Sentinel: https: //github.com/alibaba/Sentinel/releases
ejecutar el comando para iniciar Dashboard:
Java -Dserver.port = 8081-jar-Sentinel del tablero de instrumentos-1.7.1.jar
dicho incumplimiento 8081 es el puerto, escriba en su navegador: http: // localhost: 8081. La contraseña de la cuenta predeterminada: Sentinel: Sentinel, ver la interfaz de consola para el despliegue de éxito

configuración del módulo 2.cloud-consumidor incorporado:
# Sentinel del tablero de instrumentos
spring.cloud.sentinel.transport.dashboard = localhost: 8081

3. Reinicie el módulo nube consumidor
tenga acceso a su navegador a http: 8080 / pedido / getUserByOrderId / 1 : // localhost: 8080 / eco / 2018, así como http: // localhost
aplicación cloud- este tiempo van a aparecer en la consola de Sentinel consumidor

 

 

 4. Establecer las reglas de control de flujo

 

 

 El acceso continuo http: // localhost: 8080 / pedido / getUserByOrderId / 1 resultados están limitando

 

 

Supongo que te gusta

Origin www.cnblogs.com/michael-qi/p/12621350.html
Recomendado
Clasificación