消息推送平台的设计(百万门店同时推送消息)

消息推送平台的设计(百万门店同时推送消息)
简介
现有项⽬中存在需要针对百万门店同时推送消息的需求,需要设计⼀个消息推送中⼼的系统进⾏专门的消息推送
需求
对百万门店进⾏消息推送
⽀持坐席侧websocket实时推送消息通知客服需要注意的事项
挑战设计成通⽤的消息推送平台,⽀持其余业务线的消息推送
设计实现
设计⽅案
准备推送素材
金属按键导⼊消息接收⼈的数据
工业除尘器制造选择条件去各个业务线拉取消息接受者的数据
第⼀点:导⼊消息接收⼈的数据可以⽀持excel导⼊,然后去各个业务线去拉取完整的⽤户id即可,导⼊的数据需要分页提交给服务或者分页落库第⼆点:选择条件去各个业务线拉取消息接收者数据,先将该任务以及任务的信息进⾏落库,去业务线同步拉取上百万的门店会有困难,经过设计采⽤顺序消息的⽅式进⾏投递mq进⾏⾃产⾃销。
设计顺序消费mq来消费客服筛选条件的⽅式拉取门店数据
本系统采⽤rocketmq的天然⽀持⽅式来保证顺序投递(messageQueueSelector),其中原理可以参考这篇⽂章。
限制消费的线程数来保证⼤数据量消费的情况下服务的⾃我保护
使⽤这种⽅式会导致mq的性能下降,如果有⼤数据量⾼并发进⾏消费的情况下,mq服务的吞吐量会下降,所以为了防⽌将mq服务拉垮并且本⾝这样的数据也不是很多,可以限制该topic的消费线程数。
消费mq消息开始拉取门店数据
通过mq投递过来的任务信息,拉取⽤户选择的条件去各个业务线拉取需要发送的消息接收者的数据(
现阶段就只需要拉取门店)。拉取完门店数据就准备好了所有的推送素材,这个时候⽤户就可以点击开始发送或者预约发送了。
拉取门店数据在线上出现的问题
由于消息推送中⼼存的条件是⽤户筛选的条件,并且这些条件都是⼀些枚举值,所以去获取门店数据的时候是没办法⾛到索引,通过这些条件如果去查并且符合这些条件的数据量很少会导致全表扫描并且调⽤接⼝超时,在线上达到8秒。
解决⽅案
各个业务线可以每次通过游标的⽅式去数据库拉取数据再放到redis去根据条件筛选符合的数据,然后返回,这样就可以解决接⼝超时的问题。
推送消息
需要⽀持两种推送策略,mq推送以及多线程推送
大型设备包装箱烟花生产多线程推送
血压袖带
使⽤多线程进⾏推送,通过从数据库分页拉取接受⼈的数据,根据提交任务给线程池进⾏执⾏发送消息的任务,消息发送完毕返回发送数量,使⽤future的⽅式阻塞获取线程异步执⾏结果。
桥梁同步顶升
m q进⾏推送
mq进⾏推送
将所有消息接收者推送到mq⾃产⾃销,消费到mq就对该接受⼈进⾏推送消息
总结
该推送平台已经实现了⼤数据量的推送功能,在后来的规划中还会设计websocket的推送,以及其他的推送⽅式。

本文发布于:2024-09-20 14:53:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/265896.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:消息   推送   数据   拉取
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议