Circuit breaker YoungBlood @Paris Jug

32
LE CIRCUIT BREAKER PATTERN Tolérance Aux Pannes Avec 1

Transcript of Circuit breaker YoungBlood @Paris Jug

Page 1: Circuit breaker YoungBlood  @Paris Jug

LE CIRCUIT BREAKER PATTERN

Tolérance Aux PannesAvec

1

Page 2: Circuit breaker YoungBlood  @Paris Jug

 Mouhcine Moulou 

@mouloumouhcine

Consultant Scala

2

Page 3: Circuit breaker YoungBlood  @Paris Jug

3

Page 4: Circuit breaker YoungBlood  @Paris Jug

Service 1 Service 2

PROBLÈME

4

Page 5: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1 Service 2

Gaspillage des Resources VM (Thread, Mémoire, etc.)

5

Page 6: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1 Service 2timeout

6

Page 7: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1 Service 2timeout

7

Performance

Page 8: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1

Service 3

Service 2

8

Page 9: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1

Service 3

Service 2

9

Page 10: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1

Service 3

Service 2

10

Page 11: Circuit breaker YoungBlood  @Paris Jug

PROBLÈME

Service 1

Service 3

Service 2

11

Page 12: Circuit breaker YoungBlood  @Paris Jug

CASCADING FAILURES

12

Page 13: Circuit breaker YoungBlood  @Paris Jug

SOLUTION

13

Page 14: Circuit breaker YoungBlood  @Paris Jug

SOLUTION

14

Page 15: Circuit breaker YoungBlood  @Paris Jug

« Let It Crash & Handle with Grace. »

15

Page 16: Circuit breaker YoungBlood  @Paris Jug

Service 1 Service 2

CIRCUIT BREAKER

16

Page 17: Circuit breaker YoungBlood  @Paris Jug

Service 1 Service 2

CIRCUIT BREAKER

17

Page 18: Circuit breaker YoungBlood  @Paris Jug

Service 1 Service 2

CIRCUIT BREAKER

Closed

18

Page 19: Circuit breaker YoungBlood  @Paris Jug

Service 1 Service 2

CIRCUIT BREAKER

Open

19

Page 20: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

Closed

20

Page 21: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

Closed Open

Max Failures

21

Page 22: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

Closed Open

Half Open

?

Reset Timeout

Max Failures

22

Page 23: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

Closed Open

Half Open

?

Reset TimeoutKO

OK

Max Failures

23

Page 24: Circuit breaker YoungBlood  @Paris Jug

EXEMPLE (AKKA IMPLEMENTATION)

CircuitBreaker breaker = new CircuitBreaker( getContext().dispatcher(), // L'actor System getContext().system().scheduler(), // Scheduler 50, // maxFailures Duration.create(10, "s"), // Call Timeout Duration.create(1, "m") // Reset Timeout);

24

Page 25: Circuit breaker YoungBlood  @Paris Jug

EXEMPLE (AKKA IMPLEMENTATION)

// Sans Circuit Breaker return dangerousCall();

25

Page 26: Circuit breaker YoungBlood  @Paris Jug

EXEMPLE (AKKA IMPLEMENTATION)

// Callable new Callable<String>() { public String call() throws Exception { return dangerousCall(); } }

26

Page 27: Circuit breaker YoungBlood  @Paris Jug

EXEMPLE (AKKA IMPLEMENTATION)

// Avec Circuit Breaker // Appel Javabreaker.callWithSyncCircuitBreaker( new Callable<String>() { public String call() throws Exception { return dangerousCall(); } });

27

Page 28: Circuit breaker YoungBlood  @Paris Jug

EXEMPLE (AKKA IMPLEMENTATION)

// Avec Circuit Breaker // Appel Scalabreaker.callWithCircuitBreaker( Future( dangerousCall()))

28

Page 29: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

29

Avantages•Réponse rapide.•Meilleur utilisation des resources.•Cascading failures.•Monitoring.

Page 30: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

30

Avantages•Réponse rapide.•Meilleur utilisation des resources.•Cascading failures.•Monitoring.

Inconvénients• Impossibilité de filtrer les exceptions

Page 31: Circuit breaker YoungBlood  @Paris Jug

CIRCUIT BREAKER

31

ESSAYEZ LE !

Avantages•Réponse rapide.•Meilleur utilisation des resources.•Cascading failures.•Monitoring.

Inconvénients• Impossibilité de filtrer les exceptions

Page 32: Circuit breaker YoungBlood  @Paris Jug

32