Интеграция Service Discovery и регистрации с API7 Enterprise
June 13, 2024
С широким распространением архитектуры микросервисов отношения между сервисами становятся все более сложными. В этом контексте обнаружение сервисов особенно важно, так как оно позволяет сервисам динамически находить и взаимодействовать друг с другом.
API7 Enterprise, как многофункциональная платформа управления API, может легко интегрироваться с реестрами обнаружения сервисов для автоматического обнаружения и интеллектуальной маршрутизации вышестоящих сервисов.
Что такое обнаружение сервисов?
Обнаружение сервисов — это механизм автоматического обнаружения экземпляров сервисов и их адресов в сети, чтобы другие сервисы или клиенты могли находить их и взаимодействовать с ними. В современных распределенных системах и архитектуре микросервисов обнаружение сервисов является важным компонентом, так как оно позволяет динамически локализовать и подключаться к сервисам без необходимости жестко прописывать адреса сервисов или вручную обновлять конфигурации.
Функции обнаружения сервисов
-
Динамическая локализация сервисов: В архитектуре микросервисов экземпляры сервисов могут динамически запускаться, останавливаться, мигрировать или масштабироваться. Обнаружение сервисов может автоматически отслеживать эти изменения, гарантируя, что клиенты всегда могут найти доступные экземпляры сервисов.
-
Отказоустойчивость и переключение при сбоях: Когда экземпляр сервиса выходит из строя, обнаружение сервисов может определить его недоступность и направить клиентов к другим работоспособным экземплярам, обеспечивая переключение при сбоях и высокую доступность.
-
Упрощение конфигурации и управления: Благодаря обнаружению сервисов разработчикам не нужно вручную настраивать и управлять сетевыми адресами каждого сервиса. Это снижает вероятность ошибок конфигурации и упрощает развертывание и управление сервисами.
Обнаружение сервисов в API7 Enterprise
Обнаружение сервисов часто используется вместе с балансировщиком нагрузки или API-шлюзом, чтобы гарантировать, что запросы равномерно распределяются между несколькими экземплярами сервисов, тем самым повышая пропускную способность и время отклика системы. В распределенных системах экземпляры сервисов могут стать недоступными по различным причинам, и механизм обнаружения сервисов может быстро выявить эти проблемы и перенаправить запросы к другим работоспособным экземплярам через балансировщик нагрузки, обеспечивая высокую доступность сервисов.
В API7 Enterprise концепция "вышестоящего сервиса" (upstream) расширяет эту гибкость. Настроив вышестоящий сервис как реестр сервисов, API-шлюз может динамически получать список экземпляров сервисов и корректировать стратегию распределения запросов по мере необходимости. Это означает, что даже при изменении количества или состояния экземпляров сервисов API-шлюз может быстро адаптироваться без необходимости ручного обновления конфигураций или перезапуска сервисов.
Сотрудничество между обнаружением сервисов и API-шлюзом предоставляет мощные возможности динамического управления сервисами и контроля трафика для архитектуры микросервисов. API7 Enterprise дополнительно улучшила и расширила эту функцию, позволяя системе быть более гибкой и эффективной в решении различных сложных сценариев и требований. Более того, с широким распространением облачных и контейнерных технологий развертывание и масштабирование экземпляров сервисов стало проще и быстрее.
Как настроить обнаружение сервисов в API7 Enterprise?
Добавление реестров сервисов
В группе шлюзов перейдите на страницу реестра сервисов, нажмите кнопку "Добавить соединение с реестром сервисов", и вы увидите форму соединения.
В форме необходимо заполнить основную информацию и соответствующие конфигурации соединения для реестра сервисов. В настоящее время API7 Enterprise поддерживает интеграцию с реестрами сервисов Kubernetes и Nacos. Здесь мы используем Nacos в качестве примера. Выберите "Nacos" в качестве типа обнаружения, а затем укажите, как API7 Enterprise будет получать токен для аутентификации, что можно сделать через учетную запись/пароль, ключ доступа и секретный ключ или путем прямого ввода значения токена.
Помимо базовых конфигураций аутентификации, API7 Enterprise также предоставляет более детальные параметры конфигурации, такие как тайм-аут соединения и тайм-аут чтения/записи. Эти конфигурации можно гибко настраивать в зависимости от фактических потребностей, эффективно избегая длительных ожиданий запросов из-за нестабильных сетевых соединений и снижая неэффективное использование ресурсов системы.
После создания реестра сервисов новый элемент соединения сразу появится в списке, но статус соединения может быть отмечен как здоровый после проверки системы. Через этот элемент соединения пользователи могут удобно проверять статус обнаружения сервисов и соответствующие конфигурации реестра сервисов.

Настройка обнаружения сервисов в вышестоящем сервисе
Реестр сервисов — это ресурс, принадлежащий группе шлюзов. В группе шлюзов, где был создан реестр сервисов, любой сервис, опубликованный в этой группе шлюзов, может использовать конфигурацию этого реестра сервисов. Мы можем настроить вышестоящий сервис в процессе публикации сервиса или на уже опубликованном сервисе.
Выберите шаблон сервиса, опубликуйте его в группе шлюзов, где был добавлен реестр сервисов, выберите использование обнаружения сервисов в качестве вышестоящего сервиса, затем выберите созданный нами реестр сервисов Nacos и укажите конкретное пространство имен, группу и экземпляр.

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

Просмотр связанных сервисов, обновление и удаление конфигураций соединений
В списке реестров сервисов через меню "Еще" справа можно удобно управлять конфигурациями соединений, просматривать историю соединений, отслеживать использование сервиса или удалять конфигурации соединений, которые больше не нужны.
"Связанные сервисы" четко показывают, какие сервисы изменили свои конфигурации обнаружения сервисов, что позволяет нам оценить потенциальное влияние перед внесением любых изменений конфигураций, эффективно избегая операционных рисков.
Обратите внимание, что обновление конфигураций соединений реестра сервисов повлияет на все вышестоящие сервисы, использующие этот реестр. Если уже есть вышестоящие сервисы, использующие его, вы не сможете изменить тип обнаружения реестра или напрямую удалить соединение. Вам нужно будет вручную настроить конфигурации вышестоящих сервисов для использования других реестров или узлов, а затем выполнить операцию удаления.
Заключение
Мы рассмотрели подробную концепцию обнаружения сервисов, его роль и применение в API7 Enterprise. Благодаря обнаружению сервисов архитектура микросервисов может динамически управлять и вызывать сервисы, значительно повышая гибкость и доступность системы.
По мере развития архитектуры микросервисов важность обнаружения сервисов становится все более очевидной. Мы ожидаем, что в будущем обнаружение сервисов будет больше ориентироваться на интеллектуальность, автоматизацию и отказоустойчивость.
API7 Enterprise будет исследовать интеграцию с большим количеством типов реестров сервисов и сочетать проверки здоровья для достижения более высокой доступности, помогая предприятиям строить более надежные и эффективные архитектуры микросервисов.
