1. Fusible Hystrix
1.1 Introduction
Hystrix
signifie porc-épic en anglais. Son
logo
est un porc-épic dans l'image ci-dessous. C'est un groupe qui fournit des mécanismes de protection dans le système de microservices.
Le
logiciel
, comme
eureka , est également développé par la société
netflflix
.
Page d'accueil:
https://github.com/Netflflix/Hystrix/
Alors,
quel est le rôle d'
Hystrix
? Que devons-nous protéger?
Hystrix
est
une bibliothèque ouverte aux délais et tolérante aux pannes provenant de
Netflflix
, utilisée pour isoler l'accès aux services distants et aux bibliothèques tierces afin d'éviter les pannes en cascade .
2.2. Problème d'avalanche
Dans les microservices, la relation d'appel entre les services est complexe et compliquée. Une demande peut nécessiter d'appeler plusieurs interfaces de microservices à implémenter, ce qui formera une chaîne d'appels très complexe.
route:
Comme le montre la figure, une demande commerciale doit appeler
quatre services
A
,
P
,
H
,
I
, et ces quatre services peuvent appeler d'autres services.
Si à ce moment, un service est anormal:
![](https://img-blog.csdnimg.cn/20201102095045342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NTYmFuZGlhbkg=,size_16,color_FFFFFF,t_70)
Par exemple:
micro-services
Je
demande une obstruction anormale, les demandes des utilisateurs n'obtiendront pas de réponse, le
matou
de ce fil ne libère pas, donc de plus en plus
Lorsque les demandes des utilisateurs arrivent, de plus en plus de threads bloquent:
Le nombre de threads et la concurrence pris en charge par le serveur sont limités et la demande est toujours bloquée, ce qui entraînera l'épuisement des ressources du serveur, ce qui entraînera l'indisponibilité de tous les autres services, entraînant un effet d'avalanche. C'est comme une ligne de production automobile qui produit différentes voitures et a besoin de différentes pièces. Si une pièce ne peut pas être utilisée pour diverses raisons, la voiture entière sera incapable de s'assembler et tombera dans un état d'attente pour les pièces jusqu'à ce que les pièces soient en place Continuez à assembler.
À ce stade, s'il existe de nombreux modèles qui nécessitent cette pièce, toute l'usine sera en état d'attente, provoquant la paralysie de toute la production. La portée d'une pièce est en constante expansion.
La
solution d' Hystrix au
problème d'avalanche est principalement la dégradation du service, notamment:
Isolation des fils
Service de fusion
3.3. Isolation des threads et dégradation du service
3.3.1. Principe
Schéma de principe de l'isolation des fils:
![](https://img-blog.csdnimg.cn/20201102095327722.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NTYmFuZGlhbkg=,size_16,color_FFFFFF,t_70)
Interprétation:
Hystrix
alloue un petit pool de threads pour chaque appel de service dépendant. Si le pool de threads est plein, l'appel sera rejeté immédiatement. Par défaut, la mise en file d'attente n'est pas utilisée pour
accélérer le
temps de détermination des échecs
.
La demande de l'utilisateur n'accédera plus directement au service, mais via des threads inactifs dans le pool pour accéder au service, si
le pool de threads est plein
ou
demande au fil du
temps
, il sera rétrogradé, qu'est-ce que la dégradation du service?
Dégradation du service: la priorité est donnée à la garantie que les services de base ne sont pas disponibles ou faiblement disponibles.
Lorsque la demande de l'utilisateur échoue, elle ne sera pas bloquée, elle n'attendra pas indéfiniment ou ne verra pas le plantage du système, au moins un résultat d'exécution (tel que le retour d'un message d'invite convivial) peut être vu.
Bien que cela conduise à l'échec de la demande de dégradation du service, mais ne provoque pas d'obstruction, mais que la plupart affectera les ressources du pool de threads des services dépendants correspondants, l'autre service de
service ne répond pas.
Conditions qui déclenchent le déclassement des services
Hystrix
:
Le pool de threads est plein
La demande a expiré