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

消息队列用来向所有在线用户广播“系统后台数据有更新”这一消息是合理的用法吗?

  •  
  •   1oNflow · 2019-10-08 16:35:16 +08:00 · 898 次点击
    这是一个创建于 1898 天前的主题,其中的信息可能已经有所发展或是发生改变。

    构想一个应用场景,系统后台有类似用户排名的数据,数据有少量变化时不需要实时向用户展示更新,但是如果大量变化在某一时段集中出现,后台自动触发更新排名的计算(这个计算比较复杂,如果大量请求服务器压力比较大,所以服务器先全部用户算一遍,然后结果存起来),然后向消息队列发送一个“数据有更新”的消息,所有在线用户都会通过 websocket 订阅消息队列服务器的 fanout 频道,收到这个消息后前端会提醒用户数据已经过时了,用户可以选择向后端请求更新。

    不知道这个场景使用消息队列是合理的吗?(考虑到应该可以减少向后端查询计算的频次,数据更新变成异步操作)

    1 条回复    2019-10-08 16:59:51 +08:00
    haozxuan001
        1
    haozxuan001  
       2019-10-08 16:59:51 +08:00
    还是需要看实际场景,比如游戏排行榜这样的,毕竟不是所有用户都会放在排行榜这个页面,且终端数太庞大相比较由客户端触发拉取比较合适,比如微信运动这种,每天都必须给你主动推送的场景,你能做的就是尽可能的算快点,不管是加机器也好,队列也罢都只是提高并行处理能力的方式,但结果就是比如我之前都是 10 点 03 分收到消息,现在都是 10 点 07,你只能尽量提前,但客户端庞大后也没有很好的办法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:49 · PVG 03:49 · LAX 11:49 · JFK 14:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.