SOA - это набор рекомендаций по архитектуре программного обеспечения высокого уровня.Это не технический стандарт или рекомендация, и он не имеет ничего общего с деталями технической реализации, такими как балансировка нагрузки.
Балансировка нагрузки основана на адресации, которая зависит от технологии доступа к сервису.Системы, встроенные в «SOA-путь», могут использовать различные технологии доступа к сервисам, такие как SOAP (через HTTP, JMS и т. Д.), REST, асинхронные сообщения XML через JMS и т. Д.может найти реестр UDDI, чтобы найти поставщика услуг.Некоторые из последних программных реестров UDDI обеспечивают простое (например, циклическое) распределение нагрузки.Еще одна идея SOAP - использование WS-Addressing, но она не предназначена для балансировки нагрузки.
Я думаю, что в настоящее время лучшим местом для балансировки нагрузки является базовый сетевой транспортный уровень.С помощью транспорта HTTP вы можете выбрать аппаратные или программные (например, модули Apache HTTPD) балансировщики нагрузки, которые могут адаптировать распределение в зависимости от времени отклика и времени ожидания.Благодаря JMS-транспорту наиболее популярные JMS-серверы обеспечивают некоторую форму распределения нагрузки.Другие протоколы, такие как CORBA или Rendezvous, обычно требуют специального решения.
Вы также можете использовать программное обеспечение ESB, например, Oracle Service Bus или TIBCO AMX Service Bus.С помощью ESB вы можете легко создать балансировщик нагрузки для ваших экземпляров службы.Прокси-сервер может быть улучшен с помощью некоторой логики, например, для поиска в таблице базы данных.
Как видите, не существует универсального решения для балансировки нагрузки служб.Оптимальное решение будет основано на фактической архитектуре реализации и рекомендациях поставщиков.