构想一个应用场景,系统后台有类似用户排名的数据,数据有少量变化时不需要实时向用户展示更新,但是如果大量变化在某一时段集中出现,后台自动触发更新排名的计算(这个计算比较复杂,如果大量请求服务器压力比较大,所以服务器先全部用户算一遍,然后结果存起来),然后向消息队列发送一个“数据有更新”的消息,所有在线用户都会通过 websocket 订阅消息队列服务器的 fanout 频道,收到这个消息后前端会提醒用户数据已经过时了,用户可以选择向后端请求更新。
不知道这个场景使用消息队列是合理的吗?(考虑到应该可以减少向后端查询计算的频次,数据更新变成异步操作)
1
haozxuan001 2019-10-08 16:59:51 +08:00
还是需要看实际场景,比如游戏排行榜这样的,毕竟不是所有用户都会放在排行榜这个页面,且终端数太庞大相比较由客户端触发拉取比较合适,比如微信运动这种,每天都必须给你主动推送的场景,你能做的就是尽可能的算快点,不管是加机器也好,队列也罢都只是提高并行处理能力的方式,但结果就是比如我之前都是 10 点 03 分收到消息,现在都是 10 点 07,你只能尽量提前,但客户端庞大后也没有很好的办法
|