Статьи

Spring Boot Microservices: создание приложения Microservices с использованием Spring Boot

В предыдущем разделе мы узнали, как настроить и запустить Spring Boot с помощью Eclipse IDE и CLI . Теперь в этой статье, посвященной Spring Boot Microservices, я покажу, как мы можем подробно создать приложение Microservices для ведущих спортивных брендов, используя Spring Boot и Netflix Eureka Server. Прежде чем создавать приложение, позвольте мне рассказать вам, какие проблемы возникают с архитектурой Microservices.

Spring Boot позволяет быстро создавать готовые к работе приложения и предоставляет нефункциональные функции:

  • Встроенные серверы, которые легко развернуть с помощью контейнеров.
  • Это помогает в мониторинге нескольких компонентов.
  • Это помогает в настройке компонентов извне.

Итак, давайте посмотрим на проблемы с архитектурой микросервисов .


Вам также может понравиться:
Начало работы с Spring Boot и микросервисами [Refcard]

Проблемы с микросервисной архитектурой

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

  • Автоматизация компонентов : становится все труднее автоматизировать все, потому что вместо монолита есть ряд более мелких компонентов, то есть сборок, развертывания, мониторинга и т. Д.
  • Восприимчивость : существует ряд небольших компонентов для развертывания и обслуживания, которые иногда затрудняют мониторинг и выявление проблем. Это требует большой восприимчивости вокруг всех компонентов.
  • Управление конфигурациями . Существует острая необходимость поддерживать конфигурации для компонентов в различных средах.
  • Отладка : становится трудно проверить каждую службу на наличие ошибок. Централизованное ведение журнала и инструментальные панели необходимы для облегчения отладки проблем.
  • Согласованность : у вас не может быть широкого спектра инструментов, решающих одну и ту же проблему. Хотя важно содействовать инновациям, также важно иметь некоторое децентрализованное управление языками, платформами, технологиями и инструментами, используемыми для реализации / развертывания / мониторинга микросервисов.

Строительная архитектура для лучших спортивных брендов с пружинной загрузкой

В этом примере микросервисов Spring Boot мы будем создавать приложение Top Sports Brands, которое будет иметь три сервиса:

  1. Сервис Eureka — этот сервис регистрирует каждый микросервис, а затем клиентский микросервис ищет сервер Eureka, чтобы получить зависимый микросервис для выполнения работы. Этот сервер Eureka принадлежит Netflix, и в этом Spring Cloud предлагает декларативный способ регистрации и вызова сервисов посредством аннотации Java.
  2. Сервис каталога товаров — этот сервис генерирует список спортивных брендов, которые популярны на рынке.
  3. Edge Service — похож на автономный сервис Item, созданный в Bootiful Development с Spring Boot и Angular. Тем не менее, он будет иметь резервные возможности, которые не позволяют клиенту получить ошибку HTTP, когда служба недоступна

Давайте посмотрим, какой из следующих инструментов требуется для создания примера приложения для микросервисов Spring Boot.

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

Создание сервиса Eureka

Для начала создайте проект EurekaServerSpring Starter в Eclipse IDE. Нажмите на Spring Starter Project и нажмите Далее.

Назовите свой Spring Starter Project как EurekaServer, и другая информация будет заполнена автоматически.

Примечание:  убедитесь, что ваш Интернет подключен, иначе он покажет ошибку.

Теперь измените EurekaServer/src/main/resources/application.propertiesфайл, добавив номер порта и отключив регистрацию.

Откройте EurekaServer/src/main/java/com/example/EurekaServiceApplication.javaи добавьте @EnableEurekaServerвыше @SpringBootApplication.

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer @SpringBootApplication

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

Чтобы запустить приложение: щелкните правой кнопкой мыши на Project -> Run As -> щелкните «Spring Boot App».

http://localhost:8761

Теперь открой http://localhost:8761. Здесь Spring Eureka Server откроется и покажет, что ни один сервис не будет запущен.

Spring Boot Microservices: Создание службы каталога товаров

Снова создайте новый проект. Используйте Item-catalog-serviceдля имени артефакта и нажмите Далее .

Добавьте следующие зависимости:

  • Привод : функции, которые помогут вам контролировать и управлять вашим приложением
  • EurekaDiscovery : для регистрации услуг
  • JPA : сохранить / получить данные
  • H2 : база данных в памяти
  • RestRepositories : выставить репозитории JPA как конечные точки REST
  • Веб : Spring MVC и встроенный Tomcat
  • DevTools : для автоматической перезагрузки приложения при изменении файлов
  • Ломбок : уменьшить шаблон кода

Нажмите на Готово.

Теперь создайте сущность, чтобы ItemCatalogServiceApplication.java . Код ниже предполагает, что вы помещаете все классы в один файл.

Если вы используете редактор, который не импортирует классы автоматически, вот список необходимых импортов вверху ItemCatalogServiceApplication.java.

Добавьте имя приложения в item-catalog-service/src/main/resources/application.propertiesфайл для отображения в сервисе Eureka и установите для порта значение 8088.

Теперь создайте файл свойств облака.

Нажмите File -> New -> Other -> File и добавьте приведенный ниже код в этот файл и сохраните его.

eureka.instance.hostname=${vcap.application.uris[0]:localhost}
eureka.instance.nonSecurePort=80
eureka.instance.metadataMap.instanceId=${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${server.port}}}
eureka.instance.leaseRenewalIntervalInSeconds = 5

eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5
eureka.client.serviceUrl.defaultZone=${vcap.services.pwa-eureka-service.credentials.uri}/eureka/

Теперь, чтобы запустить приложение:

Щелкните правой кнопкой мыши Project -> Run As -> щелкните « Spring Boot App »

Примечание: в случае ошибки попробуйте этот шаг: щелкните правой кнопкой мыши на Project -> Run As -> щелкните « Maven Build ».

Теперь открой http://localhost:8761. Здесь вы увидите, что служба каталога товаров будет запущена.

Вы увидите список товаров из каталога сервиса.

Теперь давайте двигаться вперед и создать пограничный сервис.

Создание пограничного сервиса

Он похож на автономный сервис Item, созданный в Bootiful Development с Spring Boot и Angular . Тем не менее, он будет иметь резервные возможности, которые не позволяют клиенту получить ошибку HTTP, когда служба недоступна.

Снова создайте новый проект. Используйте edge-serviceдля имени артефакта:

  • Eureka Discovery : для регистрации услуг
  • Feign : декларативный клиент веб-сервиса
  • Zuul : обеспечивает интеллектуальную маршрутизацию
  • Репозитории отдыха : выставить репозитории JPA как конечные точки REST
  • Веб : Spring MVC и встроенный Tomcat
  • Hystrix : автоматический выключатель для остановки каскадного сбоя и обеспечения устойчивости
  • Ломбок : уменьшить шаблон кода

Нажмите на Готово.

Поскольку item-catalog-serviceпорт работает на порте 8088, вам необходимо настроить это приложение для работы на другом порту. Изменить, edge-service/src/main/resources/application.propertiesчтобы установить порт на 8089 и установить имя приложения.

Теперь создайте файл свойств облака.

Нажмите File -> New -> Other -> File и добавьте ниже код в этот файл и сохраните его.

eureka.instance.hostname=${vcap.application.uris[0]:localhost}
eureka.instance.nonSecurePort=80
eureka.instance.metadataMap.instanceId=${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${server.port}}}
eureka.instance.leaseRenewalIntervalInSeconds = 5

eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5
eureka.client.serviceUrl.defaultZone=${vcap.services.pwa-eureka-service.credentials.uri}/eureka/

Чтобы включить Feign, Hystrix и регистрацию на сервере Eureka, добавьте соответствующие аннотации к EdgeServiceApplication.java:

Создайте ItemDTO (Data Transfer Object) в этом же файле. Ломбок будет генерировать методы, геттеры, сеттеры и соответствующие конструкторы.

Создайте ItemClientинтерфейс, который использует Feign для связи с Item-catalog-service.

Создайте RestControllerниже тот ItemClient, который отфильтровывает бренды с меньшим рейтингом и показывает /top-brandsконечную точку.

Запустите edge-serviceприложение с Maven или вашей IDE и убедитесь, что оно успешно регистрируется на сервере Eureka.

Теперь вызовите localhost: 8089 / top-брендов, вы увидите список лучших брендов из каталога службы.

Примечание. Если вы закроете item-catalog-serviceприложение, вы получите 500 внутренних ошибок сервера.

Чтобы это исправить, вы можете использовать Hystrix для создания запасного метода и указать этому goodItems()методу.

Перезапустите, edge-serviceи вы должны увидеть пустой список.

Начните item-catalog-serviceснова, и этот список должен в конечном итоге вернуть полный список лучших брендов.

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

Дальнейшее чтение

Архитектура микросервисов с помощью Spring Boot и Spring Cloud

Создание микросервисов с помощью Spring и Eureka