Pull to refresh

Comments 7

Б.Лирическое отступление: для меня долгое время было странным, почему состояние называется OPEN. Ведь логичнее было бы назвать CLOSED или BLOCKED — CB же перекрывает доступ. Но если представить, что CB раскрывается, как зонтик, чтобы защитить сервис, всё встаёт на места. Представьте ассистента HR, который встаёт поперёк двери и раскрывает зонтик перед собой…

какое гуманитарное объяснение :) circuit breaker - это же электрический предохранитель! контакт разомкнут (OPEN) - ток не идёт

Не обязательно именно предохранитель. А вообще любая штука, которая умеет разрывать цель — в том числе, обычный настенный выключатель, с помощью которого включается/выключается свет в комнате.

Если бы автор знал основы электротехники и как изображаются выключатели на схеме цепи, то не удивлялся бы тому, что открытое (OPEN) положение разрывает цепь. Про зонтик забавно, да.

Ох, ну и мешанина. Ну и главное вот тут:

особенно в микросервисных системах.

Представим сервис А, который обращается к сервису Б

При чём здесь микросервисы вообще? Или разъясните что вы подразумеваете вод словом “сервис”? Иначе, возникает ощущение, что вы смешали в кучу все разношёрстные знания и с уверенностью в понимании вопроса написали с помощью LLM сей пассаж.

спасибо за вопрос, здесь под сервисом имеем ввиду микросервис

Я ведь не просто так спросил. Дело в том, что если ваши микросервисы общаются напрямую друг с другом - это уже не микросервисы, а распределённый монолит. И я здесь не придираюсь к формулировкам, а имею в виду фундаментальные отличия и ошибки. Микросервисы же друг с другом общаться не должны, и это уже давно всё пережёвано. Для этого существуют различные подходы и паттерны, в том числе оркестрация и событийная модель. И всё это прикрыто observability, которое позволяет контролировать состояние системы и не допускать каскадных падений. В случае распределённого монолита, когда сервисы общаются друг с другом напрямую или даже через некого посредника, применяя Circuit Breaker - создаёт лишь иллюзию надёжности. Почитайте об этом, про это много уже написано и много шишек набито. Я не буду тут писать целую статью. Успехов!

504 — это Gateway Timeout от прокси или от самого сервиса(но он должен нам ответить в этом случае), а клиентский таймаут к сервису Б — обычно SocketTimeoutException, не HTTP-код. По-хорошему нужно отлавливать и то, и другое.
Но конкретно SocketTimeoutException в большей мере показывает недоступность внешних систем из сервиса

Уважаемый(е) автор(ы)!

Когда готовите текст статьи с помощью LLM, перечитывайте, пожалуйста, что она понаписала.

Сервис «Портал» — получает информацию о наличии отпусков

Сервис «Отпусков» — два разных микросервиса, взаимодействующие через REST API

Ну хреново же сформулировано.

Sign up to leave a comment.

Articles