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

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 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

Oracle,MySQL迁移整合的问题总结(r10笔记第99天)

最近负责了一起数据迁移的项目,因为机器硬件过保,因为资源存在冗余,因为。。。总之话还没说完,就得到了项目组的支持,所以迁移的需求是明确的。 那么涉及的服务器数量...

3519
来自专栏后端技术探索

nginx安全加固心得

nginx发展多年,自身的安全漏洞比较少,发现软件漏洞,一般利用软件包管理器升级一下就好了。 本文侧重讲述的不是nginx自身的安全,而是利用nginx来加固w...

1285
来自专栏Linyb极客之路

聊聊微服务架构及分布式解决方案

事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:

733
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–项目装配(240)-12分析项目当前状态

CN41N分析项目当前状态 image.png 在这个步骤中对项目的当前状态进行分析。你可以使用一个合适的报表分析预算、计划和实际成本、日期以及收入。 角色...

3354
来自专栏大宽宽的碎碎念

如何避免下重复订单为啥会下重了呢?用幂等防止重复订单客户端的流程后端数据表设计下单的实现技术搞定幂等就足够了吗?通知如果还拦不住……这么麻烦,有必要吗?结论

3597
来自专栏月色的自留地

K60平台智能车开发工作随手记

1584
来自专栏liulun

【P2P浏览器】跟大家讨论一个想法

内容分享者通过这个浏览器来创建自己待分享的内容 任谁看了这些内容,就会在本地保存一份,成为一个节点 只要任一个节点在线,别人就能看这些内容 在线的节点越多,获取...

19510
来自专栏张善友的专栏

openSUSE Linux 10.2 多语言版

此发布版本是由 openSUSE.org 项目创建的。Novell 赞助的 openSUSE 项目是一个协作的社区活动,提供世界上最有用的开放源代码计算平台,即...

1908
来自专栏FreeBuf

BlackHat 2018 | 55款大会软件工具盘点

汇聚了全球信息安全业界精英的年度盛事”Black Hat”上周在美国拉斯维加斯落下帷幕,大佬们也带来了很多有趣的软件工具,其中有一些托管在GitHub上开放下载...

1042
来自专栏13blog.site

Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 个人博客 对于技术...

3619

扫码关注云+社区