如何设计一个公司级别的消息通知系统?

如何设计一个公司级别的消息通知系统?

实际场景

早上买早点,扫码下单,用户在微信中会收到下单成功的服务通知。

微信服务通知

扫码出地铁后,手机会收到APP支付通知。

app消费通知

微信、支付宝、刷卡消费后,手机会收到短信通知。

短信支付通知

在海底捞吃完火锅,扫结账小票上的***二维码开电子***,商家开完票要通过邮件通知发送给消费者。

在移动互联网时代,商家要通过各种渠道触达到消费者。触达的方式各种各样,可以通过Email、Wechat、DingDing、SMS、App、MQTT通知等。对于做B2C业务的企业,需要具备这些相关的能力。今天,我们就聊一聊通知系统怎么做。

架构设计

通常来说,一个公司有很多的业务线,这些业务线都需要通过不同的方式通知自己的消费者。虽然每条业务线都有这个需求,但是不用重复造轮子,可以做一个公司级别的通知系统,有业务线需要使用,就可以直接调用通知系统的接口,进行相关的通知发送。

既然是一个公司级别的通知系统,上游业务方使用的通知方式肯定多种多样,这就需要通知系统聚合这些通知功能,然后向上游暴露这些接口,给业务方使用。

同时,通知系统要考虑触达率,如果用户收不到信息,是不是需要做重试,重试的次数等问题。

设计思路

这里,给大家介绍一些相关的设计思路,及需要考虑的问题,供大家参考。

重点问题

1.并发问题

既然是一个公司级别的通知系统,上游业务方众多,并发量大,考虑到是通知业务,并不是有非常非常高的实时性需求,所以可以考虑做异步处理,上游调用通知接口,通知服务将通知任务放入通知队列慢慢处理,并立即告诉上游业务方通知任务接受成功。这里异步可以考虑使用Kafka。

对于有实时性要求的业务,可以单独再开接口处理。

2.是否重试、如何重试

因为上游业务是不一样的,有的业务需要对通知失败的任务进行重试,有的可能就不管了。所以通知业务再提供接口时,可以考虑加上参数QOS,也就是消息质量,如果传入了对应需要重试的QOS,则通知系统会重试通知。

如果需要重试,如何自动重试,重试的时间间隔如何?这一点我在之前的文章《支付公司如何赚钱?支付网关如何设计?》中也说过,可以看一下。其中设计的参考信息也给出来,轮询时间间隔可以参考(微信通知),队列可以参考亚马逊云的死信队列(死信队列)。

经过多次重试,最终还是失败的任务,需要持久化到数据库。

重试功能应该是通知平台的重要功能之一。

3.后台统计分析、通知监控、手动重试

一个公用的通知平台,需要一个监控后台,监控、分析平台通知发送情况、通知到达率、失败任务手动重试等功能。

4.实现各种通知能力

触达消费者的方式各种各样,可以通过email、wechat、dingding、sms、app、mqtt 等各种方式,通知系统的功能重要功能之一就是聚合这些通知方式。

Email

消费者开电子***,***业务系统就需要把开除了的票通过Email发送给消费者,通知系统就需要集合邮件功能。

Wechat

消费者下完单,下单业务系统就需要通过公众号模版等形式给消费者微信推送下单成功的消息,通知系统就需要集成服务消息推送功能。

SMS

双十一之前,商户需要通过短信给自己的会员发送节日活动等信息,通知系统就需要集成短信推送功能。

HTTP

自己的系统替商户处理完业务后,需要回调通知商户系统,通常都需要使用http做回调,通知系统就需要实现http回调功能。

MQTT

业务系统需要使用mqtt发布订阅消息时,通知系统就需要实现mqtt的sub功能。可以参考我之前的一篇关于MQTT的介绍。

当一个通知系统集成了各种通知功能,可以自动重试,同时有统计监控管理平台,一个通用的通知系统就搭建完成了。

参考:

Amazon Simple Notification Service

Aliyun MQTT

完成,收工!!

传播知识,共享价值】,感谢小伙伴们的关注和支持,我是【诸葛小猿】,一个彷徨中奋斗的互联网民工。

全部评论

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
亮点儿:昨天二面,今天看状态回到一面了查看图片
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务