大量的消息拉取并发方案讨论 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
hh3755

大量的消息拉取并发方案讨论

  •  
  •   hh3755 Jan 17, 2015 4090 views
    This topic created in 4121 days ago, the information mentioned may be changed or developed.

    大家好,最近做一个消息推送系统,批量推送到用户后,会有一个同时的大量拉取消息的行为,想法是做读写分离来支持瞬时较高并发。

    实现时,从多个从库(只读)筛选出用户的消息,然后同时连主库(可写),更新对应消息的读取状态。这样就是在程序里同时配置两个数据库连接池,对此大家有什么更好的方案吗?

    另外主库压力也不小。不知道大家有无相关经验分享。

    12 replies    2015-01-18 21:02:37 +08:00
    aru
        1
    aru  
       Jan 17, 2015   1
    这部分用mongodb来做?
    zado
        2
    zado  
       Jan 17, 2015   1
    用内存做缓存。
    zhicheng
        3
    zhicheng  
       Jan 17, 2015   1
    静态化,并使用 hash 做多机分布。
    virusdefender
        4
    virusdefender  
       Jan 17, 2015   1
    这个使用缓存比较好吧,比如 redis,然后高峰期过后统一写入数据库。
    hjxx
        5
    hjxx  
       Jan 18, 2015   1
    热点公共数据 上缓存 不用每次去库里查询
    hh3755
        6
    hh3755  
    OP
       Jan 18, 2015
    @aru
    @zado

    你们两位都是说的是指将现在的从库(只读库)用内存缓存的方式来实现吧,不知有没理解错。但是对于主库的写压力有什么好的建议吗,因为比如一些群推消息,会记录某某用户已经拿过,这时会有一些写入,而且需同步,因为要避免同一用户拿到两次数据。
    invite
        7
    invite  
       Jan 18, 2015
    写内存同步到数据库.
    zado
        8
    zado  
       Jan 18, 2015   1
    读写都用内存去做,不存在同步的问题。需要持久保存的数据,有空的时候再慢慢写到数据库里面去。
    hh3755
        9
    hh3755  
    OP
       Jan 18, 2015
    @zado 但是用内存。如果程序挂了。不能从内存中恢复,一些状态丢失了,尤其是一些写的状态丢失了,会给人感觉程序很不稳定。
    hh3755
        10
    hh3755  
    OP
       Jan 18, 2015
    @zhicheng 静态化是指将什么静态化呢,是指将数据hash到不同数据库吗。但是hash有个不好的地方,一旦做调整就很麻烦。
    hh3755
        11
    hh3755  
    OP
       Jan 18, 2015
    @virusdefender 对此有成熟的框架或项目可以参考吗。
    @hjxx 对更新有何建议。就是更新消息读取状态这种写操作。看大家都建议写操作也写内存。
    zhicheng
        12
    zhicheng  
       Jan 18, 2015   1
    @hh3755 如果是广播类的消息,随机分布就可以了。
    如果是指定 client 的消息,那每个 client id ,相当于一个 subdomain 。在 DNS 层用 hash 做分布确保一个 id 永远分配到同一个机器。这样写和读对 publisher 和 consumer 就是透明的。
    静态化指的是,对于推送的消息,一般没有修改的需求,可以根据 client id 直接把消息存文件。
    只要能够实现得好,几十亿几百亿几万亿的消息系统都能做出来。
    About     Help     Advertise     Blog     API     FAQ     Solana     1403 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 16:52 PVG 00:52 LAX 09:52 JFK 12:52
    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