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

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、本文小结

京麦实时消息推送架松经过一年的成长,在稳定、监控、内容丰富程度上有了长足的发展。下一步的规划是完整的消息失败重试机制、提高消息送达率、消息推送产品化等。 京麦是一个年轻且充满活力的团队,京麦消息系统伴随着京麦的成长,不断的完善优化。

原文发布于微信公众号 - IT技术精选文摘(ITHK01)

原文发表时间:2018-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT大咖说

XpmJS —— 小程序后端开发思考和实践

摘要 Linux容器技术很早就有,LXC的容器方案也早2008年就已面世;但直到 2013年 Docker 推出,才让容器技术红遍全球。Docker 没有高深底...

3626
来自专栏腾讯Bugly的专栏

【Dev Club分享】React Native项目实战总结。

“8小时内拼工作,8小时外拼成长”这是大家共同的理想。除了每天忙于工作外,我们都希望能更多地区吸收领域内的新知识与新技能,从而走向人生巅峰。 Dev Club...

3718
来自专栏微信公众号:Java团长

如何扎实自己的Java基础?

JDK其实就是Java SE Development Kit的缩写,要玩好这东西可不简单。JDK主要包含了三部分,第一部分就是Java运行时环境,这其实就是JV...

713
来自专栏Java技术

微服务设计我们需要考虑哪些要点?

作者:刘超,毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC,CCTV证券资讯频道,HP,华为,网易从事云计算和大数据架构工作。

962
来自专栏IT大咖说

Web持续集成工作实践

摘要 如果团队开发成员经常集成他们的工作,每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建来验证,从而尽快地发现集成错误。...

3505
来自专栏开源项目

走过微软20年,埋头并发编程15年,如何减少代码的认知负荷?| 码云周刊

每周为您推送最有价值的开源技术内参! 技术干货 从Visual Studio看微软20年技术变迁 spring cloud netflix 微服务使用实例 20...

42313
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理

前文提要 承接前文《一次线上Mysql数据库崩溃事故的记录》,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑。 由于时间...

3288
来自专栏DeveWork

WordPress中当评论审核通过时候给评论者发邮件

如果你的WordPress 站点是开启评论审核的,那么如果能让评论者知道TA 的评论是否通过,就能进一步提升“回头率”。Comment Approved就是这么...

1825
来自专栏FreeBuf

趋势OfficeScan系列产品漏洞分析

作者 Shadowkeeper OfficeScan是趋势科技开发的一套专为网路环境的桌上型电脑和行动用户端所提供的即时、全面的防毒解决方案。安全公司Silen...

2008
来自专栏FreeBuf

VM真的比Container更安全吗?

理论上来说,是的。但在工作实践中,那可就不一定了。 ? 写在前面的话 我们经常会说,“HTTPS是安全的”或者“HTTP是不安全的”。但其实我们想表达的是,“H...

3325

扫码关注云+社区