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

sso 单点登录怎么做集群

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

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

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

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