2015-06-10 8 views
1

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

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

Мои вопросы:

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

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

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

ответ

1

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

Основные характеристики Hystrix»являются:

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

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

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

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