开发者社区 > 博文 > 亿级流量背后战场,京东11.11大促全方位技术揭秘
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

亿级流量背后战场,京东11.11大促全方位技术揭秘

  • 京东科技开发者
  • 2020-12-17
  • IP归属:北京
  • 349840浏览

作为一名开发者,你经历过最可怕的流量是怎样的呢?对京东的这群架构师而言,京东11.11大促无疑是一场巨大的流量考验。摆在擂台上的是2715亿元的成交额,而在擂台背后,是一场关乎亿级、十亿级、百亿级流量的巨大战场。每一个技术故障都可能引发成倍的损失,与商家的厮杀对比,大促背后的战场可能更加残酷。

1.jpg


12月5日,由京东智联云主办,CSDN承办的开发者技术沙龙在北京落地举办。本次沙龙以“京东11.11大促,亿级流量背后的战场”为主题,吸引到大批开发者参与。京东用户增长、物流架构、存储、AI等部门以及英特尔的资深技术专家,与参会者共同探讨并分享了在京东11.11大促的极限流量下,京东技术预案准备、应对措施、难点技巧以及最佳实践。

全链路稳定性设计,京东大促的用户秘密


作为一家电商平台,京东的大促就是流量峰值的象征。京东零售用户增长与运营部数据团队负责人周默先对京东近五年的大促技术体系演变进行了梳理

京东2015年容器化,以传统物理机扩容缩容来承载关键业务;2016年中间件改造,京东升级三大技术框架以及监控、存储、数据库等系统;2017年全链路压测,引入“捣乱的猴子”方法论,保证任何零机系统或者超零机系统不宕机;2018年京东业务扩展到海外,开始组件化探索;2019年把组件放到中台,赋能业务;今年京东建设零售云,实现PaaS化的商业级服务稳定性。

经历五年的演进后,京东将服务与关键节点拆解,构建了完整的备战框架,形成纵横两个方向的实战设计。纵向设计中,在备战计划、备战预案、三轮压测等大促期的每个阶段,通过“捣乱演习”明确全链路中的薄弱环节,经过评估后重点补强,然后进行系统扩容与小步优化,实施全链路压测。横向设计中,对于京东交易、前端、消息、用户、优惠券等众多系统,经过多维度交叉组合之后,实现覆盖度较全的横向功能点检查机制。

1.png

京东备战框架:服务拆解与关键节点

在今年京东全链路用户行为激励系统备战方案中,消息队列与延迟队列是保障重点。京东在借鉴开源方案后自研架构,从ID生成、支持异步MQ和同步直接接口调用方式去做Prouducer,而后经过TaskStore或DalayBucket实现延迟的功能,之后接到Consumer稳定性保证的机制,如心跳检测、负载均衡,在压测过程中数据TPS达到50万每秒,TP999控制在10秒,最终触发可兼容京东内部所有的消息中间件。

1.png

消息队列与延迟队列架构

同时,为了保证11.11零点系统可用性,京东设计了秒级监控,通过TP999、QPS等核心服务指标监控,实现对GMV、订单数核心业务指标等内容进行监控。同时针对过载保护风险,采用令牌桶等算法进行流量限流,0点的数据计算任务延后1个小时等延迟计算,超过阈值兜底推荐商品的兜底推荐。

即便如此,京东11.11大促依然不容任何问题,因此京东技术团队设置了切换预案,采用延迟队列,降低延迟时间触发,减少存储压力等手段作为预备;对权益计算等问题,可以适度降低计算复杂度,从而减少响应所需时间。流量之前无绝对,京东便是用层层设防来防范流量的决堤。

百亿级异步消息架构,京东路由系统的威力


大促之后的物流必然是更为复杂的体系,其流量的量级可以达到百亿级别,那么如何才能处理这一更恐怖的流量问题呢?京东物流架构师陈昊龙讲解了京东路由系统的价值。那么什么是京东路由系统呢?京东的路由系统能够基于物流一线实操,为物流网络环节的运转效率提供评价标准。同时能够为下游具体的数据处理系统所采集,最终汇聚成可以为物流客服、一线人员、网络规划进行查询和统计的物流信息。

1.png

京东物流路由系统设计

不过,京东物流的路由系统基于异步消息驱动,目前业界并没有成熟的压测系统可使用,京东路由团队通过憋单压测以及按比例搭建了线下压测环境。但是憋单压测和按比例压测环节仍受时间、环境的影响存在三个难点:数据库集群超过200台服务器,1000+实例需保障;单分片发生故障时,会影响整体应用吞吐;部分分片性能下降时,排查过程复杂。

因此京东路由团队针对路由架构特点量身打造了压测方案。通过外置压力生成器,复制线上流量,添加标记,并重新投递到生产队列。路由系统内置插件,识别和处理压测流量,压测流量通过读写影子库访问外部API。基于业务主键设计压测流量,压测前缀需要保证大小写不敏感,压测版本按实际情况设计位数,避免溢出,同时注意主键长度,避免超长溢出;基于中间件提供的标识位,MQ消息附带的Flag,Dubbo提供的特殊Header。

2.png

京东复制线上流量压测

另一个问题在于,京东物流路由系统写入流量巨大,所以京东数据库通过分库设计,拆分大量分片数据。针对多分片数据库故障的降级方案,京东设立了Fail-fast机制,可以快速熔断故障数据库分片,恢复系统吞吐,同时建立隔离的Fail-fast队列以缩小故障影响面。建立基于Sentinel的流量监控,将Sentinel与报警系统打通,做到状态可监控,实现熔断报警与恢复通知;为避免应用抖动(如GC)影响,降级预案应手动根据阈值开启,经过手动确认开启降级预案。

“软硬兼施”,英特尔与京东智联云应敌之道

大促压力的真正底层承载者,依然是硬件体系。英特尔技术方案专家周宏兴介绍称,京东智联云基于Intel 的FPGA+XEON D (BSC/C5000X-PL)打造了京东新一代的端到端SmartNIC方案,充分利用Intel FPGA的可编程能力,充分挖掘硬件性能,并根据不同业务场景自主研发不同的SmartNIC功能,更好的平衡性能,灵活性和可靠性,为京东智联云的Bare-Metal 服务和新一代云主机打造了坚实的技术基础。

3.jpg

另外,周宏兴分享了英特尔和京东联合优化分布式基础向量检索系统 Vearch的细节信息。京东Vearch图搜的数据量和体量非常大,其能够在在海量数据检索中提升性能,满足比如数据特征向量的抽取、分片、比对的存储计算需求。英特尔团队帮助京东团队进行了矢量化优化,性能提升明显。


极限压力下,京东存储可靠性和成本的平衡心经

流量压力下,存储的地位变得更加重要,但其在满足日常需求、大促系统运转和外部用户需求的同时,也需要兼顾成本平衡。京东智联云专家架构师、存储研发组负责人曹雪林表示京东智联云有一系列的法宝,这其中包括了能够提供低时延,高性能,高可靠的数据块级存储;京东智联云自主研发的大规模分布式对象存储服务;以及高可靠、可扩展、可共享访问的全托管分布式文件系。

1.png

京东智联云基础设施全景图

那么应对巨大流量,这些存储技术如何才能实现价值最大化,完成无感知的数据迁移呢?其主要包括了存储容量规划、性能调优两部分内容。存储容量规划过程中,主要费用来自容量和性能,其中容量费用更多,性能支撑需求不应大于付费容量;这一阶段需要盘点库存资源,优先通过数据腾挪来满足最终容量需求;各地域资源利用率也会相应提升;最基础的还在于实现客户无感知的数据迁移能力。

性能调优涉及的内容会比较琐碎,以读写缓存层为例,本地缓存层对本地机械盘起加速作用,通过两层缓存,增减机器负载来进行横向的弹缩。实际缓存层和数据层的比例可以根据资源池的实际“冷热”情况设置。文件和对象存储也类似,设有缓存层以及两级文件。京东存储的文件存储在设计中,文件系统与后台存储、云硬盘共享一套存储引擎。在云硬盘上存储引擎进行降本和性能提升的改造,均不影响文件系统,改造后可直接被文件系统使用。具体流程如下图所示。

1.png

另外在性能调优中,还可以采用均衡数据分布、扩容与数据再平衡、数据主副本重新均衡、主机镜像的数据预热、实时数据迁移等方面进行优化设置。总结下来便是需要事先容量规划,均衡各区域资源,提升资源利用率;对于数据数据均衡需要事先扫描,如果发现并消除数据不均衡,平衡热点分布;缓存层采用多级缓存和数据预热通常总是很有效的方法,在多个场景下都需要使用;迁移方面对于云基础环境,热迁移能力是基本能力。

Neuhub网关架构改进,应对TTS 20亿峰值压力

流量会持续不断的赶到,并且一次次的突破我们的极限,那么想要一劳永逸的解决类似问题,AI技术支持是必不可少的。而API网关在AI场景下面临了诸多的新挑战,以语音、计算机视觉技术类相关API为例,QPS、并发与计费强相关,请求、返回体量巨大,并伴有GB级网络带宽要求,这些问题将会随着AI技术的发展带来越来越多的问题。

京东智联云人工智能平台部架构师史伟航表示,解决这些问题主要有三种设计实现。首先,京东智联云引入Redis控制QPS与并发,并采用了内存缓存方式缓解Redis读取压力,为达到高性能、低延迟效果,用户第一次请求某个api时,网关会将mysql中请求的数据缓存到redis和内存中,在后续的请求中网关不会与MySQL做任何交互。请求过程中,如验证APP信息、校验APP黑白名单、查询调用API信息、查询相关计费信息、调用次数校验、调用周期校验等等,均缓存在Redis中。

1.png
内存缓存缓解redis读压力

其次,京东智联云采用内存优化型的云主机部署网关。当Redis延迟增大造成整体请求延迟时,团队增加了一步内存缓存,分析包括APP信息、黑白名单校验、API、计费等信息,信息存储在内存缓存中,内存缓存每五分钟清空,下一次如发生相同API请求,内存缓存可减小Redis的缓存压力,但全局的API、QPI校验还在Redis里,以达到分布式缓存效果,所有机器共享Redis数据,对于用户和API做整体的限流。

第三,京东智联云多IP组合来提升网络带宽,采用单体化部署的方式提升网关业务性能和稳定性。网关依赖的相关服务包括订单管理、用户管理、API服务管理,京东采用将网关变成单体化服务的方式,把相关订单服务、用户服务、API服务分别打包后放入网关中,和网关共同组成独立整体性系统,保证其他业务升级不会影响网关,从而避免影响系统整体流量。

对于巨大流量的到来,可能普通人能够感受到卡顿和延迟;但如果巨大流量下普通人依然没有感觉,那可能就是大量的开发者们为之付出了不懈努力。京东智联云在京东11.11大促期间的努力我们能看到的还只是沧海一粟,让我们继续期待后续的活动,静待更多技术干货的输出。

想要了解更多京东11.11 背后的技术揭秘相关内容,可在公众号后台回复关键词 “PPT201205” 获取演讲 PPT。

共0条评论