“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

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

关注

评论

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

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day4,kafkastreams实战

Java 程序员 后端

java整理,springboot2精髓百度云

Java 程序员 后端

Java最新高频大厂面试集锦(附答案),看完老板哭着让我留下来

Java 程序员 后端

Java实现数据结构中的八种排序方法,深入讲解Java

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day5,docker教程学习

Java 程序员 后端

Java岗大厂面试百日冲刺【Day45】,java开发实战经典第二版pdf

Java 程序员 后端

Java实现AES加密算法,2021最新百度、头条等公司Java面试题目

Java 程序员 后端

Java市场饱和了吗?现在转行学习Java会不会太晚了?,linux操作系统基础

Java 程序员 后端

Java开发必备 Git 分支开发:规范指南及完全学会Git的24堂课笔记

Java 程序员 后端

Java并发工具AbstractQueuedSynchronizer实现详解,如何保证高可用

Java 程序员 后端

Java并发(三),java程序设计教程雍俊海第三版答案

Java 程序员 后端

Java日志体系(二) log4j 配置文件详解 缓存问题,mybatis基本工作原理

Java 程序员 后端

java教程——线程,整合springboot集成实现动态刷新配置

Java 程序员 后端

Java学习路线图(如何快速学Java),java数据结构与算法面试题

Java 程序员 后端

Java实现人脸检测,oppojava后端面试几面

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day2,mysql数据库教程实验二答案

Java 程序员 后端

Java并发包源码学习系列:LBD双端阻塞队列源码解析,linux内核架构与底层原理

Java 程序员 后端

Java并发(二),redis深度笔记

Java 程序员 后端

java教程——泛型,java零基础教学视频

Java 程序员 后端

Java开发两年备战金三银四:多线程+IO,zookeeper面试题总结

Java 程序员 后端

Java开发五年裸辞美团,八个月后跳槽阿里涨薪20w!,大学java课程视频

Java 程序员 后端

java学习-数据类型和运算符,Java爬虫爬取视频

Java 程序员 后端

Java实现单链表、栈、队列三种数据结构,linux内核编程入门篇

Java 程序员 后端

Java实现堆及其功能,mybatis的原理实现过程

Java 程序员 后端

Java岗大厂面试百日冲刺【Day42】,两年java开发面试题

Java 程序员 后端

Java并发(五),大厂程序员35岁后的职业出路在哪

Java 程序员 后端

Java应用日志如何与Jaeger的trace关联,腾讯、字节跳动面经已发

Java 程序员 后端

Java数组的拷贝 优化冒泡排序 二分查找,神策数据java面试题

Java 程序员 后端

Java并发关键字-final,36套java架构师百度云

Java 程序员 后端

Java实现各种内部排序算法,mysql排它锁之行锁

Java 程序员 后端

Java已死,有事烧纸!,java工程师面试宝典下载

Java 程序员 后端

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