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
Post a Comment