Зачем нужен service discovery в системе из многих сервисов?
- Зачем сервисам реестр?
Сервисы обращаются друг к другу по логическому имени, а не по жёстким адресам, которые меняются при каждом развёртывании и масштабировании.
- Экземпляры регистрируются в реестре и шлют heartbeat
- Eureka, Consul — или встроенный discovery Kubernetes (Service и DNS)
- Вместе с discovery — клиентская или серверная балансировка
А ещё В Kubernetes отдельный реестр обычно не нужен
Подробно
В динамической среде экземпляры появляются и исчезают постоянно: автоскейл добавил под, выкатка заменила старый, узел упал. Прописать адреса в конфигурации невозможно — они устареют к следующему релизу. Реестр хранит актуальный список работающих экземпляров, а клиент запрашивает адрес по имени сервиса и заодно получает возможность балансировать нагрузку между экземплярами. Хранение настроек и ограничение частоты запросов — задачи других компонентов.
Что хотят услышать
- Зачем нужен discovery.
Частые ошибки
- Прописывать адреса экземпляров в конфигурации.
- Путать реестр сервисов с сервером конфигурации.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Чтобы шифровать весь трафик между сервисами без настройки сертификатов
- ✗Чтобы хранить общую конфигурацию всех сервисов в одном месте и раздавать её
- ✓Чтобы сервисы находили друг друга по имени, а не по адресам
- ✗Чтобы ограничивать частоту запросов между сервисами и защищать их от перегрузки
Что спросят дальше
- Как экземпляр исключается из реестра при отказе?
- Чем шлюз отличается от реестра сервисов?
Разбор темы
- Spring Cloud: config, discovery, gateway, tracing
Config Server, Eureka/DiscoveryClient, Spring Cloud Gateway и распределённая трассировка.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.