Préface
Spring Cloud est un framework complet pour implémenter les microservices en fonction de Spring Boot. Il fournit les composants requis pour le développement de microservices tels que la gestion de la configuration, la découverte de services, les disjoncteurs, le routage intelligent, les micro-agents, le bus de contrôle, les verrous mondiaux, les campagnes de décision, les sessions distribuées et la gestion des états de cluster. La chose la plus importante est que si vous l'utilisez avec le framework Spring Boot, cela vous rendra très pratique de développer des services cloud avec l'architecture de microservice. Spring Cloud contient beaucoup de sous-trames, parmi lesquelles Spring Cloud Netflix est l'un des frameworks développé par Netflix et incorporé plus tard dans la famille Spring Cloud. Ses principaux modules comprennent: la découverte de service, les disjoncteurs et la surveillance, le routage intelligent, l'équilibrage de la charge des clients, etc.
Cet article vous présentera le contenu pertinent du délai d'expiration des composants de Spring Cloud et le partagera pour votre référence et votre apprentissage. Je ne dirai pas beaucoup ci-dessous, jetons un coup d'œil à l'introduction détaillée ensemble.
Timeout du ruban
Paramètres globaux:
Ribbon: Readtimeout: 60000ConnectTimeout: 60000
Paramètres locaux:
Service-ID: Ribbon: Readtimeout: 1000ConnectTimeout: 1000
Parmi eux, Service-ID est le nom d'hôte virtuel utilisé par le ruban, qui est généralement le même que le nom de service enregistré sur le serveur Eureka, c'est-à-dire qu'il est le même que spring.application.name .
Feign's Timeout
À partir de Spring Cloud Edgware, Feign prend en charge la configuration des délais d'attente avec les propriétés:
Feign: Client: Config: FeignName: ConnectTimeout: 5000 ReadTimeout: 5000
Pour l'ancienne version, vous pouvez écrire feign.Request.Options , reportez-vous à: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions Méthode d'écriture.
Timeout RestTemplate
Parfois, nous pouvons utiliser Rest -mplate, par ex.
@ Bean @ loadBalancedPublic RestTemplate RestTemplate () {return new RestTemplate ();}Pour le moment, le délai d'expiration peut être défini de la manière suivante:
@ Bean @ loadBalancedPublic RestTemplate RestTemplate () {SimpleClientHttpRequestFactory SimpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory (); SimpleClientHttpRequestFactory.SetConnectTimeout (1000); SimpleClientHttpRequestFactory.SetReadTimeout (1000)Timeout de Zuul
Le délai d'expiration de Zuul est plus compliqué car Zuul intègre le ruban et l'hystrix. Voici deux situations:
Si l'itinéraire de Zuul utilise le ruban
Ensuite: le délai d'expiration de Zuul est lié au ruban et à l'hystrice. À l'heure actuelle, le délai d'expiration de Zuul peut être configuré de manière similaire à ce qui suit:
Hystrix: Commande: Par défaut: Exécution: Isolement: Thread: TimeoutinMilliseconds: 1000Ribbon: readtimeout: 1000 connectTimeout: 1000
Analyse du code: Dans ce cas, le filtre utilisé pour le transfert Zuul est org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter , qui intègre l'hystrix et le ruban.
Si l'itinéraire de Zuul n'utilise pas de ruban
Par exemple: la configuration de routage de Zuul est la suivante:
Zuul: Routes: User-Route: # Dans cette méthode de configuration, User-Route donne simplement un nom à l'itinéraire et peut être nommé à volonté. URL: http: // localhost: 8000 / # chemin URL spécifié: / user / ** # le chemin correspondant à l'URL.
Ensuite, le délai d'expiration de Zuul à l'heure actuelle n'est lié qu'aux deux configurations suivantes:
Zuul: Hôte: Socket-Timeout-Millis: 10000 Connect-Timeout-Millis: 2000
Analyse du code: La façon de configurer directement le routage des URL n'est pas utilisée pour le ruban ou l'hystrice. Le filtre utilisé pour le transfert Zuul est org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter . Dans ce filtre, Zuul utilise Apache httpClient pour faire avancer.
Dans les scénarios réels, parfois les deux méthodes de routage peuvent être utilisées en combinaison, il est donc recommandé de configurer tous les attributs ci-dessus.
Hystrix Timeout
Hystrix: Commande: Par défaut: Exécution: Tempsage: Activé: True Isolement: Thread: TimeUtinMillisecondes: 1000
Comme ci-dessus, le délai d'expiration par défaut pour Hystrix est de 1 seconde. Le mécanisme de délai d'expiration est activé par défaut. Pour désactiver le délai d'attente d'Hystrix, définissez xxx.enabled sur false.
Conseils
Si un composant est utilisé avec Hystrix, il est généralement recommandé de délasser Hystrix> d'autres composants, sinon il peut entraîner l'échec de la fonction de réessayer.
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.