Перейти к основному содержимому

JHipster с микросервисной архитектурой

· 7 мин. чтения

1. Введение

В этой статье мы рассмотрим интересный пример с JHipster — построение простой архитектуры микросервисов. Мы покажем, как собрать и развернуть все необходимые компоненты, и в итоге у нас будет полноценное микросервисное приложение, работающее и работающее.

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

2. Монолитный и микросервисный

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

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

JHipster позаботится о большинстве трудностей, связанных с управлением микросервисными приложениями, с помощью современных инструментов с открытым исходным кодом, таких как Eureka Server от Netflix и Consul от Hashicorp .

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

2.1. Компоненты микросервиса JHipster

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

JHipster Registry — важная часть микросервисной архитектуры. Он связывает все остальные компоненты вместе и позволяет им взаимодействовать друг с другом.

Приложение Microservice содержит внутренний код. После запуска он предоставит API для домена, с которым он связан. Микросервисная архитектура может состоять из множества микросервисных приложений, каждое из которых содержит несколько связанных сущностей и бизнес-правил.

А Microservice Gateway имеет весь интерфейсный (Angular) код и будет использовать API, созданный целой группой микросервисных приложений:

./71814a50359a5f9b0e60381d85130cf6.png

3. Установка

Чтобы узнать все подробности о процессе установки, ознакомьтесь с нашей вводной статьей о JHipster .

4. Создание проекта микросервиса

Теперь давайте установим три основных компонента нашего проекта микросервиса.

4.1. Установка реестра JHipster

Поскольку JHipster Registry является стандартным JHipster, нам просто нужно его скачать и запустить. Нет необходимости изменять его:

git clone https://github.com/jhipster/jhipster-registry
cd jhipster-registry && ./mvnw

Это клонирует проект jhipster -registry из GitHub и запускает приложение. После успешного запуска мы можем посетить http://localhost:8761/ и войти в систему с пользователем admin и паролем admin :

./8a45702b5d12a6d8cee9ce9de3b7bce8.png

4.2. Установка микросервисного приложения

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

# create a directory for the app and cd to it
mkdir car-app && cd car-app
# run the jhipster wizard
yo jhipster

После запуска мастера давайте, следуя инструкциям, создадим приложение типа Microservice с именем carapp . Некоторые другие важные параметры:

  • порт: 8081
  • пакет: com.car.app
  • аутентификация: JWT
  • обнаружение службы: JHipster Registry

На скриншоте ниже показан полный набор опций:

./a79df20fd248c98f6bd1bb38e1abfd47.png

Теперь мы добавим автомобиль в наше приложение:

# runs entity creation wizard
yo jhipster:entity car

Запустится мастер создания объекта. Мы должны следовать инструкциям, чтобы создать объект с именем автомобиля с тремя полями: марка , модель и цена.

Как только это будет сделано, наше первое приложение Microservice будет готово. Если мы посмотрим на сгенерированный код, то заметим, что в нем нет javascript, HTML, CSS или любого внешнего кода. Все они будут созданы после создания Microservice Gateway. Кроме того, ознакомьтесь с файлом README для получения важной информации о проекте и полезных командах.

Чтобы закончить, давайте запустим наш только что созданный компонент:

./mvnw

Перед запуском вышеуказанной команды мы должны убедиться, что компонент jhipster-registry запущен и работает. В противном случае мы получим ошибку.

Если все пойдет по плану, наше car-приложение запустится, и лог jhipster-registry сообщит нам, что приложение успешно зарегистрировано:

Registered instance CARAPP/carapp:746e7525dffa737747dcdcee55ab43f8
with status UP (replication=true)

4.3. Установка микросервисного шлюза

Теперь передняя часть. Мы создадим Microservice Gateway и укажем ему, что у нас есть сущность в существующем компоненте, для которого мы хотим создать интерфейсный код:

# Create a directory for our gateway app
mkdir gateway-app && cd gateway-app
# Runs the JHipster wizard
yo jhipster

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

  • порт: 8080
  • пакет: com.шлюз
  • Автор: JWT
  • обнаружение службы: JHipster Registry

Вот краткое изложение полного набора параметров:

./1562881b5782e83257e8066c5677cdf6.png

Перейдем к созданию сущности:

# Runs entity creation wizard
yo jhipster:entity car

Когда нас спросят, хотим ли мы создать из существующей микрослужбы, выберите « Да » , затем введите относительный путь к корневому каталогу автомобильного приложения (например: ../car-app). Наконец, когда нас спросят, хотим ли мы обновить сущность, выберите Да, регенерировать сущность .

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

Found the .jhipster/Car.json configuration file, entity can be automatically generated!

Время запустить приложение-шлюз и проверить, все ли работает:

# Starts up the gateway-app component
./mvnw

Давайте теперь перейдем к http://localhost:8080/ и войдем в систему с пользователем admin и паролем admin . В верхнем меню мы должны увидеть пункт Автомобиль , который приведет нас на страницу со списком автомобилей. Все хорошо!

./6dd47d7e27048126d4b1f445301f8530.png

./6fd6b418636060087d22eedd2135768d.png

4.4. Создание второго микросервисного приложения

Далее, давайте продвинем нашу систему еще на один шаг и создадим второй компонент типа Microservice Application . Этот новый компонент будет управлять автомобильными дилерами, поэтому мы добавим в него сущность, называемую дилером .

Давайте создадим новый каталог, перейдем к нему и запустим команду yo jhipster :

mkdir dealer-app && cd dealer-app
yo jhipster

После этого мы вводим дилерское приложение в качестве имени приложения и выбираем для его запуска порт 8082 (крайне важно, чтобы этот порт отличался от тех, которые мы используем для jhipster - register и car-app ).

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

Давайте добавим пару полей в нашу сущность дилера . Например , имя и адрес:

# Runs the create entity wizard
yo jhipster:entity dealer

Мы не должны забыть перейти к gateway-app и сказать ему сгенерировать интерфейсный код для объекта дилера :

# Navigate to the gateway-app root directory
cd ../gateway-app
# Runs the create entity wizard
yo jhipster:entity dealer

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

Затем мы можем посетить наше шлюзовое приложение по адресу http://localhost:8080 и обновить страницу, чтобы увидеть только что созданный пункт меню для сущности дилера.

Прежде чем мы закончим, давайте еще раз взглянем на приложение jhipster-registry по адресу http://localhost:8761/. Нажмите на пункт меню Приложения, чтобы убедиться, что все наши три компонента были успешно идентифицированы и зарегистрированы: Вот и все! Всего за несколько минут мы создали сложную архитектуру, состоящую из одного приложения Gateway со всем интерфейсным кодом, поддерживаемым двумя микросервисами.

./23f3924a94963fa86ee25633435d2e63.png

./a29f36b1ce2039920129592116365dc3.png

5. Вывод

Начать проект микросервисной архитектуры с JHipster довольно просто; нам нужно только создать столько приложений микросервисов, сколько нам нужно, и один шлюз микросервисов, и мы готовы к работе.

Вы можете более подробно изучить фреймворк на официальном сайте JHipster .

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