Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Service 关于系统结构的建议_Service_Redis_Architecture_Microservices - Fatal编程技术网

Service 关于系统结构的建议

Service 关于系统结构的建议,service,redis,architecture,microservices,Service,Redis,Architecture,Microservices,我对系统架构有一些疑问。我正在建立一个票务系统。基本上,它是在创建支持票证 我试图弄清楚我是否以正确的方式使用了这些组件 关于第一个案件,senario: 客户端请求创建新票证,网关将请求转发给票务服务,票务服务希望检查令牌是否有效,因此通过nats使用令牌抛出发布,如果令牌有效,则验证服务将令牌和信息注册到Redis一段时间,比方说30分钟。并将结果发布到nats。Nats将结果重定向到票务服务。如果一切正常,票务服务会在数据库中创建一条记录 第二个案例senorio是: 用户再次执行上面

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

我试图弄清楚我是否以正确的方式使用了这些组件

关于第一个案件,senario:

客户端请求创建新票证,网关将请求转发给票务服务,票务服务希望检查令牌是否有效,因此通过nats使用令牌抛出发布,如果令牌有效,则验证服务将令牌和信息注册到Redis一段时间,比方说30分钟。并将结果发布到nats。Nats将结果重定向到票务服务。如果一切正常,票务服务会在数据库中创建一条记录

第二个案例senorio是:

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

这是我的问题

你认为Redis的用途正确吗?或者,当一个请求涉及到身份验证时,我应该删除它并反复询问吗

你认为我应该在Gateway上做所有的身份验证吗

因此,这看起来与上述问题有关

在初始登录和请求时。(第一种情况)

登录后,(第二种情况场景)

我将非常感谢您的建议、批评和评论


先谢谢你

更合适的方法是从API网关进行身份验证,即API网关使用身份验证服务进行身份验证,如您在第二个选项中针对所建议的两种解决方案所述

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

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


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

您好,非常感谢您的回复。这似乎是合理的变化,但有一点是,你认为redis是存储代币的有效方式吗?我想我会将令牌放置30分钟,30分钟后,身份验证服务将重新生成令牌,并在接下来的30分钟内推送redis,而不是使用数据库,它将使用redis检索密钥。另一方面,我认为查询将非常特殊,因此db可以单独处理它。我不确定我是否真的在使用redis。注意,如果你没有太多的负载,你可能不需要使用redis,尽管你可以使用redis,因为它们有TTL功能,可以自动终止缓存的内容。我不确定SQL数据库中是否有类似的数据库。为了解决另一个问题,我认为身份验证服务不应该自动刷新令牌,如果这是您的意思的话。这涉及到更多的复杂性,并且很容易陷入允许用户永久访问的安全陷阱。谢谢你的建议,我现在更清楚了:)