Следует ли Hystrix заменить существующие пулы соединений JDBC/HTTP или делегировать им полномочия?

Многие приложения используют пулы соединений для вызовов HTTP и JDBC для обеспечения отказоустойчивости. Но использование и настройка этих двух типов пулов очень разные. Это дублирует сложность реализации общих шаблонов отказоустойчивости, таких как тайм-ауты, повторные попытки, резервные копии кэширования/оповещения, разрыв цепи и мониторинг.

На мой взгляд, Hystrix предлагает общие подходы к настройке и реализации одних и тех же шаблонов устойчивости для вызовов HTTP и JDBC.

Мои вопросы:

  1. Может ли Hystrix теоретически полностью заменить существующие пулы соединений HTTP и JDBC?
  2. Если да, то каковы плюсы и минусы этого?

Их замена полностью уменьшает мир сложности, который окружает эти пулы соединений — с их сопровождающим тайм-аутом и свойствами запроса проверки и т. д. Однако я туманно представляю, как Hystrix может «поддерживать живые» соединения JDBC/HTTP — и, следовательно, избегать дорогостоящих затрат на установку соединения — без делегирование существующим библиотекам, специализирующимся на этих задачах.

Для контекста у меня есть приложение DropWizard, которое использует Tomcat DBCP для своего пула соединений JDBC и Apache HttpClient для своих пулов соединений HTTP.


person user1305156    schedule 10.06.2015    source источник


Ответы (1)


Нет, Hystrix не может заменить ваши пулы соединений.

Основные особенности Hystrix:

  1. Ограничение количества вызовов службы с помощью ограниченного пула потоков или семафоров.
  2. Возможность тайм-аута вызовов службы, чтобы избежать блокировки потоков приложений в ожидании медленных/зависших служб.
  3. Добавление переборок, чтобы один медленный сервис минимально влиял на остальное приложение.
  4. Размыкание цепи медленных/зависших служб.

Нет поддержки объединения соединений.

Я думаю, вы можете возразить, что первый пункт в некоторой степени связан с пулом соединений, поскольку и Hystrix, и пул соединений могут ограничивать нагрузку на другую систему. Однако основной причиной наличия пула соединений является прирост производительности соединения пула. Такое поведение ограничения нагрузки, по сути, является бонусом пула соединений.

Однако Hystrix может дополнить пулы соединений, предоставив отказоустойчивое поведение тайм-аута и переборки, если они будут добавлены перед вашими пулами соединений, как вы предлагаете в своем вопросе.

person K Erlandsson    schedule 21.06.2015