多个微服务之间的session共享问题

op520f 2017-11-08 09:28:59
现在我们有一个zuul+redis+springcloud,然后有多个springboot做的微服务,其中有一个专门做个人中心的微服务,我们会在这个服务做注册登录操作,然后别的微服务做业务处理。因为是第一次做,不知道这个网关究竟可不可以做到多个微服务之间的session共享,就是我们在微服务A做了登录操作,保存用户信息到session,然后在微服务B里面取到用户信息。多个微服务的项目名是不一样的。如果是同一个微服务,部署在不同的服务器上面这种情况我们是可以做到session共享。
...全文
1358 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyZQC 2020-05-27
  • 打赏
  • 举报
回复
https://blog.csdn.net/luckyZQC/article/details/105731463
参考这个
小码人生 2020-05-27
  • 打赏
  • 举报
回复
做负载均衡的时候使用iphash策略
光哥_帅 2020-05-27
  • 打赏
  • 举报
回复
引用 5 楼 op520f 的回复:
[quote=引用 3 楼 maradona1984 的回复:] 不建议系统设计成这样子 微服务连数据库都是隔离的,你这连缓存都能共享,这个不合理,各个服务都能访问session,如果个人中心升级,session存储的对象结构变化其他服务是不是都得升级? 服务倒是可以有办法多个版本兼容,但你session只有一个,你这耦合度太高,有违微服务架构的初衷 建议做成松散的授权登录模式比较好
第一次设计,也没大佬带领不知道怎么设计,现在这个session问题解决了,只要把各个微服务统一不要用path路径就能共享了,但是现在我们数据库也根据微服务划分了,每个微服务对应一个数据库,现在有些数据要从别的微服务获取,不知道用哪种方式合理点,我们最坏的打算就是模拟http做为各个微服务之间的交互[/quote] feign 可以调用其他服务的数据
qwe520liao 2017-11-09
  • 打赏
  • 举报
回复
Session ID 是基于浏览器Cookie随发送请求的时候自动附带的,只要你的网关服务Zuul没有过滤掉Cookie的HTTP Header,你的上游服务是可以获取得到ID标识,并在适当的过滤器或者拦截器进行查询并封装到Request Session中的,至于你的Session信息是存储在Redis还是其他的地方,完全可以自己定。不过我记得Spring好像对这方面是有支持的,建议你看一下Spring-Session这个项目。 https://docs.spring.io/spring-session/docs/current/reference/html5/
maradona1984 2017-11-09
  • 打赏
  • 举报
回复
不建议系统设计成这样子 微服务连数据库都是隔离的,你这连缓存都能共享,这个不合理,各个服务都能访问session,如果个人中心升级,session存储的对象结构变化其他服务是不是都得升级? 服务倒是可以有办法多个版本兼容,但你session只有一个,你这耦合度太高,有违微服务架构的初衷 建议做成松散的授权登录模式比较好
Sunyiban 2017-11-09
  • 打赏
  • 举报
回复
用redis session共享也行嘛
op520f 2017-11-09
  • 打赏
  • 举报
回复
引用 3 楼 maradona1984 的回复:
不建议系统设计成这样子 微服务连数据库都是隔离的,你这连缓存都能共享,这个不合理,各个服务都能访问session,如果个人中心升级,session存储的对象结构变化其他服务是不是都得升级? 服务倒是可以有办法多个版本兼容,但你session只有一个,你这耦合度太高,有违微服务架构的初衷 建议做成松散的授权登录模式比较好
第一次设计,也没大佬带领不知道怎么设计,现在这个session问题解决了,只要把各个微服务统一不要用path路径就能共享了,但是现在我们数据库也根据微服务划分了,每个微服务对应一个数据库,现在有些数据要从别的微服务获取,不知道用哪种方式合理点,我们最坏的打算就是模拟http做为各个微服务之间的交互
ylovep 2017-11-09
  • 打赏
  • 举报
回复
不如用haproxy做负载均衡 使用iphash 保持session一致性

67,547

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧