Я пробую JHipster на основе поддерживаемой архитектуры микросервисов. Я создал реестр, шлюз и микросервис (на основе аутентификации JWT), как описано в документации, и все работает. Однако я не уверен, зачем шлюзу в JHispter нужна база данных. Вопросы, которые до сих пор остаются для меня без ответа: 1- Зачем шлюзу нужна база данных? В каких сценариях вы бы создали шлюз с базой данных или без нее? 2- Используют ли шлюз и микросервис одну и ту же базу данных? Или им следует использовать отдельные экземпляры базы данных?
Создание шлюза в архитектуре микросервисов JHipster без базы данных
Ответы (2)
1) Шлюз, использующий типы аутентификации JWT или OAuth2, нуждается в базе данных для хранения пользователей и их учетных данных. Шлюз, использующий тип аутентификации UAA, не нуждается в базе данных, потому что микросервис UAA обрабатывает пользователей и аутентификацию.
2) Шлюзы и микросервисы должны использовать собственные экземпляры базы данных. Вы можете использовать один и тот же экземпляр базы данных в dev
, но в prod
каждый должен иметь свой собственный.
Вы можете создать docker-compose или kubernetes для вашего шлюза / микросервисов с подгенераторами JHipster, и в сгенерированных файлах YML вы увидите, что каждое приложение имеет собственный экземпляр базы данных.
Хорошо, я немного больше исследовал JHipster-Gateway и его внутреннюю работу. Ниже приводится краткое изложение моего вопроса:
1- Шлюзу, использующему тип JWT или Oauth2, требуется база данных, только если объекты, связанные с пользователем, и внутренний код также генерируются в базе кода шлюза. Это касается стандартного JHipster Gateway, но не обязательно. Как указано в документации JHipster, JHipster Gateway на самом деле является монолитным приложением и может использоваться как монолитное приложение:
У вас будет выбор либо создать новый объект в обычном режиме (шлюз также является стандартным приложением JHipster, поэтому он будет работать как для монолитного приложения), либо использовать существующую конфигурацию JHipster из микросервиса.
Когда вы создаете JHipster Gateway, он по умолчанию создает серверную часть, связанную с сущностью User, в кодовой базе шлюза. Но вы можете выбрать, чтобы весь код Backend (включая User) был размещен / сгенерирован в базе кода Microservice.
В этом случае нет необходимости в базе данных в приложении JHipster Gateway. Шлюз, работающий исключительно как шлюз для передачи запросов к микросервисам, требует только правильной настройки конфигурации / api.
В случае JHipster Gateway по умолчанию внутренний код объекта User также генерируется в части Gateway, что является причиной, по которой требуется база данных. Но вы можете переместить внутренний код в Microservice и заменить его правильной конфигурацией / api.