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

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

1. Вступление

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

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

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

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

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

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

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

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

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

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

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

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

image

3. Монтаж

Для получения всех подробностей о процессе установки проверьте нашintroductory article on JHipster.

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

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

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

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

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

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

image

 

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

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

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

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

  • порт: 8081

  • пакет:com.car.app

  • аутентификация: JWT

  • обнаружение службы: реестр JHipster

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

image

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

# runs entity creation wizard
yo jhipster:entity car

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

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

В завершение, давайте запустим наш недавно созданный компонент:

./mvnw

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

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

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

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

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

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

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

  • порт: 8080

  • пакет:com.gateway

  • auth: JWT

  • обнаружение службы: реестр JHipster

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

image

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

# Runs entity creation wizard
yo jhipster:entity car

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

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

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

Время запуститьgateway-app и проверить, все ли работает:

# Starts up the gateway-app component
./mvnw

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

image image

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

Теперь давайте продвинемся на шаг вперед в нашей системе иcreate a second component of type Microservice Application. Этот новый компонент будет управлять автосалонами, поэтому мы добавим к нему объект под названиемdealer.

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

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

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

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

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

# Runs the create entity wizard
yo jhipster:entity dealer

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

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

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

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

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

5. Заключение

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

Вы можете изучить структуру далее наofficial JHipster website.

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