Maison >Java >javaDidacticiel >Disjoncteur de service et rétrogradation sous l'architecture de microservice Spring Cloud
Avec le développement rapide d'Internet, de plus en plus d'entreprises doivent prendre en charge une concurrence élevée, une haute disponibilité et des performances élevées, ce qui pose de nouveaux défis aux architectures monolithiques traditionnelles et aux méthodes de stockage de bases de données. L'architecture des microservices résout de nombreux problèmes rencontrés par l'architecture monolithique traditionnelle dans un environnement distribué en divisant le système en plusieurs petits services indépendants.
Dans l'architecture des microservices, chaque unité fonctionnelle est un service indépendant et les services s'appellent de différentes manières. Il est inévitable de faire face à des problèmes tels que des exceptions et des pannes entre services. En réponse à cette situation, nous devons introduire certains mécanismes pour assurer la disponibilité et la stabilité du système, y compris l'interruption et la dégradation du service.
Le disjoncteur de service est un mécanisme courant de tolérance aux pannes. Lorsque le taux d'erreur d'un service dépasse un certain seuil, le disjoncteur s'ouvre, déconnectant les appels mutuels entre les services et renvoyant une réponse par défaut prédéfinie.
Les circuits peuvent gérer efficacement des situations anormales dans un court laps de temps, empêcher la transmission de réponses incorrectes au système en amont, éviter que les systèmes en amont et en aval ne s'entraînent vers le bas et améliorer la disponibilité de l'ensemble du système. Généralement, le disjoncteur de service peut être obtenu via Hystrix fourni avec Spring Cloud.
Étapes pour utiliser Hystrix :
1.Introduire la dépendance Hystrix
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
2.Ajouter l'annotation @EnableCircuitBreaker sur la classe principale
@SpringBootApplication @EnableDiscoveryClient @EnableCircuitBreaker public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
3.Utiliser l'annotation @HystrixCommand pour la rétrogradation du service et le traitement du disjoncteur
@HystrixCommand(fallbackMethod = "defaultProcess") public String process(String data) { // 服务调用 } public String defaultProcess(String data) { // 熔断和降级处理 }
En raison de La réponse par défaut à l'interruption du service peut ne pas correspondre au scénario commercial réel. Nous devons également introduire un mécanisme de dégradation du service. Lorsque le service rencontre une exception ou est interrompu, la réponse par défaut prédéfinie est renvoyée au lieu de lancer une exception ou de renvoyer une réponse. résultat d'erreur.
Lorsque les services sont déclassés, les stratégies de traitement correspondantes doivent être formulées en fonction des besoins réels de l'entreprise. Par exemple, les données mises en cache, les valeurs par défaut, les invites d'exception, etc. peuvent être renvoyées lorsque les services sont rétrogradés afin de minimiser l'impact sur les utilisateurs.
Les étapes pour mettre en œuvre une rétrogradation de service à l'aide de Spring Cloud sont similaires à celles du disjoncteur de service. Vous devez utiliser l'annotation @HystrixCommand dans la classe de ressources et spécifier la méthode correspondant à l'attribut fallbackMethod pour implémenter la dégradation du service.
@HystrixCommand(fallbackMethod = "defaultGetData") public String getData(String id) { // 服务调用 } public String defaultGetData(String id) { // 服务降级处理 }
En bref, dans l'architecture des microservices, les mécanismes de disjoncteur et de rétrogradation sont des mécanismes de tolérance aux pannes très importants que Spring Cloud fournit à Hystrix pour prendre en charge ce mécanisme. Lorsque nous sommes confrontés à des pannes ou à des anomalies de service, nous devons effectuer un traitement de disjoncteur et de déclassement en temps opportun pour éviter la propagation des pannes, garantissant ainsi la disponibilité et la robustesse du système.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!