В завершение про каскадные сбои. В микросервисной архитектуре нужно подготовить свои сервисы сбоить быстро и раздельно. Быстрый сбой компонентов нужен потому, что мы не хотим ждать, пока закончатся таймауты сломанных инстансов. Ничто так не раздражает, как зависший запрос и не отвечающий на ваши действия интерфейс. Это не только потерянные ресурсы, но и испорченный пользовательский опыт. Сервисы вызывают друг друга по цепочке, поэтому нужно уделять особое внимание предотвращению повисания операций, не допуская накопления задержек. Применение парадигмы «быстрого сбоя» в микросервисах посредством таймаутов является антипаттерном Небольшой список fail fast (выбросить ошибку как можно раньше) подходов: - Лимит на объемы любых запрашиваемых клиентом данных - Обязательный таймаут на все удаленные операции - Для баз данных и на клиенте и на сервере, т.к прерванный запрос может продолжать выполнение - Ограничение частоты обращений к серверу, а после превышения - 429 error code - Ограничение количества открываемых входящих / исходящих соединений - Ограничение размера задействованных пулов потоков под каждый тип операций - Валидация аргументов запроса к сервису на стороне клиента (запрос все равно будет отвергнут, но мы сохраним время на удаленных вызов и пропускную способность сети) Дополняйте в комментариях :)