V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cqsc
V2EX  ›  程序员

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

  •  
  •   cqsc · 2021-01-27 04:52:48 +08:00 · 1576 次点击
    这是一个创建于 1422 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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