Рубрики
Без рубрики

Как и почему я создал архитектуру микросервисов spring boot/netflix

Архитектура микросервисов с использованием spring boot и spring cloud netflix.

Автор оригинала: Rodrigo Ruiz.

Введение ## Spring Cloud Netflix обеспечивает интеграцию ОС Netflix для приложений Spring Boot с помощью автоматической настройки и привязки к среде Spring и другим идиомам модели программирования Spring. С помощью нескольких простых аннотаций вы можете быстро включить и настроить общие шаблоны внутри своего приложения и создавать большие распределенные системы с проверенными в боях компонентами Netflix. Предоставляемые шаблоны включают обнаружение служб (Eureka), Автоматический выключатель (Hystrix), Интеллектуальную маршрутизацию (Zuul) и Балансировку нагрузки на стороне клиента (Лента). Весеннее облако ## Spring Cloud предоставляет разработчикам инструменты для быстрого создания некоторых распространенных шаблонов в распределенных системах (например, управление конфигурацией, обнаружение служб, автоматические выключатели, интеллектуальная маршрутизация, микропроцессор, шина управления, одноразовые токены, глобальные блокировки, выборы руководства, распределенные сеансы, состояние кластера). Координация распределенных систем приводит к шаблонным шаблонам, и с помощью Spring Cloud разработчики могут быстро создавать службы и приложения, реализующие эти шаблоны. Они будут хорошо работать в любой распределенной среде, включая собственный ноутбук разработчика, центры обработки данных из чистого металла и управляемые платформы, такие как Cloud Foundry.

Особенности****

Spring Cloud фокусируется на предоставлении хорошего готового опыта для типичных случаев использования и механизма расширения для охвата других.

  1. Распределенная/версионная конфигурация
  2. Регистрация и обнаружение услуг
  3. Маршрутизация
  4. Звонки от службы к службе
  5. Балансировка нагрузки
  6. Автоматические выключатели
  7. Глобальные блокировки
  8. Выборы руководства и состояние кластера
  9. Распределенные сообщения

Архитектура Высокого Уровня****

Предлагаемая архитектура использует AWS (веб-службы amazon) со следующими компонентами:

  1. ELB: Эластичный балансировщик нагрузки, позволяющий сбалансировать все запросы к микросервисам. Пользователь, сделайте запрос в одну точку (ELB).
  2. Набор экземпляров EC2, которые будут иметь службу шлюза spring Cloud: Служба шаблонов шлюза используется для извлечения данных из нескольких служб с помощью одного запроса, это означает, что балансировщик нагрузки будет знать только шлюз и совершать вызовы, таким образом мы можем изолировать важные службы и защитить их внутри облака AWS. Когда пользователь делает запрос, балансировщик нагрузки вызовет шлюз, а затем шлюз вызовет соответствующую микросервису.
  3. Набор экземпляров EC2 для обслуживания всех микросервисов, доступных в облаке. Доступ к этим экземплярам EC2 осуществляется только через шлюз.
  4. КАК услуга 3: Мы будем использовать эту услугу для хранения общих файлов, используемых всеми микросервисами в облаке (изображения, тексты, мультимедиа и т.д.). Дополнительные сведения см. в разделе Amazon S3 (Простая служба хранения). Диаграмма 1

Обзор микросервисов****

Предлагаемая архитектура сформирована 5 различными видами микросервисов (шаблонов обслуживания): Шлюз, Обнаружение, Аутентификация, Конфигурация, Клиенты.

Шлюз (Маршрутизация и фильтрация)****

Маршрутизация является неотъемлемой частью архитектуры микросервиса. Например,/может быть сопоставлен с вашим веб-приложением,/api/пользователи сопоставлены с пользовательской службой, а/api/магазин сопоставлен со службой магазина. Zuul-это маршрутизатор на базе JVM и балансировщик нагрузки на стороне сервера от Netflix. Spring Cloud создала встроенный прокси-сервер Zuul, чтобы упростить разработку очень распространенного варианта использования, когда приложение пользовательского интерфейса хочет перенаправлять вызовы одной или нескольким серверным службам. Эта функция полезна для пользовательского интерфейса для подключения к требуемым серверным службам, что позволяет избежать необходимости независимого управления CORS и проверки подлинности для всех серверных служб. В архитектуре, которую мы предлагаем, будет существовать микросервис, действующий как Шлюз во внешний мир. Это единственное, что будет доступно конечным пользователям, защищая внутренние микросервисы, к которым можно получить доступ извне. Шлюз будет вызван внешним интерфейсом (через AWS Elastic Load Balancer), и он направит вызов в соответствующую службу в зависимости от того, что запрашивается.

Открытие сервиса/Эврика****

Обнаружение служб является одним из ключевых принципов архитектуры, основанной на микросервисах. Эврика-это сервер и клиент обнаружения служб Netflix. Сервер может быть сконфигурирован и развернут таким образом, чтобы он был высокодоступным, при этом каждый сервер реплицирует состояние зарегистрированных служб другим. Когда клиент регистрируется в Eureka, он предоставляет метаданные о себе, такие как хост и порт, URL-адрес индикатора работоспособности, домашняя страница и т.д. Эврика получает сообщения о сердцебиении от каждого экземпляра, принадлежащего службе. Если сердцебиение прерывается по настраиваемому расписанию, экземпляр обычно удаляется из реестра. В этой архитектуре на каждый экземпляр EC2 будет приходиться один сервер eureka. Как вы можете видеть на диаграмме 1, существует “облачные службы EC2-Spring”, которые будут содержать все службы (кроме шлюза), включая службу обнаружения. Таким образом, службу обнаружения можно рассматривать как телефонную книгу, в которой каждая служба регистрируется в реестре служб и сообщает реестру, где она находится (хост, порт, имя узла) и, возможно, другие метаданные, относящиеся к службе (то, что другие службы могут использовать для принятия обоснованных решений об этом), поэтому, если другая микросервисная служба (включая шлюз) хочет использовать ее/вызвать ее, просто нужно запросить ее разрешение на службу обнаружения.

Служба настройки (необязательно)****

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

Служба Аутентификации****

Служба аутентификации-это микросервис, который отвечает за аутентификацию, генерацию токенов JWT и предоставляет точку доступа для проверки токенов (JWK). Он имеет свою собственную базу данных с пользователями, областями применения и ключами.

Обслуживание Клиентов****

Микросервис, готовый к работе, поэтому он регистрируется на сервере Eureka, например, в качестве API для какого-либо приложения или какого-либо приложения, которое отправляется на сервер и запрашивает указания для конкретного микросервиса.

Оригинал: “https://www.codementor.io/@rodrigoruiz/how-and-why-i-built-a-springboot-netflix-microservices-architecture-ejb4phlrs”