在没有数据库的 JHipster 微服务架构中创建网关

Creating a Gateway in JHipster microservice arhitecture without database

我正在试用基于支持的微服务架构的 JHipster。我已经按照文档中的描述创建了一个注册表、网关和一个微服务(基于 JWT 身份验证)并且一切正常。但是我不确定为什么 JHispter 中的网关需要有一个数据库。对我来说仍然没有答案的问题: 1- 为什么网关需要数据库?在哪些情况下您会创建网关 with/without 数据库? 2-网关和微服务是否使用相同的数据库?或者他们应该使用单独的数据库实例?

1) 使用 JWT 或 OAuth2 身份验证类型的网关需要一个数据库来存储用户及其帐户详细信息。使用 UAA 身份验证类型的网关不需要数据库,因为 UAA 微服务处理用户和身份验证。

2) 网关和微服务应该使用它们自己的数据库实例。您可以在 dev 中使用相同的数据库实例,但在 prod 中每个实例都应该有自己的。

您可以使用 JHipster 子生成器为您的 gateway/microservices 生成一个 docker-compose or kubernetes 配置,在生成的 YML 文件中,您将看到每个应用程序都有自己的数据库实例。

好的,我对 JHipster-Gateway 及其内部工作原理做了更多研究。以下是与我的问题相关的摘要:

1- 如果用户相关实体和后端代码也在网关代码库中生成,则使用 JWT 或 Oauth2 类型的网关只需要一个数据库。这是默认的 JHipster 网关的情况,但不一定是这样。如 JHipster 文档中所述,JHipster Gateway 实际上是一个单体应用程序,可以用作单体应用程序:

You will have the choice either to generate an new entity normally (a gateway is also a standard JHipster application, so this would work like for a monolith application), or use an existing JHipster configuration from a microservice.

当您创建 JHipster 网关时,它会默认在网关代码库中创建与用户实体相关的后端。但是你可以选择让所有的后端代码(包括用户)在微服务代码库中都是placed/generated。

在这种情况下,JHipster Gateway 应用程序中不需要数据库。网关纯粹作为网关将请求传递给微服务只需要正确设置 /api 配置。

在 JHipster 网关的默认情况下,用户实体后端代码也在网关部分生成,这就是需要数据库的原因。但是您可以将后端代码移动到微服务并通过适当的 /api 配置替换它。