«1. Введение
В этой статье мы рассмотрим интересный пример с JHipster — построение простой архитектуры микросервисов. Мы покажем, как собрать и развернуть все необходимые компоненты, и в итоге у нас будет полноценное микросервисное приложение, работающее и работающее.
Если вы новичок в JHipster, ознакомьтесь с нашей вводной статьей, прежде чем приступить к изучению основ этого инструмента для создания проектов.
2. Монолитное и микросервисное
В нашей первой статье мы показали, как создать и запустить монолитное приложение, которое относительно легко поддерживать.
Наша микросервисная система, с другой стороны, будет разделять внешний интерфейс и серверную часть, которые, в свою очередь, также могут быть разделены на несколько небольших приложений, каждое из которых имеет дело с подмножеством полного домена приложения. Естественно, как и во всех реализациях микросервисов, это решает некоторые проблемы, но также вносит некоторые сложности, такие как работа с реестром компонентов и безопасностью.
JHipster позаботится о большинстве трудностей, связанных с управлением микросервисными приложениями, с помощью современных инструментов с открытым исходным кодом, таких как Eureka Server от Netflix и Consul от Hashicorp.
Есть, конечно, некоторые вещи, которые следует учитывать, например, насколько велик или сложен наш домен, насколько критично наше приложение и какие уровни доступности нам нужны, собираемся ли мы размещать наши сервисы на разных серверов и местоположений и т. д. Цель этих инструментов, конечно, сделать эти перестановки возможными и простыми в управлении.
2.1. Компоненты микросервиса JHipster
При работе над архитектурой микросервиса с JHipster нам потребуется создать и развернуть как минимум три разных проекта: реестр JHipster, шлюз микросервиса и как минимум одно приложение микросервиса.
Реестр JHipster — важная часть микросервисной архитектуры. Он связывает все остальные компоненты вместе и позволяет им взаимодействовать друг с другом.
Приложение Microservice содержит внутренний код. После запуска он предоставит API для домена, с которым он связан. Микросервисная архитектура может состоять из множества микросервисных приложений, каждое из которых содержит несколько связанных сущностей и бизнес-правил.
А Microservice Gateway имеет весь интерфейсный (Angular) код и будет использовать API, созданный всей группой приложений микросервиса:
3. Установка
Все подробности о процессе установки см. посмотрите нашу вводную статью о JHipster.
4. Создание проекта микросервиса
Теперь давайте установим три основных компонента нашего проекта микросервиса.
4.1. Установка JHipster Registry
Так как JHipster Registry является стандартным JHipster, нам просто нужно скачать и запустить его. Его не нужно изменять:
git clone https://github.com/jhipster/jhipster-registry
cd jhipster-registry && ./mvnw
Это клонирует проект jhipster-registry с GitHub и запускает приложение. После успешного запуска мы можем посетить http://localhost:8761/ и войти в систему с пользователем admin и паролем admin:
4.2. Установка приложения микросервиса
Здесь мы начинаем создавать фактические функции нашего проекта. В этом примере мы создадим простое приложение микросервиса, которое управляет автомобилями. Итак, сначала мы создадим приложение, а затем добавим в него объект:
После запуска мастера давайте, следуя инструкциям, создадим приложение типа Microservice с именем carapp. Некоторые другие важные параметры:
# create a directory for the app and cd to it
mkdir car-app && cd car-app
# run the jhipster wizard
yo jhipster
порт: 8081 пакет: com.car.app аутентификация: обнаружение службы JWT: JHipster Registry
-
На приведенном ниже снимке экрана показан полный набор параметров:
Теперь мы добавим автомобиль entity в наше приложение:
Запустится мастер создания объекта. Мы должны следовать инструкциям, чтобы создать объект с именем автомобиля с тремя полями: марка, модель и цена.
# runs entity creation wizard
yo jhipster:entity car
«Как только это будет сделано, наше первое приложение Microservice будет готово. Если мы посмотрим на сгенерированный код, то заметим, что в нем нет javascript, HTML, CSS или любого внешнего кода. Все они будут созданы после создания Microservice Gateway. Кроме того, ознакомьтесь с файлом README для получения важной информации о проекте и полезных командах.
Чтобы закончить, давайте запустим наш только что созданный компонент:
Перед запуском вышеуказанной команды мы должны убедиться, что компонент jhipster-registry запущен и работает. В противном случае мы получим ошибку.
./mvnw
Если все пойдет по плану, наше car-приложение запустится, и журнал jhipster-registry сообщит нам, что приложение успешно зарегистрировано:
4.3. Установка шлюза микросервисов
Registered instance CARAPP/carapp:746e7525dffa737747dcdcee55ab43f8
with status UP (replication=true)
Теперь немного внешнего интерфейса. Мы создадим Microservice Gateway и укажем ему, что у нас есть сущность в существующем компоненте, для которого мы хотим создать интерфейсный код:
Давайте следуем инструкциям, чтобы создать приложение типа Microservice gateway . Мы назовем шлюз приложения и выберем следующие параметры для других параметров:
# Create a directory for our gateway app
mkdir gateway-app && cd gateway-app
# Runs the JHipster wizard
yo jhipster
порт: 8080 пакет: com.gateway auth: обнаружение службы JWT: JHipster Registry
-
Вот краткое изложение полного набора параметров :
Давайте перейдем к созданию объекта:
Когда нас спросят, хотим ли мы создать из существующей микрослужбы, выберите «Да», затем введите относительный путь к корневому каталогу car-app (например: . ./автомобильное приложение). Наконец, когда нас спросят, хотим ли мы обновить сущность, выберите Да, регенерировать сущность.
# Runs entity creation wizard
yo jhipster:entity car
JHipster найдет файл Car.json, который является частью существующего приложения Microservice, которое мы создали ранее, и будет использовать метаданные, содержащиеся в этом файле, для создания всего необходимого кода пользовательского интерфейса для этой сущности:
Время запустить приложение-шлюз и проверить, все ли работает:
Found the .jhipster/Car.json configuration file, entity can be automatically generated!
Давайте теперь перейдем к http://localhost:8080/ и войдем в систему с пользователем admin и паролем admin. В верхнем меню мы должны увидеть пункт Автомобиль, который приведет нас на страницу со списком автомобилей. Все хорошо!
# Starts up the gateway-app component
./mvnw
4.4. Создание второго приложения микросервиса
Теперь давайте продвинем нашу систему еще на один шаг и создадим второй компонент типа Приложение микросервиса. Этот новый компонент будет управлять автомобильными дилерами, поэтому мы добавим в него сущность, называемую дилером.
Давайте создадим новый каталог, перейдем к нему и запустим команду yo jhipster:
После этого мы введем в качестве имени приложения дилерапп и выберем для его запуска порт 8082 (крайне важно, чтобы этот отличается от тех, которые мы используем для jhipster-registry и car-app).
mkdir dealer-app && cd dealer-app
yo jhipster
Для других параметров мы можем выбрать любой вариант, который мы хотим. Помните, что это отдельный микросервис, поэтому он может использовать другие типы баз данных, стратегию кэширования и тесты, отличные от компонента car-app.
Давайте добавим пару полей в нашу сущность дилера. Например, имя и адрес:
Мы не должны забыть перейти к gateway-app и сказать ему сгенерировать интерфейсный код для объекта дилера:
# Runs the create entity wizard
yo jhipster:entity dealer
Наконец, запустите ./mvnw в корневом каталоге приложения дилера, чтобы запустить этот компонент.
# Navigate to the gateway-app root directory
cd ../gateway-app
# Runs the create entity wizard
yo jhipster:entity dealer
Затем мы можем посетить наше приложение-шлюз по адресу http://localhost:8080 и обновить страницу, чтобы увидеть только что созданный пункт меню для сущности дилера.
Прежде чем мы закончим, давайте еще раз взглянем на приложение jhipster-registry по адресу http://localhost:8761/. Нажмите на пункт меню Приложения, чтобы убедиться, что все наши три компонента были успешно идентифицированы и зарегистрированы: Вот и все! Всего за несколько минут мы создали сложную архитектуру, состоящую из одного приложения Gateway со всем интерфейсным кодом, поддерживаемым двумя микросервисами.
5. Заключение
Начать проект микросервисной архитектуры с JHipster довольно просто; нам нужно только создать столько приложений микросервисов, сколько нам нужно, и один шлюз микросервисов, и мы готовы к работе.
Вы можете более подробно изучить фреймворк на официальном сайте JHipster.
«Как всегда, кодовая база для нашего автомобильного приложения, приложения для дилера и шлюза доступна на GitHub.
«