Перейти к содержимому

Как микросервисы находят друг друга, не зная IP-адресов

MOHANED

0:00 / 0:00

Как микросервисы находят друг друга, не зная IP-адресов

25 просмотров · 14 часов назад
MOHANED
415 подписчиков
25 просмотров · 14 часов назад
Обнаружение сервисов позволяет микросервисам находить друг друга даже при исчезновении экземпляров, увеличении масштаба или замене во время развертывания. Я объясняю, как реестры сервисов, балансировка нагрузки и Kubernetes Services обрабатывают изменяющиеся адреса, и почему запросы могут завершаться с ошибкой, даже если обнаружение работает корректно. Я начинаю с простого сервиса Checkout, вызывающего Inventory через фиксированный IP-адрес. Все работает до тех пор, пока развертывание не заменит экземпляр Inventory. Checkout продолжает использовать старый адрес, даже если Inventory исправен и доступны другие экземпляры. Далее я показываю, как обнаружение сервисов решает проблему с адресами. Я объясняю, как Eureka регистрирует экземпляры сервисов, как поддерживаются регистрации и как Spring Cloud LoadBalancer выбирает целевой экземпляр из обнаруженных. Затем я рассматриваю ограничения. Информация об обнаружении может устаревать, клиенты могут кэшировать адреса, которые больше не работают, и зарегистрированный экземпляр не всегда готов к обработке трафика. Я объясняю, почему проверки работоспособности и готовности важны наряду с обнаружением. Я также рассматриваю обнаружение сервисов Kubernetes с использованием DNS, ClusterIP Services и EndpointSlices. Вы увидите, как приложения могут продолжать использовать одно и то же имя сервиса, даже если поды заменяются в процессе поэтапного развертывания, а также как по-разному ведут себя сервисы без графического интерфейса. Наконец, я объясняю, почему обнаружение не исключает сбоев подключения, как помогают корректное завершение работы и тайм-ауты, и почему повторные попытки требуют особого внимания, когда операция резервирует ресурсы или взимает плату с клиента. Именно здесь важна идемпотентность. В заключение я сравниваю нативное обнаружение Kubernetes, обнаружение на основе реестра с помощью Eureka и стабильные обратные прокси или балансировщики нагрузки, чтобы вы могли понять, какой подход подходит для вашей архитектуры. Цель состоит в том, чтобы понять, что на самом деле гарантирует обнаружение сервисов, чего оно не гарантирует и как оно вписывается в надежную связь между бэкэнд-сервисами. Разделы: 00:00 Когда Checkout не может найти товар в наличии 00:24 Почему фиксированные IP-адреса дают сбой 00:54 Как работают реестры служб 01:32 Обнаружение против балансировки нагрузки 02:01 Обработка развертываний с помощью обнаружения 02:28 Устаревшие данные обнаружения и кэширование 03:12 Регистрация против готовности приложения 03:47 Обнаружение служб Kubernetes 04:27 Поэтапное развертывание Kubernetes 04:51 Безголовые службы и сбои подключения 05:25 Безопасные повторные попытки и идемпотентность 05:47 Выбор подхода к обнаружению служб 06:21 Ментальная модель обнаружения служб