Короткий ответ
Service discovery — механизм, с помощью которого сервис находит актуальный сетевой адрес другого сервиса, не используя захардкоженный IP, так как адреса инстансов могут меняться.
Как это работает подробнее
Сервис регистрируется в реестре (Consul, Kubernetes Service, Eureka) при старте; вызывающий сервис запрашивает реестр (или DNS) и получает текущий адрес/список адресов.
Пример кода
example.py
response = httpx.get("http://payment-service.default.svc.cluster.local/charge")Что использовать на практике
- Практика. В Kubernetes это часто просто DNS-имя Service, которое резолвится в текущие адреса подов через внутренний DNS; реестр избавляет от необходимости вручную обновлять конфигурацию при масштабировании.
Подводные камни
- Риск. Захардкоживать IP-адреса инстансов в конфигурации — при пересоздании подов адреса меняются, и обращения начинают идти «в никуда».