V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jwh199588
V2EX  ›  程序员

sso 单点登录怎么做集群

  •  
  •   jwh199588 · Dec 9, 2019 · 4618 views
    This topic created in 2343 days ago, the information mentioned may be changed or developed.

    因为项目的缘故,在环境部署到正式环境,进行压力测试的时候,发现 sso 单点登录的压力特别的高, 现在项目结构是不能调整了,有没有办法针对 sso 做负载均衡,

    23 replies    2020-06-24 16:11:31 +08:00
    likuku
        1
    likuku  
       Dec 9, 2019
    sso 入口是怎么个形式的服务? https? udp? 承载的服务 /服务器 可以横向多机 /实例么?

    可以的话,那就前面挂个负载均衡。
    lhx2008
        2
    lhx2008  
       Dec 9, 2019 via Android   ❤️ 1
    seesion 用 key 的形式抽出来放到 redis 上面,sso 本身无状态,横向扩展就可以了,redis 不够就做 redis 集群,至于登录查数据库这里随便个 mysql 主从就能撑住了
    jugelizi
        3
    jugelizi  
       Dec 9, 2019
    登录压力高?
    opengps
        4
    opengps  
       Dec 9, 2019 via Android
    共享到内存中
    likuku
        5
    likuku  
       Dec 9, 2019
    session 传统就用 memcached 了,临时数据嘛,redis 太奢侈
    solaro
        6
    solaro  
       Dec 10, 2019
    @likuku memcache 的简单集群可真的比 redis 爽太多了。
    xuanbg
        7
    xuanbg  
       Dec 10, 2019
    楼主这有多少用户同时在线啊,sso 居然会撑不住?看看时间都花在什么地方吧,优化下代码应该就好了吧。
    GoRoad
        8
    GoRoad  
       Dec 10, 2019
    哪个朋友推荐的 去找哪个朋友
    jwh199588
        9
    jwh199588  
    OP
       Dec 10, 2019
    @likuku 使用了 apache 的负载均衡,但是在调用 /oauth/authorize 方法的时候,返回的 code 在另外一台 sso 上并不存在,所有获取 token 的时候,会报错
    lihongjie0209
        10
    lihongjie0209  
       Dec 10, 2019
    登录压力高??那这么多用户都查询一个复杂 SQL 你的系统直接就崩了?
    jwh199588
        11
    jwh199588  
    OP
       Dec 10, 2019
    @lihongjie0209 我是在做压测的时候,发现所有的用户都需要经过 sso,这样 sso 的压力会特别大,所以想做成集群
    anyforever
        12
    anyforever  
       Dec 10, 2019
    难道你的用户都在时时刻刻在做登录操作么。。
    lihongjie0209
        13
    lihongjie0209  
       Dec 10, 2019
    @jwh199588 #11
    多少 qps 啊, 压力大是指 CPU ? 内存?响应时间?
    做集群是为了高可用还是高性能?
    zsc8917zsc
        14
    zsc8917zsc  
       Dec 10, 2019
    @jwh199588 压测的时候是集中登录吧,现实情况登录压力都是分散的,很难有那么多用户集中登录的情景
    jwh199588
        15
    jwh199588  
    OP
       Dec 10, 2019
    @lihongjie0209 主要是因为是国产化平台,所以服务器的性能很低,所以想使用负载来做
    lihongjie0209
        16
    lihongjie0209  
       Dec 10, 2019
    那就找一台数据库服务器( mysql 或者 redis )做数据共享, 前面挂两个 sso, 再做一个反向代理就好了。
    JamesMackerel
        17
    JamesMackerel  
       Dec 10, 2019 via iPhone
    说的是 oauth 压力大吧,这个可以理解,毕竟每一次请求都会问一下你的 sso 服务器。按照上面老哥说的做个无状态,前面挂个 nginx 就可以了。
    izoabr
        18
    izoabr  
       Dec 10, 2019
    @jwh199588 #11 但是业务环境中,用户登陆行为是分散的,而且有 session 加持不是每个请求都要去认证,所以那个压力是一次性的呀。
    index90
        19
    index90  
       Dec 10, 2019
    不如先说说你的 SSO 是如何实现的吧,毕竟现在一百个人有一百种“SSO”实现方式……
    ecloud
        20
    ecloud  
       Dec 10, 2019
    天生就有很好的集群支持的 SSO 是 kerberos
    likuku
        21
    likuku  
       Dec 10, 2019 via iPhone
    @jwh199588 apache 还有负载均衡? LB 我都用 HAProxy,nginx 作负载均衡我都不想用它。SQL 或者任何 DB 查询的多,那么充分用上缓存吧…memcached 传统,但依然管用。
    shawndev
        22
    shawndev  
       Dec 11, 2019
    通常登录模块设计合理的话不会成为性能瓶颈,登录能达到性能瓶颈的业务规模会有专人解决这些问题。
    Shikyou
        23
    Shikyou  
       Jun 24, 2020
    @index90 实现单点登录最快的方式,可以用国内的 Authing,国外的 Auth0 / AWS Cognito 这一类用户身份验证的云服务,给应用添加注册、登录和访问控制功能很快
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2747 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 132ms · UTC 15:36 · PVG 23:36 · LAX 08:36 · JFK 11:36
    ♥ Do have faith in what you're doing.