Vous êtes sur la page 1sur 10

Application: Angular

TP3 part 5

Pr. HACHCHANE 1
Resilience4j
Resilience4j est une bibliothèque Java conçue pour renforcer la résilience des applications Java. Elle propose
plusieurs composants légers, de style fonctionnel et modulaires pour aider les développeurs à construire des
systèmes robustes et tolérants aux erreurs.

Les fonctionnalités clés et les composants de Resilience4j incluent :


• Circuit Breaker (tolérance aux pannes)
• Rate Limiter (bloquer les requêtes trop fréquentes)
• Time Limiter (Définir une limite de temps lors de l'appel à une opération à distance)
• Retry mechanism (Réessayer automatiquement une opération à distance échouée)
• Bulkhead (Éviter trop de requêtes concurrentes)
• Cache (Stocker les résultats d'opérations à distance coûteuses)

Pr. HACHCHANE 2
Resilience4j

Circuit Breaker :
Resilience4j inclut un modèle de circuit breaker qui aide à prévenir la surcharge du système et à améliorer la
tolérance aux erreurs. Il surveille les échecs et ouvre le circuit lorsque le taux d'échec dépasse un seuil défini,
empêchant ainsi d'autres appels à l'opération défaillante.

Order inventory
Service Service

• Le Circuit Breaker surveille l'état des appels à une ressource distante (service, API, base de données, etc.).
• Lorsqu'un certain nombre d'échecs consécutifs est atteint, le Circuit Breaker se déclenche et "ouvre" le circuit,
empêchant ainsi tout nouvel appel à la ressource.

Pr. HACHCHANE 3
Resilience4j

États du Circuit Breaker :


• Fermé (Closed) : Dans cet état, le Circuit Breaker autorise les appels normaux à la ressource. Il surveille
les erreurs, et s'il constate un taux d'échec élevé, il bascule vers l'état "ouvert".
• Ouvert (Open) : Lorsque le Circuit Breaker est ouvert, il bloque tous les appels à la ressource, empêchant
ainsi de nouvelles demandes. À ce stade, il peut afficher un message d'erreur ou exécuter une
alternative prévue.
• À moitié ouvert (Half-Open) : Après un certain temps, le Circuit Breaker peut passer à l'état à moitié
ouvert et permettre un nombre limité de demandes pour déterminer si la ressource est à nouveau
disponible.

closed Open

Half
Open

Pr. HACHCHANE 4
Application: Resilience4j
Ajouter la dependance
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>

Ajouter la configuration suivante dans order-service.properties dans config-repo

Pr. HACHCHANE 5
Application: Resilience4j
Ajouter la dependance
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>

Ajouter la configuration suivante dans order-service.properties dans config-repo


spring.datasource.url=jdbc:h2:mem:orders-db
management.health.circuitbreakers.enabled=true
management.endpoint.health.show-details=always

#Resilinece4j Properties
resilience4j.circuitbreaker.instances.inventory.registerHealthIndicator=true
resilience4j.circuitbreaker.instances.inventory.event-consumer-buffer-size=10
resilience4j.circuitbreaker.instances.inventory.slidingWindowType=COUNT_BASED
resilience4j.circuitbreaker.instances.inventory.slidingWindowSize=5
resilience4j.circuitbreaker.instances.inventory.failureRateThreshold=50
resilience4j.circuitbreaker.instances.inventory.waitDurationInOpenState=5s
resilience4j.circuitbreaker.instances.inventory.permittedNumber0fCallsInHalfOpenState=3
resilience4j.circuitbreaker.instances.inventory.automaticTransitionFromOpenToHalfOpenEnabled=true

Pr. HACHCHANE 6
Application: Resilience4j
Modifier OrderRestController

Pr. HACHCHANE 7
Application: Resilience4j
Modifier OrderRestController
http://localhost:9999/order-service/actuator/health

Pour l’instant le circuitBreaker est Closed

Pr. HACHCHANE 8
http://localhost:9999/order-service/fullOrder/2
Application: Resilience4j

Notre microservice marche correctement

Pr. HACHCHANE 9
Application: Resilience4j http://localhost:9999/order-service/fullOrder/2
Arretez inventory-service.
On a reçu le retour du Fallback method

Pr. HACHCHANE 10

Vous aimerez peut-être aussi