小弟最近刚结束实习,实习期间负责的项目使用到了 MQTT 协议,对消息推送挺感兴趣的,所以有些问题想请教下各位大佬。想问下如果需要实现可一个高并发、高可用的消息代理服务器需要怎样的理论和技术的支撑?
如果需要像大量用户推送即时消息( IM ),如何尽可能的减小消息的延迟(即尽可能保证每个用户收到的消息时间间隔不会过大)?
1
securityCoding 2021-01-27 10:19:39 +08:00
https://github.com/mpusher/mpush
看看这个项目,很成熟了 |
2
asAnotherJack 2021-01-27 11:35:09 +08:00
之前做过推送,高并发问题用 mq,延迟问题说白了就是尽快把消息交给第三方厂商(小米、极光、个推什么的),最简单的方式加机器,加消费者,紧接着瓶颈会转移到 db 查 token,这里当时是通过批量查询优化的,效果很可观,再接下来瓶颈就到了厂商的限速上了,可以考虑同时接多个厂商,以及和厂商沟通提高限速,极光的话有批量推的接口。
不知道你做的推送是自己从底层实现,还是接三方厂商,我上边说的是接三方厂商的 |
3
cqsc OP @asAnotherJack PUSH 推送是调用的第三方 SDK,目前打算写一个推送服务的统一调用接口,并提供平台给管理员使用。
另外有个问题想问下大佬,即时消息(比如像淘宝 App 的商家对话)一般需要写入数据库吗。因为感觉如果是持久化到 DB 的话,可以直接用 MQ 异步写入数据库然后用户打开 APP 自动获取即可,或者说利用 MQTT 等应用层协议保证消息可达,然后用户启动 APP 获取消息并缓存到本地? |
4
jimrok 2021-01-27 20:19:49 +08:00
你需要知道 tcp/ip 的基础知识,c10k 问题,epoll,如果你做群集方案,你还要补一下 MIT 分布式系统课程,此外还需要杂七杂八的一些知识。
|