V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thomaswang
V2EX  ›  问与答

聊天系统服务端

  •  
  •   thomaswang · 2018-04-19 19:06:04 +08:00 · 1521 次点击
    这是一个创建于 2410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mini-chat.png

    一个聊天室里面很多人,nginx 负载均衡到三台服务器,如果 server1 上一个人说了一句话,我如何通知 server2,server3,把这句话发送给连接在他们上面的用户

    8 条回复    2018-04-19 22:21:18 +08:00
    hand515
        1
    hand515  
       2018-04-19 19:09:14 +08:00
    简单:redis pub/sub
    current
        2
    current  
       2018-04-19 19:30:43 +08:00
    消息同步是很典型的 im 实践吧。。
    chinvo
        3
    chinvo  
       2018-04-19 19:34:08 +08:00
    后端服务器共用内存数据库或者消息队列
    chinvo
        4
    chinvo  
       2018-04-19 19:34:38 +08:00
    比如 RabbitMQ 之类的 MQTT,用 Fanout 模式
    earther01
        5
    earther01  
       2018-04-19 20:08:51 +08:00 via iPhone
    @chinvo RabbitMQ fanout 模式支持消费者发消息吗?
    chinvo
        6
    chinvo  
       2018-04-19 20:28:39 +08:00
    @earther01 理论上各主机都得同时开 publish 和 subscribe
    Lax
        7
    Lax  
       2018-04-19 22:17:20 +08:00
    需要一个表记录 user-server 对应关系,用于查询。用户登录时写入,用户退出时删除
    feverzsj
        8
    feverzsj  
       2018-04-19 22:21:18 +08:00
    你这一个聊天室能有几千万人吗?一台服务器还搞不定?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1430 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.