Я вижу два основных отличия обнаружения сервисов с помощью таких инструментов, как Eureka, Istio или AWS ELB
Используя AWS ELB, вы являетесь зависимой или облачной реализацией или облачным провайдером.
Ваше развертывание теперь связано с предоставлением Cloud. Теперь, если в будущем вам придется сменить облако (скажем, по какой-то причине вы хотите перейти на Azure), миграция потребует дополнительных усилий, поскольку вам нужно будет настроить часть обнаружения облачного сервиса в новом облаке. Но в случае непосредственного использования Eureka или istio вам просто нужно развернуть свои артефакты и соответствующую конфигурацию на новой облачной платформе.
Второе различие заключается в том, как внутренне клиент может обнаружить целевые службы.
Существует два шаблона для обнаружения служб:
Eureka, Istio is Обнаружение службы на стороне клиента
Клиент обращается непосредственно к реестру службы и получает полный адрес (хост и порт) службы, которая будет вызвана. Таким образом, в конце концов, клиент знает хост и порт службы, а клиент - это тот, кто делает окончательный запрос к целевой службе, поэтому это называется обнаружением на стороне клиента.
AWS ELB - обнаружение службы на стороне сервера
Клиент общается с балансировщиком нагрузки (или маршрутизатором). Маршрутизатор внутренне обнаруживает адрес службы через реестр служб, а затем выполняет дальнейший вызов целевой службы.
Большая разница -
- Клиент никогда не узнал адрес целевой службы, или клиенту никогда не нужно было знать детали целевой службы.
- Код клиента становится проще, так как он не должен иметь дело с обнаружением службы.