33
@mouloumouhcine #CircuitBreaker Tolerance au pannes avec le Circuit Breaker Pattern @mouloumouhcine Soat Consultant Scala

Circuit breaker DevoxxFr

Embed Size (px)

Citation preview

Page 1: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Tolerance au pannes avec

le Circuit Breaker Pattern

@mouloumouhcine Soat Consultant Scala

Page 2: Circuit breaker DevoxxFr
Page 3: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1 Service 2

Page 4: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1 Service 2

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

Page 5: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1 Service 2timeout

Page 6: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1 Service 2timeout

Performance

Page 7: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1

Service 3

Service 2

Page 8: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1

Service 3

Service 2

Page 9: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1

Service 3

Service 2

Page 10: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Problème

Service 1

Service 3

Service 2

Cascading Failures

Page 11: Circuit breaker DevoxxFr
Page 12: Circuit breaker DevoxxFr

@YourTwitterHandle@YourTwitterHandle@mouloumouhcine#CircuitBreaker

Solution

Page 13: Circuit breaker DevoxxFr
Page 14: Circuit breaker DevoxxFr

@YourTwitterHandle@YourTwitterHandle@mouloumouhcine#CircuitBreaker

« Let It Crash & Handle with Grace. »

Page 15: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit Breaker

Service 1 Service 2

Page 16: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit Breaker

Service 1 Service 2

Page 17: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit Breaker

Service 1 Service 2Closed

Page 18: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit Breaker

Service 1 Service 2Open

Page 19: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit BreakerClosed

Page 20: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit BreakerClosed Open

Max Failures

Page 21: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit BreakerClosed Open

Half Open

?

Reset Timeout

Max Failures

Page 22: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

Circuit BreakerClosed Open

Half Open

?

Reset TimeoutKO

OK

Max Failures

Page 23: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

// Akka Implementationval breaker: CircuitBreaker = new CircuitBreaker( getContext().dispatcher(), getContext().system().scheduler(), // Scheduler 50, // maxFailures Duration.create(5, "s"), // Call Timeout Duration.create(1, "m") // Reset Timeout)

Exemple

Page 24: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

// Sans Circuit Breaker dangerousCall();

Exemple

Page 25: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

// Avec Circuit Breaker // Appel Scalabreaker.callWithCircuitBreaker( Future{

dangerousCall() }

)

Exemple

Page 26: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

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

Exemple

Page 27: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

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

Exemple

Page 28: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

breaker.onOpen( // …

// … )

Exemple

Page 29: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

breaker.onOpen( // …

// … );

breaker.onClose( // …

// … )

Exemple

Page 30: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

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

Page 31: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

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

Inconvénients• Impossibilité de filtrer les exceptions

Page 32: Circuit breaker DevoxxFr

@mouloumouhcine#CircuitBreaker

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

Inconvénients• Impossibilité de filtrer les exceptions

ESSAYEZ LE !

Page 33: Circuit breaker DevoxxFr

@YourTwitterHandle@YourTwitterHandle@mouloumouhcine#CircuitBreaker