Prefacio
Spring Cloud es un marco completo para implementar microservicios basados en Spring Boot. Proporciona los componentes requeridos para el desarrollo de microservicios, como la gestión de la configuración, el descubrimiento de servicios, los interruptores de circuitos, el enrutamiento inteligente, los microgentes, el bus de control, las cerraduras globales, las campañas de decisión, las sesiones distribuidas y la gestión del estado de clúster. Lo más importante es que si lo usa con el marco de arranque de Spring, le hará muy conveniente desarrollar servicios en la nube con arquitectura de microservicio. Spring Cloud contiene muchas subtramas, entre los cuales Spring Cloud Netflix es uno de los marcos desarrollados por Netflix y luego se incorpora a la familia Spring Cloud. Sus módulos principales incluyen: descubrimiento de servicios, interruptores de circuitos y monitoreo, enrutamiento inteligente, equilibrio de carga del cliente, etc.
Este artículo le presentará el contenido relevante del tiempo de espera de componentes de Spring Cloud y lo compartirá para su referencia y aprendizaje. No diré mucho a continuación, echemos un vistazo a la introducción detallada juntos.
Tiempo de espera de la cinta
Configuración global:
cinta: tiempo de lectura: 60000ConnecttimeOut: 60000
Configuración local:
Service-ID: Ribbon: Readtimeut: 1000ConnecttimeOut: 1000
Entre ellos, Service-ID es el nombre de host virtual utilizado por Ribbon, que generalmente es el mismo que el nombre del servicio registrado en el servidor Eureka, es decir, es lo mismo que spring.application.name .
Tiempo de espera de Feign
Comenzando con Spring Cloud Edgware, Feign admite la configuración de tiempos de espera con propiedades:
Feign: Client: Config: FeignName: ConnectTimeOut: 5000 LectTimeOut: 5000
Para la versión anterior, puede escribir feign.Request.Options , consulte: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions Method de escritura.
Tiempo de espera de RestTemplate
Algunas veces, podemos usar RestTemplate, p.
@Bean@LoadBalancedPublic RestTemplate RestTemplate () {return new RestTemplate ();}En este momento, el tiempo de espera se puede establecer de la siguiente manera:
@Bean@loadBalancedPublic RestTemplate RestTeMplate () {simplEclientHttpRequestFactory simplEclientHttPrequestFactory = new SimpleClientHttPrequestFactory (); SimpleClientHttTprequestFactory.SetConnectTimeOut (1000); simplio RestTemplate (SimpleClientHttPrequestFactory);}Tiempo de espera de Zuul
El tiempo de espera de Zuul es más complicado porque Zuul integra la cinta y el hystrix. Las siguientes son dos situaciones:
Si la ruta de Zuul usa cinta
Entonces: el tiempo de espera de Zuul está relacionado con la cinta y el hystrix. En este momento, el tiempo de espera de Zuul se puede configurar de manera similar a lo siguiente:
Hystrix: Comando: predeterminado: Ejecución: aislamiento: hilo: tiempo de tiempo de tiempo
Análisis de código: en este caso, el filtro utilizado para el reenvío de Zuul es org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter , que integra el hytrix y la cinta.
Si la ruta de Zuul no está usando cinta
Por ejemplo: la configuración de enrutamiento de Zuul es la siguiente:
Zuul: Rutas: User-Rutee: # En este método de configuración, User-Rutee solo le da a la ruta un nombre y puede ser nombrado a voluntad. URL: http: // localhost: 8000/ # ruta de URL especificada:/user/** # La ruta correspondiente a la URL.
Luego, el tiempo de espera de Zuul en este momento solo está relacionado con las siguientes dos configuraciones:
Zuul: Host: Socket Timeout-Millis: 10000 Connect Timeout-Millis: 2000
Análisis de código: la forma de configurar directamente el enrutamiento de URL no se usa para cinta o hystrix. El filtro utilizado para el reenvío de Zuul es org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter . En este filtro, Zuul usa Apache HttpClient para reenviar.
En escenarios reales, a veces los dos métodos de enrutamiento pueden usarse en combinación, por lo que se recomienda que configure todos los atributos anteriores.
Tiempo de espera de hystrix
Hystrix: Comando: predeterminado: Ejecución: Tiempo de espera: habilitado: Verdadero aislamiento: Thread: TimeOutInMilliseConds: 1000
Como se indicó anteriormente, el tiempo de espera predeterminado para Hystrix es de 1 segundo. El mecanismo de tiempo de espera está habilitado de forma predeterminada. Para apagar el tiempo de espera de Hystrix, establezca xxx.enabled .
Consejos
Si se usa un componente con Hystrix, generalmente se recomienda que Hystrix TimeOut> Otros componentes Tiempo de espera, de lo contrario, puede hacer que la función de reintento falle.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.