Как мы все знаем, для разработки приложений на основе микросервисов нам необходимо иметь представление о различных темах, таких как:

  1. Шлюз API
  2. Обнаружение службы
  3. Балансировщик нагрузки
  4. Синхронная/асинхронная связь
  5. Масштабирование
  6. Распределенные транзакции
  7. Управление журналом
  8. Масштабный куб
  9. Шаблон автоматического выключателя и т. Д.

Итак, в этой серии я рассмотрю все темы, связанные с микросервисами, одну за другой. В этом посте я расскажу об обнаружении служб и реестре.

Введение: Реестр услуг

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

Один из способов подключения — использование IP: port. Но проблема, связанная с этим способом, заключается в том, что IP-адрес и порт работающей службы могут быть изменены, и тогда нам нужно внести изменения во все службы, которые его используют. Даже мы не можем использовать статические IP-адреса. потому что примеров много.

Другим способом может быть использование шлюза API, но шлюзу также нужны все адреса.

Service Discovery — это шаблон, позволяющий узнать адреса всех экземпляров.

Чтобы узнать адреса, мы используем реестр служб — базу данных, содержащую службы и их адреса.

Теперь, используя промежуточный реестр служб (клиент и сервер), всякий раз, когда клиент или шлюз API хотят взаимодействовать, они просто запрашивают в реестре адреса конкретной микрослужбы.

Как реестр службы получает адреса?

Существует два способа, с помощью которых реестр службы собирает адреса различных экземпляров.

Самостоятельно: служба регистрируется в реестре и через несколько минут/секунд обновляет адреса своих новых экземпляров в реестре. и если служба не обновляет реестр, она удалит эти адреса, считая, что она не работает.

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

Обнаружение служб — это полная противоположность реестру служб. Существует два способа выполнить обнаружение служб.

  1. Использование на стороне клиента
  2. Использование шлюза API (на стороне сервера)

Шлюз Client/API взаимодействует с реестром и получает список конкретных служб. а затем, используя балансировку нагрузки, он будет общаться с конкретным экземпляром службы.

Для реализации этих функций мы можем использовать разные библиотеки. В случае весенней загрузки у нас есть сервер Netflix Eureka, клиент Eureka, Consul и Apache ZooKeeper.

Создание сервера и клиента Eureka с использованием Spring Boot

Чтобы создать сервер eureka, мы можем создать проект весенней загрузки с https://start.spring.io/, а затем добавить зависимость сервера Eureka. после этого просто запустите проект. Это будет использоваться в качестве реестра.

Добавьте @EnableEurekaServer в основной класс и конфигурацию в файле application.yml и запустите сервер.

После запуска сервера вы увидите вот такую ​​страницу.

Аналогичным образом для создания клиента мы можем добавить зависимость Eureka Client и добавить @EnableEurekaClient в основной класс и конфигурацию в файле application.yml.

Теперь это будет регистрироваться без реестра, который мы запустили ранее. потому что в defaultZone мы дали один и тот же URL. Если мы обновим страницу реестра, мы увидим там этот шлюз.

Итак, в этом посте мы рассказали о реестре и обнаружении сервисов, а также о том, как создать реестр сервисов с помощью весенней загрузки и зарегистрированного API-шлюза в реестре.

В следующем посте мы обсудим, как мы можем создать API-шлюз и что такое API-шлюз.

Если есть какие-либо улучшения или предложения, дайте мне знать.

Спасибо за прочтение!