2015-02-05 2 views
4

Существует два подхода, которые могут использоваться для взаимодействия с сервисом при использовании SOA для больших систем, развернутых в облаке, таких как AWS.Обнаружение службы, балансировка нагрузки и подход объединения пулов

  1. Имейте каждый сервисный кластер за внутренним локтем. клиент создает пул соединений с соответствующими elb и elb делает балансировку по кругу.

  2. Идет с подходом к поиску услуг, как netflix eureka.

В настоящее время мы используем 1-й подход, при котором каждый кластер службы позади внутренней УДР и клиенты общаются через СОБ, так что каждый экземпляр клиента должен поддерживать только один пул т.е. с Elb конечной точки.

У меня есть следующие сомнения относительно второго apporach.

  1. Есть ли преимущество при переходе на обнаружение услуг и интеллектуальную клиентскую архитектуру, где клиент обслуживания знает все экземпляры службы (через службу eureka или эквивалент) и выполняет внутреннюю балансировку нагрузки?
  2. В приведенном выше примере как работает объединение пулов? В настоящее время каждый клиентский экземпляр должен поддерживать ровно 1 пул соединений, т. Е. С локтем соответствующей службы. Но с богатым клиентом каждый клиент будет иметь все конечные точки экземпляра службы, с которыми можно напрямую связаться. Соединение по каждому запросу будет неэффективным, и так много пулов подключений (1 для каждого экземпляра службы) для каждого клиента является избыточным я думаю.

Нужна помощь или предложения по двум вышеуказанным вопросам.

ответ

0

Первый вопрос.

Да, есть. Во-первых, вы можете улучшить восстановление отказа - например, повторить неудачные запросы на другой узел без каких-либо ошибок для клиента. Затем вы можете лучше балансировать, чем предлагает ELB. Затем вы можете автоматически добавлять/удалять узлы в/из кластера без изменения конфигурации ELB. Это очень полезно, если ваши узлы имеют healthchecks. Что еще более важно, программный балансиратор может сделать это быстро.

Второй вопрос.

У вас есть пул соединений на узел. то есть [метод api в клиентском коде] -> [балансировка программного обеспечения] -> [пул соединений с узлами] -> [подключение узла] -> [использовать это соединение для запроса]

Смежные вопросы