京东 11.11:大考之前的三板斧

阅读数:2177 2015 年 11 月 11 日

话题:云计算DevOps架构文化 & 方法双十一京东618

写在前面:尼尔森公司10 月底发布了《中国电子商务行业发展“杭州指数”白皮书》,数据显示,2014 年底,中国网络零售额交易规模已达 133,699 亿元,居全球第一。2014~2015 年,移动在线购物者占比从 57%升至 71%;跨境电商从 32%提升至 63%。在国内电商企业一轮又一轮的市场动作下,“双 11”俨然成为全国人民的狂欢节。在今年的“双 11”竞技场上,InfoQ 选了国内较有代表性的电商企业,一探支撑万亿规模交易系统背后的技术。本文将介绍京东登上“双 11”舞台所做的“台下十年功”。

三大战役与两次大促

在“双 11”之前的媒体交流会上,京东透露了其研发体系的“三大战役”,即换底计划、多中心交易计划、京东大脑计划。据 InfoQ 了解,“6∙18”之前京东大部分业务是运行在物理服务器之上的。为了应对飞速增长的业务,和所有相关企业一样,京东面临业务云化的迫切需求。

技术方面,京东云经过几年的打磨,其私有云已经十分成熟,“6∙18”之后京东开始把网站页面、订单交易、仓储物流、数据库、Redis 等悉数迁移到了京东云,这也是继美团云之后笔者听闻的又一例全部业务入云的电商公司。京东称之为“换底计划”,该计划主要包括新数据中心交付、线上业务梳理、部署(应用程序、中间件、数据存储)、线下压力测试、线上小流量测试、切部分或全部流量稳定运行。迁移过程中各个方面的工作量都很大,特别是业务系统迁移。

与之并行的另一个计划是多中心交易系统,随着京东定制化高密度新机房的建设,旨在提升业务效率的多中心交易系统一期工程交付使用。据 InfoQ 了解,京东新机房 60% 的机器都部署了 OpenStack 弹性云,其余用作数据库存储和部分第三方合作业务。

“三大战役”之一的京东大脑最早被称之为“千人千面”,随着京东在机器 / 深度学习方面的不断投入,基于用户画像的京东大脑在各业务子系统中的促进作用越来越大,从商品推荐到销售预测不一而足。

京东集团高级副总裁、研发体系负责人张晨在接受媒体采访时说,“6∙18 是小考,双 11 是大考。”二者对于京东技术研发来说是一个宝贵的经验,当技术团队经历过这些考验之后,整个团队会更加成熟和自信。

私有云与容器技术的结合

“6∙18”之前,京东有一部分业务由弹性云托管,其 Docker 的应用数刚刚突破 1 万。“6∙18”之后随着弹性云项目的推进,特别是新机房建设与双 11 扩容,京东全部业务的约 8000 个项目绝大部分都是通过容器来发布运行,目前京东已有 6 万多个 Docker 实例,随着双 11 部署的弹性资源池,京东内部对一键扩展后的 Docker 实例预估为 10 万多个。由于目前京东 90% 的业务都是 Web 层面,其负载都不会太高,因此不会遇到高密度容器的性能瓶颈问题。

大规模集群对软件系统的架构是一个很大的考验,经过约三年的积累,京东弹性计算云解决方案选择基于 OpenStack 和 Docker 构建,在性能优化与可扩展性方面进行了大量定制,使之能够适应京东自身的业务特点。例如,私有云的集群管理方面京东并没有用使用 K8S、Swarm 等开源框架,而是自行研发了一套管理系统。除此之外,京东还使用约两万 Docker 实例运行其内存数据库 JIMDB(对此 InfoQ 也将进行详细报道)以及数千个 MySQL 实例。针对中间遇到的挑战,“没有什么特别的应对策略,就是快速解决问题。”京东的一位技术负责人如是说。

移动端的运营优化

数据显示,京东 6 月 18 日(00:00-24:00)当日下单量超过 1500 万单,相比去年同期增长超过 100%。其中,移动端订单量占比超过 60%。毫无疑问,双 11 对移动端的挑战将会更大。因此,京东无线端相关部门从 8 月便开始启动双 11 筹备。

首先,10 月上旬 V4.4 双 11 特别版 APP 顺利发布,该版本对双 11 营销需求进行了针对性升级和开发,对无线端红包流程及无线端众多双 11 特别活动(超级团、一分钱摇好礼、爆款提前抢等)进行了关键流程的升级以及功能的开发。同步的无线端的 CMS 后台、消息通道、通天塔系统等运营支撑功能也在双 11 之前进行了优化及重要发布。

其次,无线产品、研发、运维测试、设计各环节对运营进行了大力支撑与协作。产品端调配大量人力使 APP 端的各项活动体验得到了很好的保障;研发端根据移动端网络特点进行接入网络优化、持续精简内容、加载策略优化等,通过移动组件化建设、无线登录、push 触达、开放化平台能力建设、无线监控测试平台、远程插件下发等数十项优化保障双 11 的进行。

最后,运营组织策划方面,无线侧在 8 月开始即制定了“活动营销线”、“核心频道线”、“采销联动线”三大重点运营主线齐头并进的策略。从数据上看,预热期通过发券及多种互动营销活动带动了 APP DAU 不断上升;采销联动为 APP 大促各主分会场、互动营销活动提供和采销的对接选品支持,除四大实物事业部之外,金融事业部、生活旅行事业部的各项业务也和移动端进行了深入的整合营销。APP 端的纯促销运营模块占 APP 的比例突破至 23%,整个运营模块占 APP 的比例接近 30%。

无线双 11 的准备是集合了产品、运营、研发、测试、运维、设计等整个无线团队的通力合作,在多个环节发力,为 APP 在双 11 期间积累了大量的优质客户。

实时监控与安全保障

如果把”双 11“比作一场战役,监控系统无疑就是这场战役的指挥系统。虽然我们无法看到各大电商的实时监控大屏幕,但笔者还是设法了解到了一些相关信息。京东集团高级副总裁、研发体系负责人张晨在接受 InfoQ 采访时表示,监控是京东的重点,对于任何突发的情况,京东准备了 1500 多个预案并且能做到 60 秒之内解决问题,没有很好的监控设施这几乎是不可能的。

针对如何做到 60 秒之内解决问题,京东一位匿名的技术人员回复说,响应速度分为定位问题和解决问题两个部分。定位问题部分,取决于各个团队对于自己系统架构的熟悉程度,这要通过平日演练和线上实际故障来提升团队的响应速度;解决问题部分比较简单,各个团队的线上系统都有成熟的路由降级切换开关。

以京东现有的 6 万个容器监控为例,主要分为两个方面,即容器层面的 CPU、内存和 I/O 等,业务层面的 API 性能指标等。各业务子系统可根据自身吞吐量和响应速度来设定阈值。

  1. 从资源层面探测容器是否可用,并触发弹性事件。对容器状态的探测主要是在物理机上连续发 ping 包,并在宿主机设冗余机制。众所周知,ping 有丢包和延迟,所以会再从 22 端口加一个 TCP 握手,由于应用层做了无状态处理,所以即使存在一定的误判也不会有什么影响。这是

  2. 从状态层面探测业务是否可用,并触发弹性事件。其机制为业务监控和应用共享内存,通过业务性能数据的交换,流式读取业务性能的 TP99、TP999 等指标;此外还有业务 URL 探活措施。不论性能指标还是业务状态都能触发弹性事件。

此外,对于容器里的业务问题又该如何定位?如果容器层、业务层的监控都正常,日志也无异常(监控和日志一定要现场保留),京东的做法是 SSH 登录到容器进行查看(开 SSH 只是为了以防万一,其权限并不对研发开放)。由于京东的 Docker 直接跑在裸机上,包括 Storm 也在容器里,多机房之间通过域名解析来打通,对定位到坏掉的容器采取从 VIP 摘除的策略。此外,主交易系统和秒杀系统可以双向切换,从而保证业务的高可用。

当笔者问到“羊毛党”和 DDoS 问题时,张晨回复说,京东主要靠风控系统根据用户在网站的购物行为来抵御。对于不同的攻击的方式都有相应的部署和演练,基本能做到有的放矢的防护。说话间双 11 已至,京东到底能交给大家一份什么样的答卷,让我们拭目以待吧。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。