12.Circuit Breaker Pattern - Fault Tolerant Microservices

 

Circuit Breaker Pattern - Fault Tolerant Microservices



අප යවන සෑම request එකකටම backend එකේදී handle වනුයේ thread එකක් හරහා වේ.එනම් request එකක් යැවුවම එකට thread pool එකෙන් thread එකක් assign වෙනවා(thread pool එකේ තියෙන්නට පුළුවන් maximum thread ගණනක් පවතී). ඊට පස්සේ එම thread එකෙන්  තමා එම request එක handle වෙන්නේ.request එක process කරලා client  response එක දුන්නම තමා එම thread එක වෙනත් request එකක් handle වෙන්න free වෙන්නේ.
Microservice වලදී එක microservie එකක සිට තවත් microservie එකක් call වෙනවා.මෙහිදී මූලිකවම ඇති වෙන්න පුළුවන් failures වර්ග දෙකකි.

01. Immediate failure. 

02. Timeout failure.

Immediate failure
Solution  - create multiple instances.




Call කරන service එක down වෙලා නම්, immediate failure එකකි.මෙය try catch හරහා handle easily කරගත හැක.
 
Timeout failure



Call කරන service එකෙන් response එක එන්නේ නැතුව timeout වෙනවා.parallel ව request විශාල ප්‍රමාණයක් එනවා යයි සිතමු.මේ එවන සෑම request එකකටම assign වන thread එක response එකක් එනකල් waiting වෙලා ඉන්නවා.මෙලෙස thread pool එකේ ඇති thread සියල්ලම busy වෙලා තිබ්බොත් අලුත් request වලට assign කරනන් thread නැති නිසා වෙනත් microservice එකක් access කරලා data ලබාගන්න ඕනේ වන request එකක් ආවත් process කරන්න වෙන්නේ නෑ.
Microservices විශාල ප්‍රමාණයක් communicate with each other වන application එකක් සලකමු.Any slowness in the payment service can cause an issue for all other calling services also.
 
 
 
 
 
 
Solving Issues
To solve above problem circuit breaker pattern is used. In here all the request are send through a request interceptor


යම් percentage එකක් දක්වා failure rate එකක් ඇති  වුනොත්,Interceptor එක stop වෙනවා.

යම් time duration එකක් stop stats එකේ wait වෙනවා(timer එකක්).

Timer එක expire උනාට පස්සේ නැවත request කිහිපයකටවිතරක් වලට payment service එක partially allow කරනවා.


IN java there are 2 main project which implement circuit breaker pattern.

Hystrix , Resilience4J




..................................................................




..................................................................



..................................................................



..................................................................


Hystrix

Hysteric is a circuit breaker pattern implementation develop by Netflix.


Comments

Popular posts from this blog

02. Spring – Creating spring project clone it with GIT step by step.

02.What is MicroService?

06.Mongo DB - Query part 2 (Aggregation)