web server 不同服务器之间的通信问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
bluesky139
V2EX    程序员

web server 不同服务器之间的通信问题

  •  
  •   bluesky139
    bluesky139 2016-11-01 16:19:17 +08:00 4091 次点击
    这是一个创建于 3265 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Alt text

    看图,有一台列表服务器,开了多个进程,放在 nginx 后面,多个进程从同一个 redis 里面共享数据。

    其它服务器上有服务 A ,服务 B ,向列表服务器注册,并且每 3 秒发一次心跳,表明自己在线,如果 10 秒内列表服务器都没有收到心跳就认定这个服务离线了。列表服务器把每次心跳的时间存在 redis 里面供多进程共享。

    用户向列表服务器请求的时候,返回可用的服务列表(实际上还包含一些其它的信息)。

    想说的问题是,要有多台列表服务器的情况下,心跳包怎么办?

    Plan A: 服务 A ,服务 B ,向每台列表服务器发心跳,但实际上第一次向列表服务器发心跳的时候,列表服务器会返回些内容,比如分配的一个 ID ,这时有多个列表服务器就不行了。虽然也可以向一台固定的列表服务器发第一个心跳,先拿到 ID 再向其它服务器发,但总觉得不好。

    Plan B: redis 使用 master slave 来同步,其它服务仍然只向一台列表服务器发心跳,不知道是否可行。如果第一台列表服务器挂了怎么办。

    各位怎么处理类似这样的例子的?

    8 条回复    2016-11-02 08:58:03 +08:00
    clino
        1
    clino  
       2016-11-01 16:30:16 +08:00
    redis 不能共用一个吗?
    有多个 web 应用服务器多个 nginx,但只同时连同一个 redis 做缓存
    bluesky139
        2
    bluesky139  
    OP
       2016-11-01 16:34:35 +08:00
    @clino 我现在是直接以同步的方式操作 redis (因为 redis 够快,还没有卡在这个地方),如果共用一个 redis ,要跨机器,那就得改成异步的?
    sherlocktheplant
        3
    sherlocktheplant  
       2016-11-01 16:37:39 +08:00
    @bluesky139 redis 单独开一台或者多台机器不就行了?
    bluesky139
        4
    bluesky139  
    OP
       2016-11-01 16:55:35 +08:00
    @sherlocktheplant redis 放单独机器上需要异步去查询,反而觉得慢了。
    ibigbug
        5
    ibigbug  
       2016-11-01 16:58:07 +08:00
    把 nginx 和 redis 拆出来,进程 1...进程 N 就能水平扩展了,也可以是机器 1...机器 N ,这种无状态是最方便的。

    跨机器不一定非要是异步的,同机房网络延迟 10ms 左右可以接受。

    大规模应用别说跨机器了,跨机房、跨地区调用都是有的。
    rrfeng
        6
    rrfeng  
      2016-11-01 17:05:39 +08:00
    这不就是个服务注册器么,请把 redis 换成 zookeeper / etcd
    clino
        7
    clino  
       2016-11-01 17:12:17 +08:00
    @bluesky139 我觉得应该可以不用异步的,你可以测试下同步做法下性能能不能接受
    chocotan
        8
    chocotan  
       2016-11-02 08:58:03 +08:00
    zookeeper+1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2942 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:36 PVG 21:36 LAX 06:36 JFK 09:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86