• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aricch
V2EX  ›  程序员

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

  •  
  •   aricch · Mar 15, 2018 · 7056 views
    This topic created in 3159 days ago, the information mentioned may be changed or developed.

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

    42 replies  •  2018-03-16 12:10:08 +08:00
    uqf0663
    uqf0663
    Mar 15, 2018❤️2
    1
    存 redis 里
    autumnshine
    autumnshine
    Mar 15, 2018
    2
    spring session
    liwl
    liwl
    Mar 15, 2018
    3
    存 redis 里
    fzleee
    fzleee
    Mar 15, 2018
    5
    使用一致性哈希算法负载均衡,这样就可以避免 session 同步
    aricch
    aricch
    OP
    Mar 15, 2018
    6
    @uqf0663
    @autumnshine
    @liwl
    @linyinma 都看过相应 方案,也自己试过 Memcached,结果发现大量不同同步的情况,各位 有没有实际用过,以及遇到过有哪些坑儿?
    aricch
    aricch
    OP
    Mar 15, 2018
    7
    @fzleee 求详解
    realityone
    realityone
    Mar 15, 2018 via iPhone
    8
    最简单加密存到 cookie 里
    af463419014
    af463419014
    Mar 15, 2018
    9
    存 redis +1
    Moker
    Moker
    Mar 15, 2018
    10
    Reids 或者 JWT ?
    z1154505909
    z1154505909
    Mar 15, 2018
    11
    存 redis+2
    pathbox
    pathbox
    Mar 15, 2018 via iPhone
    12
    用 ip hash 负载算法 或者就是用 redis 存
    wentx
    wentx
    Mar 15, 2018
    13
    存 redis +10086
    gouchaoer
    gouchaoer
    Mar 15, 2018❤️1
    14
    不可以用 ip hash,因为 ip 会变
    yy120345
    yy120345
    Mar 15, 2018
    15
    redis
    novacn
    novacn
    Mar 15, 2018
    16
    spring session
    baiy
    baiy
    Mar 15, 2018
    17
    session 一致性架构设计实践
    http://mp.weixin.qq.com/s/NnnqVrC9-Jekwy3Opmvy_w
    aricch
    aricch
    OP
    Mar 15, 2018
    18
    @realityone 有些信息不想存本地

    @gouchaoer 对,不能用 ip,尤其是移动应用,分分钟 wifi 到 4G,互相切换 。
    @all 推荐 redis 的,有坑儿吗?稳定吗?
    q397064399
    q397064399
    Mar 15, 2018
    19
    首推 Redis Spring 有相应的接口 一行代码都不用写,Redis 可以考虑购买 阿里云的 Redis 集群,避免宕机
    nicevar
    nicevar
    Mar 15, 2018❤️1
    20
    关注一下,这个问题不是上面一堆人的一句存 redis 那么简单,实际情况很复杂,与业务上有很大的关系,比如请求是否是无标识单向的,一台 session 服务器宕机之后这部分用户处理问题,同步成本开销等等,楼主搞定了记得分享一下
    kenshin912
    kenshin912
    Mar 15, 2018 via iPhone
    21
    ip_hash
    或者 Redis
    aricch
    aricch
    OP
    Mar 15, 2018
    22
    @novacn
    @q397064399 你俩说的是同一个东西吗?

    @baiy
    @nicevar 感谢
    TZ
    TZ
    Mar 15, 2018
    23
    看来都是用 redis 的
    binux
    binux
    Mar 15, 2018
    24
    加密,存用户那
    WeeH9T
    WeeH9T
    Mar 15, 2018
    25
    JWT
    likuku
    likuku
    Mar 15, 2018
    26
    @nicevar memcached 差不多 10 年前就有日本人搞出来双向自动同步的简单集群分支。
    fzleee
    fzleee
    Mar 15, 2018
    27
    @aricch 参见 @baiy 回复文章链接的第三节,反向代理 hash 一致性
    q397064399
    q397064399
    Mar 15, 2018
    28
    @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
    vance
    Mar 15, 2018
    29
    1.Nginx 一致性 Hash 2.Redis 管理 3.不用 Session
    night98
    night98
    Mar 15, 2018 via Android
    30
    最近新开项目搭框架的时候也遇到了这个问题,目前比较主流的方案就是 redis 共享 session,使用 springboot+springsession 的话一行代码就解决了,其他的就是 jwt,相当于用户信息加密保存到 c 端,每次请求带上这个数据即可,优点是服务器无 session 化,经过对比后我选的是 redis 共享的方案,比较方便
    janxin
    janxin
    Mar 15, 2018
    31
    我来说一个不一样的,cookies 植入后端服务器信息(没必要写 ip 域名),前端负载均衡根据 cookie 选择。不保证请求均衡,可支持水平伸缩。
    RubyJack
    RubyJack
    Mar 15, 2018
    32
    客户端方案是用 JWT 这类,服务端方案就是 Session 集中存储
    wucao219101
    wucao219101
    Mar 15, 2018
    33
    Spring Seession + Redis 用的很舒服

    http://xxgblog.com/2016/09/29/spring-session-redis/
    vibbow
    vibbow
    Mar 15, 2018
    34
    同时存本机和共享数据库里。
    LB 做 sticky session。

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

    低延迟, 高并发和一致性都可以保证
    jorneyr
    jorneyr
    Mar 15, 2018
    37
    JWT 挺好的
    janxin
    janxin
    Mar 15, 2018
    38
    @jasonchn #35 无论什么样的方案,入口总是要可用的,server_id 表同步方式也有很多
    1762628386
    1762628386
    Mar 15, 2018
    39
    都别一句话完事啊 有没有大佬结合自己使用中的场景讲讲的
    aricch
    aricch
    OP
    Mar 16, 2018
    40
    @fzleee ip_hash 不行的,换 ip 了就不一定在登录那台服务器上了。
    aricch
    aricch
    OP
    Mar 16, 2018
    41
    @vance
    @night98
    @wucao219101
    @RubyJack
    @wucao219101
    @vibbow
    @gandofyan
    @jorneyr
    @1762628386
    @q397064399
    @likuku
    @TZ
    @binux
    @hambut 各位感谢,准备用 Redis 再实践一下。
    @janxin 感谢新思路
    JRay
    JRay
    Mar 16, 2018
    42
    存 redis +1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   669 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 20:08 · PVG 04:08 · LAX 12:08 · JFK 15:08
    ♥ Do have faith in what you're doing.