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

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

相关文章

来自专栏月色的自留地

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

1754
来自专栏云计算D1net

如何用渗透测试计划锁定你的云?

渗透测试是一项旨在确定和解决任何黑客可能利用漏洞的IT安全性措施。就如同传统数据中心广泛采用这一测试方法一样,很多企业的IT部门也在他们的公共云计算环境中使用着...

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

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

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

3739
来自专栏企鹅号快讯

使用Redis走进误区,该怎么办?

首先是一个产品线开发人员搭建起了一套庞大的价格存储系统,底层是关系型数据库,只用来处理一些事务性的操作和存放一些基础数据; 在关系型数据库的上面还有一套Mong...

2529
来自专栏FreeBuf

如何使用PowerShell实现命令控制以及安全检查绕过

Windows操作系统在全球市场上的占比是大家有目共睹的,而现代Windows平台都默认安装了PowerShell,而且系统管理员还可以毫无限制地访问和使用Po...

2567
来自专栏JAVA高级架构

微服务架构选型实践

背景 随着公司一年多的成长,我们已经开发了数十个项目了,后台有 JAVA 的有 PHP 的,为了更好地提升开发与管理效率,各技术大牛小牛们时常进行激烈的 PK,...

4506
来自专栏黑白安全

社会工程学之钓鱼攻击

钓鱼攻击是社会工程学攻击的一种方式。钓鱼攻击使用电子邮件或者恶意网站诱骗人们提供个人信息(通常是金融信息)。

1073
来自专栏FreeBuf

如何写好一篇漏洞报告(国外篇)

如何写好一篇漏洞总结报告,这一直都是一些应用开发公司经常忽略的重要事情,一篇好的漏洞总结报告可以有效帮助开发人员,减少寻找和解决漏洞的时间。 接下来我就开始讲述...

4067
来自专栏张善友的专栏

openSUSE Linux 10.2 多语言版

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

2158
来自专栏CSDN技术头条

淘宝客微信机器人搭建教程(Python 3.0版)

相信很多人都听过或者接触过各类导购 APP、QQ 群、微信群分享一些淘宝商品的优惠券或是其他的优惠信息。

6225

扫码关注云+社区