В настоящее время у меня есть один экземпляр приложения, развернутого в Европе. Он предоставляет некоторые функции через веб-службы (SOAP). Есть много клиентов (несколько тысяч), которые используют его во всем мире (в основном в Северной Америке, Европе и Азии). В текущей настройке некоторые из клиентов должны сделать WS-вызов для приложения, развернутого на другом континенте, что значительно увеличивает время отклика. О характере вызовов - полезная нагрузка небольшая, но вызовы выполняются часто.Как масштабировать такую систему?
Теперь моя идея - просто развернуть больше экземпляров приложения, чтобы в каждой области геоданных было одно. Но тогда возникает проблема загрузки балансировки/загрузки распределенных запросов по разным экземплярам.
Подход №1.
В начале я думал о некоторой балансировке нагрузки на уровне HTTP - иметь один хост, который предоставляет одни и те же методы WS и просто делегирует их другим экземплярам приложений. Но я думаю, что в этом решении я бы ничего не получил с точки зрения времени передачи - весь запрос должен был бы отправиться в одно центральное место, а затем в пункт назначения. Таким образом, маршрут пакетов будет еще длиннее, чем с одним экземпляром.
Подход №2.
Тогда я подумал о балансировке нагрузки на уровне DNS. DNS-поиск должен быть выполнен в любом случае, и если возвращаемый IP-адрес может указывать на закрывающий гео-локальный экземпляр, который бы он был! Но это решение кажется более сложным, потому что мне придется развернуть новую систему DNS (или просто настроить ту, которую использует моя компания, если она поддерживает что-то вроде этого). Также быстрый поиск в google показал в основном коммерческие балансиры нагрузки на основе DNS.
Вопросы Я хотел бы некоторую помощь с ответом являются:
1) Разве я пропустил что-нибудь в любом из перечисленных выше 2 подходов?
2) Есть ли лучший подход к этой проблеме и что это может быть точно?