DOI: https://doi.org/10.20998/2522-9052.2018.4.13

Circuit Breaker у системах, що базуються на мікросервісній архітектурі

Heorhii Molchanov, Anatolii Zhmaiev

Анотація


Предмет статті – дослідження можливості використання паттерну Circuit Breaker у системах, що базуються на мікросервісній архітектурі. Метою є аналіз переваг та недоліків паттерну Circuit Breaker для мікросервісів. Результати. Спосіб застосування Circuit Breaker полягає в наступному: припускаємо, що гучність в ланцюзі відповідає певному порогу; якщо відсоток помилок перевищує відсоток порогової помилки, то автоматичний вимикач переходить із замкнутого в розімкнутий режим. Поки він розімкнутий, він замикає всі запити, зроблені до цього автоматичного вимикача. Через деякий час наступний одиночний повторний квест пропускається (це напіввідкритий стан). Якщо запит не виконується, автоматичний вимикач вертається в розімкнутий стан на час очікування. Якщо запит виконується успішно, то автоматичний вимикач переходить в замкнутий режим. Висновок. Досліджена та обґрунтована можливість використання паттерну Circuit Breaker при розробці програмних комплексів з використанням мікросервісної архітектури. Цей паттерн є надзвичайно важливим для забезпечення надійності, легкості доступу та гнучкості мікросервісів, що розробляються. Важливо, що це структурний паттерн, адже він не впливає на функціональні можливості, що надають сервіси. Відповідно до своєї природи він дозволяє досягти багаторазового використання завдяки параметризації. В той же час, це робить MSA більш складною, а комунікаційні структури, які будуть введені до системи, можуть підлягати деяким змінам. Це свідчить про те, що, обираючи методи програмування та перевірки комунікацій між сервісами, на етапі дизайну рішення необхідно брати до уваги, що використовується саме такий паттерн, як Crcuit Breaker.


Ключові слова


мікросервіс; Circuit Breaker; Hystrix, програмне забезпечення; апаратне забезпечення

Повний текст:

PDF (English)

Посилання


Lightbend. Akka's Circuit Breaker Pattern (2018), vailable at: http://doc.akka.io/docs (last accessed August 20, 2018).

Netflix Hystrix (2018), available at: https://github.com/Netflix/Hystrix/wiki/How-it-Works (last accessed August 21, 2018).

Martin Fowler. Circuit Breaker (2018), available at: https://martinfowler.com/bliki/CircuitBreaker.html

(last accessed August 21, 2018).

Michael T. Nygard (2007), Release It! , 326 p., ISBN: 978-0-9787-3921-8.

Cloud design patterns by Microsoft (2018), available at: https://docs.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker (last accessed August 30, 2018).

Sam, Newman (2015), Building Microservices, O'Reilly Media, Inc., 282 p.

Matthias, K. and Kane, S.P. (2015), Docker: Up & Running, O'Reilly Media, Inc., 230 p.

Nicola, Dragoni, Saverio, Giallorenzo, Alberto, Lluch-Lafuente, Manuel, Mazzara, Fabrizio, Montesi, Ruslan, Mustafin and Larisa, Safina (2016), Microservices: yesterday, today, and tomorrow. CoRR, abs/1606.04036, 322 p..

Fowler, M. and Lewis J. (2014), Microservices, ThoughtWorks, 185 p.

Little M. SOA versus microservices? (2018), available at:

http://www.infoq.com/news/2015/02/special-microservices-mark-litle (last accessed at August 21, 2018).

Hystrix and resilience (2018), available at: http://callistaenterprise.se/blogg/teknik/2017/09/11/go-blog-series-part11/ (last accessed August 21, 2018).

Gentle introduction to Hystrix (2018), available at: https://dzone.com/articles/gentle-introduction-to-hystrix-hello-world

(last accessed August 21, 2018).

Structural design patterns (2018), available at: https://sourcemaking.com/design_patterns/structural_patterns

(last accessed August 21, 2018).




Copyright (c) 2020 Heorhii Molchanov, Anatolii Zhmaiev