京东京麦商家开放平台的消息推送架构演进之路

1、前言


京麦实时消息推送是京东的京麦商家开放平台的核心组成部分。从消息源到消息中心再到触达用户,以及最终根据消息协议呼起操作页面,京麦实时消息推送是一个完整且健康的生态闭环。下面我会详细的介绍下京麦实时消息推送是如何在演变中不断完善的。

京麦消息框架示意图:

我将从京麦商家开放平台的消息接入、MC系统搭建、消息配置、消息触达、消息监控五个方面来阐述和分享京麦实时消息推送架构在2017年的成长。

2、消息推送的接入


原有的消息推送接入存在的弊端主要有以下两点:

我们后期针对新一代消息推送做的改善如下:

3、MC(京麦消息推送中心)系统的搭建


▲ 原京麦消息推送系统的接入逻辑图

如上图所示,原先京麦消息推送的主要痛点如下:

  • 1)接入方式不统一;

  • 2)不稳定、大促被降级;

  • 3)消息处理逻辑复杂,接入新的消息源困难;

  • 4)没有完善的消息追踪,消息统计。

▲  新京麦消息推送系统的接入逻辑图

基于上述原因,重新打造了一个稳定、专一的消息处理中心——MC系统(如上图所示):

4、推送消息组装的统一配置化

▲  新京麦消息推送系统的消息组装处理逻辑图

消息过滤、消息组装、消息存储、消息推送是京麦消息中心的四大核心。消息组装是根据不同消息的不同配置来进行的,而这些配置是在开发侧的config配置中心来配置的,因此产品或者运营想从Anycall新接入一种系统消息所做的工作量是极其大的。

基于这个原因,我们将所有的配置环节统一到了一个页面。配置信息的获取添加三层缓存(Guava Cache+redis+DB)来应对海量调用。统一配置页面的存在使得业务类系统消息的接入变的简单快捷。

5、消息推送的触达(向客户端扩散)逻辑

▲  新京麦消息推送系统的消息触达逻辑图

京麦消息触达分为在线通知和离线通知:

  • 1)在线通知是通过服务端和客户端的TCP长连接来实现的;

  • 2)离线通知在最开始只有IOS的apns推送,Android系统无法很好的进行离线通知的推送一直是一大痛点。

6、完整的消息推送路径监控

▲  新京麦消息推送系统的消息监控逻辑图

全链路消息追踪系统,整合从消息源到最终的消息推送,整个链路各个节点消息的流转状况,并且异步化存储。从上图可以看到系统中的处理方式是,分别订阅JMQ的同一个topic实现将消息日志分别存储在ES和HBase,存ES保证了我可以在消息管理后台对所有消息进行清晰透明化的追踪查询,存HBase是为了可以将数据长久的保存并且进一步的分析。

消息统计是依托于京东大数据平台来实现的。将HBase里的数据导入到京东数据集市,从而对消息数据进行各个维度的统计分析。

7、本文小结


京麦实时消息推送架松经过一年的成长,在稳定、监控、内容丰富程度上有了长足的发展。下一步的规划是完整的消息失败重试机制、提高消息送达率、消息推送产品化等。

京麦是一个年轻且充满活力的团队,京麦消息系统伴随着京麦的成长,不断的完善优化。

公众号推荐:

猜你喜欢

转载自blog.csdn.net/gv7lzb0y87u7c/article/details/80416255