有关系统架构的建议

时间:2018-10-17 15:53:59

标签: service redis architecture microservices

我对系统架构有一些疑问。我正在建立票务系统。基本上,它是在创建支持凭单。

我试图确定我是否以正确的方式使用了组件。

在第一种情况下:

enter image description here

客户端请求创建新票证,网关将请求转发到票务服务,票证服务要检查令牌是否有效,因此通过带有令牌的nat引发发布,如果令牌是有效的身份验证服务注册令牌和信息与Redis的键值对建立了一段时间,可以说是30分钟。并将结果发布到nat。 Nats将其重定向到票务服务结果。如果一切正常,票务服务将在数据库上创建一条记录。

senorio的第二种情况是:

enter image description here

用户再次执行上述所有步骤,但是在身份验证方面,而不是要求身份验证服务从Redis获取信息(如果存在)并再次执行相同的步骤。

这是我的问题,

您认为Redis用于正确的目的吗?还是我应该删除它,然后一遍又一遍地询问身份验证请求?

您认为我应该在Gateway上进行所有身份验证吗?

因此它看起来与上述问题有关。

关于初始登录和请求。 (第一种情况)

enter image description here

登录后(第二种情况)

enter image description here

非常感谢您的建议,批评和意见。

先谢谢您。

1 个答案:

答案 0 :(得分:1)

更正确的方法是从API网关进行身份验证,即API网关通过身份验证服务进行身份验证,这在您提出的两个解决方案的第二个选项中均已提及。

API网关应证明是您所有请求的“网关”,并过滤未经身份验证或授权才能访问您的服务的任何请求。在这种情况下,身份验证和授权可以是它们自己的服务,API网关将使用该服务来确定请求是否可以访问任何其他下游服务。除了这个事实,它还通过删除NATS消除了复杂性。操作和管理少了一个组件永远是胜利。

我要做的一个小修改是,在第二步中,我将使身份验证服务检查Redis,而不是直接将API网关转到Redis。换句话说,身份验证服务将先进入Redis,然后再进入数据库。这样,可以进行更多的去耦。

API网关不需要知道身份验证服务如何在Redis中存储令牌的密钥。因此,如果您决定更改密钥在身份验证服务中的方式,则不必有效地部署新的更改,以更改如何从API网关中的Redis读取密钥。