Prefácio
O Spring Cloud é uma estrutura completa para a implementação de microsserviços com base na inicialização da primavera. Ele fornece os componentes necessários para o desenvolvimento de microsserviços, como gerenciamento de configurações, descoberta de serviços, disjuntores, roteamento inteligente, micro-agentes, barramento de controle, bloqueios globais, campanhas de decisão, sessões distribuídas e gerenciamento de estados de cluster. O mais importante é que, se você o usar com a estrutura de inicialização da primavera, isso o tornará muito conveniente para desenvolver serviços em nuvem com a arquitetura de microsserviços. A Spring Cloud contém muitos sub -quadros, entre os quais a Spring Cloud Netflix é uma das estruturas desenvolvidas pela Netflix e posteriormente incorporada à família Spring Cloud. Seus principais módulos incluem: descoberta de serviços, disjuntores e monitoramento, roteamento inteligente, balanceamento de carga do cliente, etc.
Este artigo apresentará a você o conteúdo relevante do tempo limite dos componentes da Spring Cloud e o compartilhará para sua referência e aprendizado. Não vou dizer muito abaixo, vamos dar uma olhada na introdução detalhada juntos.
Tempo limite de Ribbon
Configurações globais:
Fita: ReadTimeout: 60000ConnectTimeout: 60000
Configurações locais:
Serviço-Id: Ribbon: ReadTimeout: 1000ConnectTimeout: 1000
Entre eles, o serviço-ID é o nome do host virtual usado pela Ribbon, que geralmente é o mesmo que o nome do serviço registrado no servidor Eureka, ou seja, é o mesmo que spring.application.name .
Tempo limite de Feign
Começando com o Spring Cloud Edgware, o Feign suporta a configuração de tempo limite com propriedades:
Feign: Cliente: Config: FeignName: ConnectTimeout: 5000 ReadTimeout: 5000
Para a versão antiga, você pode escrever feign.Request.Options , consulte: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions Method.
Resttemplate Timeout
Algumas vezes, podemos usar Resttemplate, p.
@Bean@loadBalancedPublic Resttemplate RestTemplate () {return new Resttemplate ();}Neste momento, o tempo limite pode ser definido da seguinte maneira:
@Bean@LoadBalancedpublic RestTemplate restTemplate() {SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();simpleClientHttpRequestFactory.setConnectTimeout(1000);simpleClientHttpRequestFactory.setReadTimeout(1000);return new Resttemplate (SimpleClientHttPrequestFactory);}Tempo limite de Zuul
O tempo limite de Zuul é mais complicado porque Zuul integra fita e hystrix. A seguir, são apresentadas duas situações:
Se a rota de Zuul usa fita
Então: o tempo limite de Zuul está relacionado a fita e hystrix. Neste momento, o tempo limite de Zuul pode ser configurado de maneira semelhante ao seguinte:
Hystrix: Comando: Padrão: Execução: Isolamento: Tópico: TimeoutInMillisEconds: 1000RIBBON: ReadTimeout: 1000 ConnectTimeout: 1000
Análise de código: nesse caso, o filtro usado para o encaminhamento do Zuul é org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter , que integra o hystrix e a fita.
Se a rota de Zuul não estiver usando fita
Por exemplo: a configuração de roteamento de Zuul é a seguinte:
Zuul: Rotas: Route de usuário: # Neste método de configuração, a rota do usuário apenas dá ao rota um nome e pode ser nomeado à vontade. URL: http: // localhost: 8000/ # URL especificado caminho:/user/** # o caminho correspondente ao URL.
Então, o tempo limite de Zuul neste momento está relacionado apenas às duas configurações a seguir:
Zuul: Host: Socket-timeout-Millis: 10000 Connect-timeout-milis: 2000
Análise de código: a maneira de configurar diretamente o roteamento de URL não é usado para fita ou hystrix. O filtro usado para o encaminhamento Zuul é org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter . Neste filtro, o Zuul usa o Apache HttpClient para encaminhar.
Em cenários reais, às vezes os dois métodos de roteamento podem ser usados em combinação, por isso é recomendável que você configure todos os atributos acima.
Hystrix Timeout
Hystrix: Comando: Padrão: Execução: Timeout: Ativado: True Isolation: Thread: timeoutInMillisEconds: 1000
Como acima, o tempo limite padrão do Hystrix é 1 segundo. O mecanismo de tempo limite é ativado por padrão. Para desativar o tempo limite do hystrix, defina xxx.enabled como false.
Pontas
Se um componente for usado com o Hystrix, é geralmente recomendável que o tempo limite da hystrix> outros componentes, caso contrário, ele poderá fazer com que o recurso de repetição falhe.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.