请教一下关于 App 消息推送的一些问题?

2021-01-27 04:52:48 +08:00
 cqsc

小弟最近刚结束实习,实习期间负责的项目使用到了 MQTT 协议,对消息推送挺感兴趣的,所以有些问题想请教下各位大佬。想问下如果需要实现可一个高并发、高可用的消息代理服务器需要怎样的理论和技术的支撑?

如果需要像大量用户推送即时消息( IM ),如何尽可能的减小消息的延迟(即尽可能保证每个用户收到的消息时间间隔不会过大)?

1547 次点击
所在节点    程序员
5 条回复
securityCoding
2021-01-27 10:19:39 +08:00
https://github.com/mpusher/mpush
看看这个项目,很成熟了
asAnotherJack
2021-01-27 11:35:09 +08:00
之前做过推送,高并发问题用 mq,延迟问题说白了就是尽快把消息交给第三方厂商(小米、极光、个推什么的),最简单的方式加机器,加消费者,紧接着瓶颈会转移到 db 查 token,这里当时是通过批量查询优化的,效果很可观,再接下来瓶颈就到了厂商的限速上了,可以考虑同时接多个厂商,以及和厂商沟通提高限速,极光的话有批量推的接口。
不知道你做的推送是自己从底层实现,还是接三方厂商,我上边说的是接三方厂商的
cqsc
2021-01-27 15:55:41 +08:00
@asAnotherJack PUSH 推送是调用的第三方 SDK,目前打算写一个推送服务的统一调用接口,并提供平台给管理员使用。
另外有个问题想问下大佬,即时消息(比如像淘宝 App 的商家对话)一般需要写入数据库吗。因为感觉如果是持久化到 DB 的话,可以直接用 MQ 异步写入数据库然后用户打开 APP 自动获取即可,或者说利用 MQTT 等应用层协议保证消息可达,然后用户启动 APP 获取消息并缓存到本地?
jimrok
2021-01-27 20:19:49 +08:00
你需要知道 tcp/ip 的基础知识,c10k 问题,epoll,如果你做群集方案,你还要补一下 MIT 分布式系统课程,此外还需要杂七杂八的一些知识。
cqsc
2021-01-28 05:26:50 +08:00
@jimrok 谢谢大佬!如果是准备应届生面试的话,实现一个单体的消息系统可以作为项目经历吗?分布式的内容暂时还没有深入学习,暂时还不能应用 TAT

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/748737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX