Обмен технологиями

Введение в «Механизм обнаружения сервисов» в микросервисах

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

  • Механизм обнаружения сервисов микросервисов — это метод динамического поиска экземпляров сервисов для связи в архитектуре микросервисов.

  • В основном он полагается на центр регистрации для реализации регистрации услуг, запросов и поддержки балансировки нагрузки, тем самым улучшая масштабируемость и гибкость системы.

1. Основные понятия

Обнаружение сервисов относится к процессу автоматического обнаружения и идентификации доступных сервисов в распределенной системе.

В архитектуре микросервисов, поскольку сервисы разделены на несколько небольших и автономных сервисов, разбросанных по разным серверам, для обеспечения эффективного взаимодействия между сервисами требуется механизм обнаружения сервисов.

2. Основные шаги

  • Регистрация услуги

    • При запуске экземпляра микросервиса он регистрирует информацию о своем сетевом расположении (например, IP-адрес и номер порта) и идентификатор службы в центре регистрации служб.
    • Этот процесс регистрации обычно происходит автоматически и не требует вмешательства человека.
    • Центр регистрации отвечает за хранение регистрационной информации всех экземпляров службы и поддержку динамической регистрации и отмены регистрации экземпляров службы.
  • Запрос на обслуживание

    • Когда микросервису необходимо вызвать другой микросервис, он запрашивает в реестре сервиса доступный в данный момент сетевой адрес требуемого сервиса.
    • Центр регистрации возвращает список адресов экземпляров службы, и вызывающая сторона может выбрать экземпляр службы для связи в соответствии с политикой балансировки нагрузки.

3. Ключевые компоненты

  • Реестр услуг

    • Это основной компонент механизма обнаружения служб, который отвечает за управление и хранение регистрационной информации всех экземпляров службы.
    • Он предоставляет интерфейсы API для экземпляров службы для регистрации и отмены операций, а также поддерживает потребителей служб для запроса регистрационной информации экземпляров службы.
  • Поставщик услуг

    • Это экземпляр микросервиса, предоставляющий конкретную услугу.
    • Он зарегистрирует свою собственную информацию о службе в реестре служб при запуске и отменит регистрацию своей собственной информации о службе при выходе.
  • Потребитель услуг

    • Это экземпляр микросервиса, которому необходимо вызывать другие сервисы.
    • Он получает сетевой адрес требуемой службы путем запроса реестра служб и устанавливает с ним связь.

4. Как реализовать механизм обнаружения сервисов

Механизм обнаружения сервисов можно разделить на два типа: обнаружение клиента и обнаружение сервера в зависимости от метода реализации:

  • режим обнаружения клиента

    • Клиент отвечает за обращение к центру регистрации, получение списка доступных сервисов и непосредственное взаимодействие с экземплярами сервисов в соответствии с политикой балансировки нагрузки.
    • Преимущество заключается в том, что клиент может гибко формулировать стратегии балансировки нагрузки, снижая зависимость от центра регистрации услуг.
    • Недостаток заключается в том, что клиенту необходимо реализовать сложную логику обнаружения, что увеличивает сложность кода и затраты на обслуживание.
  • Режим обнаружения сервера

    • Клиент отправляет запрос на сервер (обычно шлюз API или прокси-сервер службы), а сервер отвечает за запрос в центр регистрации и пересылку запроса на реальный экземпляр службы.
    • Преимущество состоит в том, что это упрощает реализацию клиента, снижает сложность кода и затраты на обслуживание.
    • Недостатком является то, что это увеличивает задержку системы и количество точек сбоя, поскольку все запросы необходимо пересылать через сервер.

5. Преимущества механизма обнаружения сервисов

  • Уменьшите связанность между сервисами

    • Микросервисам не обязательно знать сетевой адрес друг друга напрямую, им достаточно взаимодействовать только через центр регистрации сервисов.
  • Улучшение масштабируемости и гибкости системы

    • Поскольку услуги динамически изменяются (например, расширение, сокращение, миграция и т. д.), центр регистрации служб может обновлять информацию об экземплярах служб в режиме реального времени, чтобы гарантировать, что связь между службами не будет затронута.
  • Поддерживает балансировку нагрузки и аварийное переключение

    • Клиент может получить список адресов нескольких экземпляров службы из центра регистрации службы и выбрать один из них для связи на основе политики балансировки нагрузки. Когда экземпляр службы недоступен, реестр службы может автоматически пометить его как неработоспособный и не отправлять к нему запросы.

6. Общие инструменты обнаружения сервисов

  • Эврика

    • Инструмент обнаружения сервисов, разработанный Netflix, использующий режим обнаружения клиентов. Он очень легкий, простой в интеграции и использовании.
  • Консул

    • Инструмент центра обнаружения и настройки сервисов, разработанный HashiCorp. Он обеспечивает относительно полное решение, включая проверку работоспособности службы и другие функции, а также поддерживает протоколы HTTP и DNS.
  • Работник зоопарка

    • Apache ZooKeeper — это служба распределенной координации с открытым исходным кодом, которую также можно использовать для обнаружения служб. Он предоставляет распределенные блокировки, службы именования и другие функции, а также поддерживает множество клиентских библиотек.

В микросервисной архитектуре механизм обнаружения сервисов реализует функции динамической регистрации и запроса экземпляров сервисов через центр регистрации, уменьшая связанность между сервисами и улучшая масштабируемость и гибкость системы.