Circuit Break Pattern

При використанні мікросервісної архітектури потрібно вирішити питання міжпроцесної взаємодії (IPC). На даний момент мені відомо два варіанти: посилка повідомлень (messaging) та виклик віддалених процедур (RMI). Кожен з них має свої плюси та мінуси.

Проте мова тут не про це, а про поширену проблему комунікації між сервісами зумовленну виходом з ладу одного з сервісів. Процес докладно описаний в книзі Michael Nygard "Release It!". Автор докладно розповідає з якими проблемами може зіткнутися компанія при блокуванні серверних процесів на очікуванні відповіді від непрацюючого сервіса.

В цій же книзі автор наводить опис Circuit Breaker патерна (CBP). Ідея полягає в аналогії з електричним ланцюгом. Ми маємо своєрідний проксі об’єкт перемикач. У випадку коли кількість помилок при зверненні до віддаленого сервісу зростає і переходить певну межу, перемикач блокує наступні з’єднання протягом певного періоду часу. Така техніка допомогає уникнути блокування та каскадний помилок.

Ьільше інформації можна отримати на сайті Мартіна Фовлера. Реалізацію на Python можна подивитися тут.

Думаю також варто згадати проект Netflix Hystix для складних архітектур.

Comments

Popular posts from this blog

Install Kubeflow locally

RabbitMQ and OpenShift