gpt4 book ai didi

session - 在微服务架构中使用 Spring Boot 管理 session 的位置

转载 作者:行者123 更新时间:2023-12-02 17:01:52 24 4
gpt4 key购买 nike

我对微服务架构相当陌生。我一直在尝试使用 Spring Boot、Spring Cloud 和 Netflix OSS 库构建微服务堆栈。我想知道存储 session 的正确方法和位置是什么。

以下是我创建的基础架构的概述:

  1. OAuth2 支持的授权/身份验证服务器
  2. UI 服务(Spring Boot、前端服务)
  3. 后端服务-1
  4. 后端服务-2
  5. Redis 服务器用于存储 session 和其他可缓存数据
  6. 发现服务器( Eureka )

目前,我正在尝试通过配置 UI 服务来执行 session ,从而将 session 存储在 Redis 中。尽管我还没有机会尝试多个服务实例,但它似乎工作正常。但是,我在开发时已经遇到了序列化/反序列化问题。顺便说一句,尝试将 session 存储在前端应用程序上是正确的位置,还是应该在授权/身份验证服务中完成,因为身份验证是在该服务中处理的?

这是我在 UI 服务(前端服务)中的 session 配置

@Configuration
@EnableRedisHttpSession
public class SessionConfig extends
AbstractHttpSessionApplicationInitializer {

public SessionConfig() {
super(RedisConfig.class);
}
}

总而言之,我希望在这个项目上实现并使用最佳实践。我们将不胜感激您的帮助。

最佳答案

一般服务器端用户 session 和微服务风格架构的想法不能很好地结合在一起。原因是您可能会打破您使用分离服务的域边界的关注点分离。

请记住,每个服务都应该自主地解决特定的领域问题 - 包括所有必需的数据持久性。因此,例如,如果对于用户连接的设备有任何需要记住的事情,您将在负责这些设备连接的一项服务中执行此操作,而不是在其他地方执行此操作。该服务将负责处理这些请求并保留设备所需的任何状态。同样,当需要记住有关用户授权的任何内容时,您可以在授权服务中执行此操作。

关于是否使用 Redis 的问题 - 在微服务架构中,存储系统的选择将取决于服务架构师。也许一项服务将其数据存储在关系数据库中,也许另一个服务使用键值存储,还有一个服务可能使用事件队列系统或时间序列数据库。

因此,总而言之,您必须问自己 session 的真正用途是什么,并让相应的服务负责以特定于域的方式保留该信息。 (如果您在问题中提供更多详细信息,我可以给您我的意见)。

关于session - 在微服务架构中使用 Spring Boot 管理 session 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54232574/

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