Comparaison du projet Open Source Sentinel Java Flow Control d'Alibaba et Hystrix

Dans cette série d'articles, nous présenterons le projet open source ** Alibaba ** de contrôle de flux ** Sentinel Java ** en comparaison avec ** Hystrix **.

High Stricks a été très populaire ces dernières années. Maintenant que nous sommes en mode maintenance, beaucoup recherchent des alternatives. Cet article présente Sentinel, un projet de contrôle de flux Java open source. Je vais le présenter en le comparant à Hystrix, qui est familier à plus de gens. Dans cette partie, nous comparerons les deux à un niveau supérieur. La prochaine fois, examinons quelques exemples de code.

image.png

Qu'est-ce que Sentinel?

En termes simples, c'est un disjoncteur. Le disjoncteur est activé lorsqu'une ressource particulière continue de tomber en panne. Au lieu de continuer à frapper des ressources qui sont déjà en panne, le disjoncteur intercepte la demande et renvoie un signal d'échec. Cela ressemble à tous les modèles de disjoncteurs. Cependant, Sentinel offre plus d'options telles que la mise en forme du flux, la protection contre les surcharges et la tolérance aux pannes.

Histoire de Sentinel

--2012: Sentinel a démarré en tant que composant de contrôle de flux d'Alibaba --2013-2017: Avec la croissance spectaculaire des microservices, le défi de la fiabilité viendra. Sentinel se transforme rapidement en un outil pour éviter les catastrophes en cascade. --2018: Sentinel sera open source par Alibaba.

À quoi sert Sentinel?

image.png

--Sential offre de nombreuses options pour gérer le contrôle de flux. Les utilisateurs peuvent façonner le trafic en fonction de QPS, du nombre de pools de threads, de la charge du système et peuvent également utiliser des commandes directement pour arrêter le trafic ou effectuer un démarrage à froid. Les utilisateurs peuvent également utiliser une combinaison de différentes règles. Hystrix n'offre pas de modelage complet du trafic.

image.png

--Sentinal offre une isolation des défauts et un freinage de circuit. Ceci est similaire à Hystrix. Mais ces approches sont différentes. --Sentinal fournit une surveillance en temps réel. Il fournit également un tableau de bord qui regroupe les informations des systèmes distribués.

image.png

Quelle est la différence entre Sentinel et Hystrix?

La principale différence entre les deux est de savoir comment réaliser la séparation. Hystrix utilise généralement des modèles de cloison pour isoler les dépendances. Hystrix place chaque dépendance dans un pool de threads distinct. Le principal avantage de cette méthode est qu'elle permet une coupe nette. L'inconvénient est principalement la surcharge liée à la gestion du pool de threads.

Sentinel, en revanche, utilise un compteur pour chaque dépendance. Cela évite non seulement la surcharge de gestion du pool de threads, mais donne également à l'utilisateur plus de contrôle. Les utilisateurs peuvent désormais déterminer la granularité de la dégradation des flux.

Ce tableau détaille les différences entre Hystrix et Sentinel dans la conception et la mise en œuvre.

image.png

Cela peut sembler un peu écrasant. Cependant, les utilisateurs ne remarqueront pas beaucoup de différence en termes d'expérience utilisateur.

écosystème

Sentinal convient aux environnements cloud natifs. Il peut être intégré à d'autres solutions natives cloud populaires. L'un d'eux est Spring Cloud. Dubbo est un autre cadre de distribution Java populaire en Chine. Sentinal peut également travailler côte à côte avec des solutions de maillage de service telles qu'Istio et Envoy.

Les références

Sentinal sera bientôt publié dans le cadre du framework Spring Boot. Voir leur GitHub repo pour plus d'informations.

Recommended Posts

Comparaison du projet Open Source Sentinel Java Flow Control d'Alibaba et Hystrix
Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler
Comparaison entre Java et Swift (1) Source control / Scope / Variables
Contrôlez le flux de traitement Spring Batch avec JavaConfig.
Gestion des versions Java avec SDKMAN
[Java] Résumé de la syntaxe de contrôle
Comparaison du développement d'applications WEB avec Rails et Java Servlet + JSP