负载均衡后的 Session 同步问题有什么成熟的好用的方案?

2018-03-15 10:37:28 +08:00
 aricch

各位老铁,nginx 做负载均衡 反代到 tomcat 后的用户 Session 同步 有什么成熟的好用的方案?

5846 次点击
所在节点    程序员
42 条回复
kenshin912
2018-03-15 11:38:09 +08:00
ip_hash
或者 Redis
aricch
2018-03-15 11:39:08 +08:00
@novacn
@q397064399 你俩说的是同一个东西吗?

@baiy
@nicevar 感谢
TZ
2018-03-15 12:26:29 +08:00
看来都是用 redis 的
binux
2018-03-15 12:27:44 +08:00
加密,存用户那
hambut
2018-03-15 12:32:23 +08:00
JWT
likuku
2018-03-15 12:38:10 +08:00
@nicevar memcached 差不多 10 年前就有日本人搞出来双向自动同步的简单集群分支。
fzleee
2018-03-15 13:01:35 +08:00
@aricch 参见 @baiy 回复文章链接的第三节,反向代理 hash 一致性
q397064399
2018-03-15 15:20:29 +08:00
@nicevar #20
https://mp.weixin.qq.com/s/NnnqVrC9-Jekwy3Opmvy_w


无标识单向,不明白是什么 请指教。

Session 服务器宕机? Redis 有集群,master 节点挂了 还有 slave,Redis 还有一致性 hash
可用性是完全可以保证的,后端存 Session 存 Token 基本上都是采取集中式的处理,,
这样 web 服务 可以水平扩展,但实际上 web 服务扩展 看不到什么卵用,,
之前的一个项目,压力全在 DB 上,即使水平扩展 web 服务 也是看不到什么卵用的,
搞 web 还是 把数据库搞明白,该填的 都得填了
vance
2018-03-15 16:35:01 +08:00
1.Nginx 一致性 Hash 2.Redis 管理 3.不用 Session
night98
2018-03-15 18:01:20 +08:00
最近新开项目搭框架的时候也遇到了这个问题,目前比较主流的方案就是 redis 共享 session,使用 springboot+springsession 的话一行代码就解决了,其他的就是 jwt,相当于用户信息加密保存到 c 端,每次请求带上这个数据即可,优点是服务器无 session 化,经过对比后我选的是 redis 共享的方案,比较方便
janxin
2018-03-15 18:08:43 +08:00
我来说一个不一样的,cookies 植入后端服务器信息(没必要写 ip 域名),前端负载均衡根据 cookie 选择。不保证请求均衡,可支持水平伸缩。
RubyJack
2018-03-15 18:11:59 +08:00
客户端方案是用 JWT 这类,服务端方案就是 Session 集中存储
wucao219101
2018-03-15 18:20:27 +08:00
Spring Seession + Redis 用的很舒服

http://xxgblog.com/2016/09/29/spring-session-redis/
vibbow
2018-03-15 18:21:41 +08:00
同时存本机和共享数据库里。
LB 做 sticky session。

这样绝大多数情况都不会牵扯到 session 共享
一旦一个机子掉了,请求被打到另一台服务器上,也可以通过共享数据库取出 session
jasonchn
2018-03-15 18:35:34 +08:00
@janxin 这样的话,负载均衡本身还要实现高可用,要考虑负载均衡之间同步 server id 表的问题。
gandofyan
2018-03-15 19:18:03 +08:00
spring session + apache Geode 集群

低延迟, 高并发和一致性都可以保证
jorneyr
2018-03-15 20:00:02 +08:00
JWT 挺好的
janxin
2018-03-15 22:09:14 +08:00
@jasonchn #35 无论什么样的方案,入口总是要可用的,server_id 表同步方式也有很多
1762628386
2018-03-15 23:24:44 +08:00
都别一句话完事啊 有没有大佬结合自己使用中的场景讲讲的
aricch
2018-03-16 08:42:13 +08:00
@fzleee ip_hash 不行的,换 ip 了就不一定在登录那台服务器上了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/438226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX