写点什么

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

  • 2015-11-11
  • 本文字数:3093 字

    阅读完需:约 10 分钟

写在前面:尼尔森公司 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 读者交流群)。

2015-11-11 01:015117
用户头像

发布了 64 篇内容, 共 26.0 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

正则表达式知识点梳理

真嗣

正则表达式

极客训练营模块一作业

Geek__猫猫头

学生管理系统架构设计

Geek_e8bfe4

Druid 连接池源码阅读 08

石小天

架构实战营 7 期「模块一」为何架构设计能力难以提升

Steve_bot

druid 源码阅读(九)Druid removeAbandoned参数

爱晒太阳的大白

5月月更

Docker下Java文件上传服务三部曲之一:准备环境

程序员欣宸

Java Docker 5月月更

Spring Boot 输出 Web 请求响应报文

TRAMP

Spring Boot

【C 语言】指针 Four 之[" * & 的应用"、通过指针交换变量值、指针变量的说明、 指针类型的意义(1)、指针类型的意义(2)]

謓泽

5月月更

贝叶斯网络

5月月更

[模块一作业]

wuli洋

ffmpeg命令参数类型

Loken

音视频 5月月更

Fruity Loops Studio20.9中文版水果软件

茶色酒

FL STUDIO20.9 FL Studio

Mindmanager2022绿色版本

茶色酒

Mindmanager Mindmanager2022

架构实战营模块 1 作业

Naoki

架构实战营

架构实战营 - 第 6 期 模块六课后作业

乐邦

「架构实战营」

JavaWeb MyBatis

Emperor_LawD

mybatis javaWeb 5月月更

亚马逊AWS特约评委揭秘FinClip黑客松获胜秘诀

Geek_99967b

hackathon 小程序开发

设计模式之学习命令模式

乌龟哥哥

5月月更

代码之外:关于校招 Offer 选择的问题

宇宙之一粟

offer 代码之外 5月月更

[ kitex 源码解读 ] 限流

baiyutang

Go 微服务 云原生 5月月更 kitex

Java Optional 初始为空

HoneyMoose

《卡片笔记写作法》:用卡片积累思考

郭明

强化 WordPress 的 11 种有效方法

海拥(haiyong.site)

安全 WordPress 5月月更

基于Keras的视觉结算平台构想

工程师日月

人工智能 keras 5月月更

LSM-Tree - LevelDb 源码解析

懒时小窝

Lsm LSM树 LSM-Tree level

在FinClip Hackathon中夺冠是一种什么样的体验?

Geek_99967b

hackathon 小程序开发

从Flutter浅谈跨平台移动开发框架

Geek_99967b

flutter 移动开发 小程序开发

druid 源码阅读 8——过一下流程图的init

张大彪

FinClip SaaS 版本重磅上线,打开全行业技术普惠大门

Geek_99967b

SaaS 小程序容器 小程序开发

微信业务架构图和学生管理系统架构设计

Geek_7a789a

京东11.11:大考之前的三板斧_服务革新_魏星_InfoQ精选文章