gpt4 book ai didi

session - 微服务 session 管理

转载 作者:行者123 更新时间:2023-12-05 05:06:42 25 4
gpt4 key购买 nike

据我所知,微服务架构中的最佳实践是不使用共享数据库/缓存,因此每个微服务都应该有自己的数据库和缓存数据库/机制。但是 session 呢?

我发现大多数人都建议使用分布式 session 存储,据我所知,分布式 session 存储意味着为 session 共享存储。但这是第一个问题。应该只有 API 网关验证 session 还是每个微服务都应该验证 session ?换句话说,如果前端发送一些请求,我应该只验证 API 网关中的 session 还是 API 网关与之通信的每个微服务中的 session ?

此外,我听说,主要是在一些 session 的 YouTube 视频中,一些团队使用单独的微服务来管理 session 。但是我找不到有关该方法的太多信息。看起来它允许我们不共享 session 存储并在一个地方管理它作为微服务架构中的其他存储。但我认为它会降低应用程序的速度,因为它会增加通信开销。我想听听您对这种方法有何看法?

最佳答案

session

现代应用程序需要无状态才能扩展。当用户通过身份验证时,他们会获得一个 token ,每个请求都会在请求 header 中携带该 token (JWT token )。通常 token 会过期,Gateway 可以重定向到任何应用程序实例。 token 携带他们获得身份验证所需的一切。

验证 token / session

您需要在网关验证 session ,这是首选方法。但这真的取决于你的设计。如果您在 api 网关后面有服务并且有任何公共(public)访问权限,那么肯定需要在每个应用程序/服务中验证 token 。如果您的服务是私有(private)的,那么您只能在 Api 网关验证 token 并拒绝未经验证的请求。

如果您使用著名的身份提供商(如 auth0、Okta 等),原生云网关(例如 AWS Api Gatway)无需编写任何额外代码即可验证 token 。如果需要用户声明,那么您可能需要在应用程序中编写逻辑或使用 native 库从 token 中获取用户声明。我相信在整个场景中,除非您想编写自己的服务来发布和验证 token ,否则您不需要任何额外的 Auth 微服务,我认为这不是一个好主意。

关于session - 微服务 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59656650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com