写点什么

京东 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:014423
用户头像

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

关注

评论

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

简述软件不可用性及解决办法

跳蚤

张开怀抱迎接Golang

Kylin

读书笔记 语法 3月日更 Java转go Go 语言

ARST-日常打卡

pjw

英文IT数码类播客学习笔记

SilentMacUser

红帽 互联网 播客 计算机历史

android基础教程!字节跳动+京东+360+网易面试题整理,附答案

欢喜学安卓

android 程序员 面试 移动开发

(28DW-S8-Day23) 《流程型组织》学习笔记:摧毁金字塔,拆掉"法约尔"桥

mtfelix

28天写作 流程型组织

「架构师训练营 4 期」 第十周 - 001&2

凯迪

架构师训练营 4 期

员工遇到问题 - 是给答案还是给引导?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

我的学习笔记

SilentMacUser

Python JavaScript 学习 大前端 开发

【得物技术】前端微服务

得物技术

微服务 大前端 得物技术

net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.

wjchenge

产品经理训练营大作业

隋泽

算法攻关-序列化和反序列化二叉树O(n)_offer37

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 序列化二叉树

给你的网站文字添加黑幕-隐藏文字

依旧廖凯

28天写作 3月日更

产品经理训练营大作业(05)

KingSwim

【笔记】第七周 第 2 课

Geek_娴子

还原五百丁APP需求文档

林亚超

人社部拟发10几个新职业,区块链行业占两个

CECBC

区块链人才

第10周课后练习-模块分解

潘涛

架构师训练营 4 期

安全架构学习总结

跳蚤

MySQL调优

Sakura

28天写作 3月日更

「架构师训练营 4 期」 第十一周 - 001&2

凯迪

架构师训练营 4 期

IBM们的中国研究院是怎样一步步“躺平”的?

脑极体

mybatis 配置详解

xiezhr

mybatis MyBatis标签 mybatis配置

第十一周作业

Geek_mewu4t

操作系统的内存管理(上)

鲁米

内存管理

散列表-hashTable

x-arts

散列函数

类似GitBook的在线文档创作平台

happlyfox

28天写作 3月日更

React 中 useContext 和 useMemo 一般性使用

sadhu

React useContext useMemo React Hooks

Flink SQL 如何实现列转行?

JasonLee实时计算

flink

androidjson解析!跟我一起手写EventBus吧,不吃透都对不起自己

欢喜学安卓

android 程序员 面试 移动开发

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