В чем разница между автоматическим выключателем и переборкой? - PullRequest
1 голос
/ 02 апреля 2020

Можем ли мы использовать их вместе в Spring Boot при разработке микросервиса?

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Да, их можно использовать вместе, но это не всегда необходимо.

  1. Как сказал @tom redfern, автоматический выключатель реализован на стороне вызывающего абонента. Таким образом, если вы отправляете запрос в другую службу, вы должны заключить эти запросы в автоматический выключатель, указанный c для этой службы. Имейте в виду, что каждая сторонняя система или служба должна иметь свой собственный автоматический выключатель. В противном случае недоступность одной системы повлияет на запросы, которые вы отправляете другой, отключив автоматический выключатель.

Более подробную информацию о выключателе можно найти здесь: https://docs.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker

Кроме того, @tom redfern снова прав в случае перебор , это шаблон, который реализован в вызываемой службе. Итак, если вы реагируете на внешние запросы, охватывая другие множественные запросы или рабочие нагрузки, вам следует избегать делать все эти рабочие нагрузки в одном блоке (потоке). Вместо этого разделите рабочие нагрузки на части (пулы потоков) для каждого охватываемого вами запроса.

Дополнительную информацию о переборках можно найти здесь: https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead

Ваш вопрос состоял в том, возможно ли использовать оба этих шаблона в одном микросервисе. Ответ: да, вы можете, и очень часто ситуация подразумевает это.

1 голос
/ 02 апреля 2020

Схема автоматического выключателя реализована на стороне вызывающего, чтобы предотвратить перегрузку нисходящего сервиса, который может испытывать трудности при обработке вызовов. Весенний пример реализации можно найти здесь .

Шаблон переборки реализован на стороне службы, чтобы предотвратить сбой во время обработки одного вызова от вызывающего абонента, влияющий на обработку. других восходящих звонков. Весенний пример реализации можно найти здесь .

Единственное, что объединяет этих шаблонов, это то, что они оба предназначены для улучшения устойчивости распределенного система.

Таким образом, хотя вы, безусловно, можете использовать их вместе в одном сервисе, вы должны понимать, что они не связаны друг с другом, поскольку один связан с выполнением нисходящих вызовов, а другой - с обработкой восходящих вызовов.

...