京麦 从0到1
您目前处于:架构  2015年09月22日

2014年2月进入京麦团队,负责商家助手到京麦卖家工作台的平台化转型,实现插件模式和消息模式的创新,引领京东商家在PC端和移动端的运营变革。

和京麦一起成长,也经历了几个重要的里程节点。

一、统一服务接口 与 插件授权流程

京麦平台化的技术改造,第一环就是服务接口。由于原来的接口调用,一是接口繁多、二是接口定义和格式不统一,所以统一的服务接口成为当务之急,而这也成为了平台的基石。

二、PC 平台的崛起 与 ISV的接入

正是有了前面的基石,才有了 PC 平台崛起。这也依靠于着重改造两个重量级的官方插件 —— 商品、订单。

与此同时,与 PC 平台协作提供 ISV 插件测试流程、辅助 ISV 上线入驻京麦平台。

Tip 1. 基于 Redis 的商品类目缓存

其中对商品的后台处理做了很多优化,当时一个棘手的问题就是,处理缓存商品类目时,由于数据量大,大对象直接进入 JVM 堆,造成频繁 Full GC 和吞吐量下降,直接影响服务性能。通过调整 JVM 参数、优化缓存策略和使用弱引用,降低 JVM 内存报警。

三、消息订阅、消息推送、消息追踪

在 PC 平台和插件中心逐渐完善之后,开始另一个重要战略性内容 —— 消息。

原来的消息都是通过客户端轮询拉取的方式,而且消息源也很多,格式不统一,处理复杂。基于此,构建了整个消息处理架构,从消息发送、消息推送、消息接收,涉及消息订阅、消息推送、消息追踪。

Tip 1. 支持多数据源的高性能消息推送模型

由于数据源较多、消息量大,推送性能成为瓶颈,通过优化线程池的参数和阻塞队列的大小、Redis 的管道、梳理关键路径等,推送性能提升由推送1万消息终端 一次 5~15分钟 缩短到 1分钟内。

Tip 2. TCP 长连接与粘包

在处理消息过程中,第一步就是搭建 TCP 长拦截,采用 Netty 框架并进行版本的对比,调研 3.x 的 jboss 和 4.x 的改进;通过 Nginx 提供 Client 访问,对 keepalive 参数设置和 gzip 的数据压缩等,提供稳定的长连接服务。

Tip 3. IOS PUSH

移动端分为 Android 和 iOS 平台,Android 在休眠时可以启动后台进程保持长连接,iOS 休眠不能启动后台。所以通过 APNS 向苹果服务器进行消息推送。

四、移动端 与 京麦服务号

随着插件中心和消息中心的成熟,京麦平台构成了成熟的生态圈。

京麦移动端的有了新玩法,打造面向运营的京麦服务号。

其他补充

为了保障京麦产品的高质量,团队一直进行单元测试和持续集成实战,并在内部和外部进行过多次分享,随着不断深入实战,荣获 JD 微创新(第一期)优秀奖和 TOP 100 全球软件案例。

同时,团队有多名是 Scrum & KanBan & ScrumBan  中国第一批认证学员。


本文受原创保护,未经作者授权,禁止转载。 linkedkeeper.com (文/张松然)