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

时间:2019-11-21 11:16:07

标签: spring microservices jhipster api-gateway

我正在基于受支持的微服务体系结构试用JHipster。如文档中所述,我已经创建了注册表,网关和微服务(基于JWT身份验证),并且一切正常。但是我不确定为什么JHispter中的网关需要数据库。对我来说仍然没有答案的问题: 1-为什么网关需要数据库?在哪种情况下,您将创建带有/不带有数据库的网关? 2-网关和微服务是否使用相同的数据库?还是应该使用单独的数据库实例?

2 个答案:

答案 0 :(得分:1)

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

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

您可以使用JHipster子生成器为网关/微服务生成docker-composekubernetes配置,并且在生成的YML文件中,您将看到每个应用程序都有其自己的数据库实例。

答案 1 :(得分:0)

好吧,我对JHipster-Gateway及其内部功能进行了更多研究。以下是与我的问题有关的摘要:

1-使用JWT或Oauth2类型的网关仅在网关代码库中还生成了与用户相关的实体和后端代码的情况下,才需要数据库。默认的JHipster网关就是这种情况,但不必如此。如JHipster文档中所述,JHipster网关实际上是一个整体应用程序,可以用作整体应用程序:

  

您可以选择正常生成一个新实体(网关也是标准的JHipster应用程序,因此对于单片应用程序而言,它可以工作),或者使用微服务中的现有JHipster配置。

创建JHipster网关时,它将默认在网关代码库中创建与用户实体相关的后端。但是您可以选择在Microservice代码库中放置/生成所有后端代码(包括用户)。

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

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