Создание шлюза в архитектуре микросервисов JHipster без базы данных

Я пробую JHipster на основе поддерживаемой архитектуры микросервисов. Я создал реестр, шлюз и микросервис (на основе аутентификации JWT), как описано в документации, и все работает. Однако я не уверен, зачем шлюзу в JHispter нужна база данных. Вопросы, которые до сих пор остаются для меня без ответа: 1- Зачем шлюзу нужна база данных? В каких сценариях вы бы создали шлюз с базой данных или без нее? 2- Используют ли шлюз и микросервис одну и ту же базу данных? Или им следует использовать отдельные экземпляры базы данных?


person Developerx    schedule 21.11.2019    source источник


Ответы (2)


1) Шлюз, использующий типы аутентификации JWT или OAuth2, нуждается в базе данных для хранения пользователей и их учетных данных. Шлюз, использующий тип аутентификации UAA, не нуждается в базе данных, потому что микросервис UAA обрабатывает пользователей и аутентификацию.

2) Шлюзы и микросервисы должны использовать собственные экземпляры базы данных. Вы можете использовать один и тот же экземпляр базы данных в dev, но в prod каждый должен иметь свой собственный.

Вы можете создать docker-compose или kubernetes для вашего шлюза / микросервисов с подгенераторами JHipster, и в сгенерированных файлах YML вы увидите, что каждое приложение имеет собственный экземпляр базы данных.

person Jon Ruddell    schedule 21.11.2019
comment
Спасибо за ответ, очень ясно. Это имеет смысл, хотя я могу утверждать, что с точки зрения архитектуры подключение к базе данных от шлюзов рискованно. Также интересным в работе шлюза (на основе jwt) без базы данных было то, что все по-прежнему работает без каких-либо проблем, хотя - person Developerx; 24.11.2019

Хорошо, я немного больше исследовал 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.

person Developerx    schedule 24.11.2019
comment
... вы можете переместить внутренний код в Microservice и заменить его правильной конфигурацией / api. Как это можно сделать? Любая ссылка или предложение? - person Lubbo; 21.02.2020