Подтвердить что ты не робот

Что такое шаблон переборки, используемый Hystrix?

Hystrix, API Netflix для латентности и отказоустойчивости в сложных распределенных системах использует технологию Bulkhead Pattern для изоляции потоков. Может кто-то прокомментировать его.

4b9b3361

Ответ 1

Общие

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

Реализации шаблона переборки могут принимать разные формы в зависимости от того, какие ошибки вы хотите защитить от системы. Я буду обсуждать только тип ошибок Hystrix в этом ответе.

Я думаю, что образец переборки был популяризирован в книге Release It! Майкл Т. Найгард.

Что разрешает Hystrix

Реализация переборки в Hystrix ограничивает количество одновременных вызовов для компонента. Таким образом, количество ресурсов (обычно потоков), ожидающих ответа от компонента, ограничено.

Предположим, у вас есть многопоточное приложение на основе запросов (например, типичное веб-приложение), которое использует три разных компонента: A, B и C. Если запросы к компоненту C начинают зависать, в конечном итоге все потоки обработки запросов будут зависать, ожидая ответа от C. Это сделало бы приложение полностью невосприимчивым. Если запросы C обрабатываются медленно, у нас есть аналогичная проблема, если загрузка достаточно высокая.

реализация Hystrix шаблона переборки ограничивает количество одновременных вызовов для компонента и в этом случае сохранит приложение. Предположим, что у нас есть 30 потоков обработки запросов, и существует ограничение в 10 одновременных вызовов C. Тогда не более 10 запросов обработки запросов могут зависать при вызове C, остальные 20 потоков могут обрабатывать запросы и использовать компоненты A и B.

Подход Hystrix

Hystrix 'имеет два разных подхода к переборке, изоляции потоков и изоляции семафора.

Изоляция резьбы

Стандартный подход заключается в передаче всех запросов компоненту C в отдельный пул потоков с фиксированным количеством потоков и без очереди (или с небольшим) запросов.

Изоляция семафора

Другой подход заключается в том, чтобы все вызывающие абоненты получили разрешение (с 0 таймаутом) перед запросами на C. Если разрешение не может быть получено из семафора, вызовы C не передаются.

Различия

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