死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼-阿里云开发者社区

开发者社区> boxti> 正文

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼

简介:
+关注继续查看
   
   双十一,剁手党的节日,恨不能是各大电商程序员的忌日。

京东,作为全国买买买炮火的主要目标,架构师、码农们一边承担着全国人民打折购物的殷切期望,一边承受着老板东哥如芒在背的犀利目光。

总之,一旦出现闪失,后果不堪设想。

那么,究竟架构师们如何万无一失地完成这样“不允许失败”的任务呢?

在今天的 SDCC 中国软件开发者大会上,京东商城总架构师、基础平台负责人刘海锋为现场观众介绍了今年保卫京东双十一的“五大法宝”。

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼?

【京东商城总架构师、基础平台负责人 刘海锋】

好钢留在刀刃上:资源规划

说到底,双十一最大的挑战就是访问和业务激增。如果能够提供无限的带宽和计算资源,那么双十一和其他日期不会有任何可以感知的区别。

然而,资源永远是有限的。这就好像一个人往往不能又买房又买车还天天吃大餐。从这个角度来说,资源规划就变得非常重要。

每当各种电商节来临之前,各路部门都变成了嗷嗷待哺的雏鸟。恨不能张口就要十倍于平时的资源。

不过刘海锋说:

大家都觉得资源充分才不会出问题。但是事实证明,有些部门多准备一些 CPU,心理上可能轻敌,在代码上就放松了警惕,这样未必可以活下;相反资源不那么充足的情况下,反而未必死掉。

那么,有限的 CPU 究竟分给谁呢?

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼?

【前端用户下单方法调用双十一峰值达到了平均值的16倍,而机房内网络流量峰值只有平均值的1.5倍】

根据刘海锋的研究,京东商城前端的访问系统在零点之前的十几秒负载达到峰值。几秒内就可以达到平均值的16倍。这是因为大家都已经选好了想要的商品,只等零点之前刷新下单。但是,这样狂飙的访问量在系统内部却没有表现得如此恐怖。在系统内部,访问量可能只有平时的 1.5倍。

我们把各个系统分为两类:平稳型系统和毛刺型系统。


平稳型系统,包括商品的详情页、价格页面、库存信息等等;


毛刺型系统,包括下单、秒杀页面、抢购页面等等。

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼?

做了细致的研究之后,对于资源的分配就有了依据。这样就可以在保证核心流程充分扩容的基础上,再来满足锦上添花的功能需求。

“逼”内存做存储:夯实基础架构

基础架构是京东商城的基础。而在巨大访问中一旦基础架构出现了问题,会影响无数附加其上的应用。为了保证这个庞大的基础架构,京东做了一些重点动作。

多数据中心

刘海锋说,一个机房的安全系数永远不够,一旦出问题将会造成不可估量的损失。所以京东采用了多数据中心的策略。

这种冗余策略存在于包括电商在内的很多服务中。是一种通用的手段,当然京东也不例外。

全面容器化

京东从2014年开始,对系统进行 Docker 容器化改造。

通俗来说,“容器化”就是把系统的各项资源进行虚拟化,可以更加自由地分配给各个服务。

这种改造有一个巨大的优势,那就是极大地加快了资源交付和速度,更小地细分了资源的粒度。刘海锋说,2014年之前,大促时各个系统分资源还在分物理机,而现在大家可以直接分 CPU,系统在后台直接把 CPU 的计算能力分配给需要的部门。

“逼”内存做磁盘

在京东的构架中,内存可以被用作存储器,而不是缓存。刘海锋说,这就是所谓的 JIMDB(以内存为中心的存储)。

众所周知,硬盘是在电子化的 IT 架构中,唯一一个还在使用机械结构的元件。它的效率之低令人发指。所以在大促的时候,订单内容和实时护具不会回到后台存储,直接在内存中被调用。这样就大大提缩短了系统响应时间。

为此,京东的内存容量储备达到了 260T。

大促的时候,99%的访问请求最高延迟都小于 5 毫秒。

刘海锋说。

消息平台 JMQ

在京东的体系中,最重要的可能就是订单和运单数据。而这些数据需要在许多系统内部实时同步。

很多下游系统关心订单信息。按照传统的思路,所有下游系统都想要获得订单信息,必须通过订单系统,调用其他的接口才能实现。这样就会给订单系统带来极大的压力。

针对这个矛盾,京东开发了消息平台 JMQ。JMQ 的工作原理很简单,大致相当于信息统筹的秘书。订单系统只需要把数据交给 JMQ,其他系统只需要调用 JMQ 就可以查看信息。这在客观上大大缓解了订单系统的压力。

预测取消订单:增强智能

双十一,所有系统资源全部被调动起来。人工智能,这个正在井喷的高科技也可以在这个时候“帮工”。

不过,刘海锋告诉雷锋网(公众号:雷锋网),这并不是什么虚头巴脑的大概念,而是一些接地气的小功能。所以他更愿意把它叫做“增强智能”。

增强智能在京东商城的体系内应用场景不少,例如:客服机器人、库存优化、信息合规校验、智能物流仓储等等。刘海锋举了两个有趣的例子。

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼?

【替用户冷静的“订单冷静管道”】

订单冷静:冲动购物的后悔药

如果我看到别人在大促的当天买了一部手机送给女朋友。我一冲动,一次购买了两台,冷静下来想想, 我还没有女朋友。这个时候,我可能会选择退货。

刘海锋说。

然而,京东的很多产品都是自营,在下单之后几分钟内就已经开始分拣打包。然而, 系统订单是在几小时内都支持取消的。

这时,如果用户选择了取消订单,那么打包工作就浪费了。这对于双十一期间资源相对宝贵的京东来说,就是一种资源浪费。

这时,就到了人工智能显示威力的时候。

如果系统探测到下单买两部 iPhone 的用户,经常买奢侈品送给(不同的)女朋友,那么没事。如果探测到这个用户以前购买的最贵的商品就是200块钱的食用油,并且通过大数据分析,这位用户可能没有女朋友。那么就在后台自动把订单“冷静”10-20分钟。如果用户没有后悔取消订单,再继续大宝流程。这有助于减少浪费的成本。

订单预测:从下单到送到只需 12 分钟

在双十一当天,凌晨第一单从下单到出库到用户签收仅仅用了12分31秒。这个看起来有点假的成绩是怎么取得的呢?

如果从下单开始,才从最大的仓库备货,12分钟也许都不够用来分拣。能够做到这么快,要归功于“订单预测系统” 。

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼?

【订单预测系统工作原理】

刘海锋讲解了订单预测系统的工作原理:

一个商圈,将会在双十一购买多少手机、电池、尿布、啤酒这类标准品,是可以通过大数据来预测的。而京东的库房是分级的。有后端的仓储和前端的仓储。通过预测,京东会提前把一些商品前置到前端仓(FDC),这样在用户下单之后就可以瞬间从仓库发出,就近送到用户手里。

“自残式”演习:大规模故障模拟演练

验证技术团队可靠性的最好方式,莫过于真枪实弹的技术演习。

Chaos Monkey,是很多平台都在使用的故障演习模式,简单说来就是随即关闭生产环境中的实例,然后检查系统是否能经受故障考验。

刘海锋把这个英语词汇改成了更接地气的中文名称——响尾蛇。

总之,就是在双十一真正的考验来临之前,用一种“自残”的方式来检查系统的可靠性。

刘海锋介绍,京东的“响尾蛇”行动玩法如下:

把运维人员分为两组,一组资深的运维工程师在会议室里,负责模拟故障。而在会议室外面,是负责解决问题的小组。对于将要出现什么问题,会议室外面的小组是毫不知情的。模拟故障五花八门,从机器到网络,到模块,到服务,到中间件和数据库,甚至整个机房消失。应急小组都必须给出合理的处置方法,拼死保证业务不出现问题。

刘海锋说,“由于这种演练具有一定的破坏性,所以我们都是在半夜一点到三点之间进行。”

军演机器人:全链路压力测试

所谓压力测试,就是在真实模拟无数人访问京东并作出各种请求的情况下, 测试系统能否正常运作。

虽然各个环节的工程师都会对自己的系统进行压力测试,但是毕竟这种测试是分散的,导致最终容易在各个业务的接口处产生问题。而且,普通的压力测试,很难模拟真实用户的访问行为。

为此,刘海锋专门让团队开发了“军演压力测试机器人”。

这个机器人,就是模拟我们雇佣一亿人同时访问我们网站的行为。这套程序分布在全国各地,对我们的业务做全链路的读写混合压力测试。

如同军演一样,全链路的压力测试并不如想象般容易实现。例如,这样的演习不能使用真正的银行支付,不能影响真正的库存数量,不能动用真的物流。所以,和演习相关的所有上下游业务,都要设计一套虚拟系统。

在这套“军事演习”里,最重要的步骤就是“黄金链路压力测试”。所谓黄金链路,就是普通用户使用京东的“标准流程”,包括:登录,搜索,浏览,购物,结算,支付。这个链路,是双十一用户体验的最主要体现。京东的工程师们不断对这个链路进行测试,就可以发现很多存在的问题。

死扛零点前十秒流量,预测取消订单,为了保卫双十一京东有多拼?

【黄金链路压力测试流程】

以上,就是京东保障正在看文章的你“剁手顺利”的五大法宝。仅仅是24小时的买买买,背后却涉及无数风险控制手段和资源调度模型。

正如刘海锋所说,

双十一是电商企业整体技术能力的一个缩影,各个电商在保障的过程中都会有一些插曲,正是这些小问题,让中国的电商行业不断地成长。

  
  本文作者:史中

本文转自雷锋网禁止二次转载,原文链接

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
消息队列RocketMQ应对双十一流量洪峰的“六大武器”
消息队列 RocketMQ 是如何帮助各企业交易系统扛住瞬间千万级 TPS、万亿级流量洪峰的冲击,并保持各个应用之间的消息通畅的呢?下文将为您介绍消息队列 RocketMQ 应对双十一流量洪峰的“六大武器”。
385 0
【Offer 5000-流量产品事业部】- 招聘职位详情
流量产品事业部本次招聘岗位5个:1、 CDN调度研发专家;2、 CDN点播研发专家;3、 CDN节点系统研发专家 ;4数据研发专家 ;5、管控平台研发专家 。
1673 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2759 0
为什么别人家的APP,上报日志就这么省流量?
APP一般如何上报日志?使用类似于Google Analytics的第三方工具;自己制订私有协议进行上报;使用HTTP协议,通过GET参数传递需要上报的数据。
552 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10238 0
《2019年上半年Web应用安全报告》发布:90%以上攻击流量来源于扫描器,IP身份不再可信
本报告根据阿里云WAF和防爬团队对2019年上半年云上流量的分析情况,为您带来最新的攻击趋势、漏洞应急情况以及一线安全专家的核心观点和防护建议。
3758 0
SimilarWeb - 查看网站各种流量数据
SimilarWeb是一款来自以色列的非常强大的市场竞争分析工具。它可用于任何网站、APP的数据分析,同时它还提供了行业的数据分析功能,通过对整个行业发 展趋势的海量数据分析,可为自身网站定位提供客观信息。
453 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12099 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11383 0
+关注
boxti
12535
10037
文章
1327
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载