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

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

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

    小弟最近刚结束实习,实习期间负责的项目使用到了 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     Solana     3616 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:50 PVG 08:50 LAX 16:50 JFK 19:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86