Как микросервисы находят друг друга, не зная 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 Ментальная модель обнаружения служб