《双十一不一样的技术创新》2016出版 读书笔记

前言

本篇博客是在阅读《尽在双11:阿里巴巴技术演变》书籍的读书笔记,若文章中出现相关问题,请指出!

所有博客文件目录索引:博客目录索引(持续更新)

目录

image-20211027174702082 image-20211027174709713

2009年:第一次双 11,交易峰值仅为400 笔每秒,支付峰值仅为 200 笔每秒,八年增长数百倍

2016年:在双 11 零点开始的半个小时里,超过 6 千万的用户使用手机来同时参与了这次活动,在零点的流量高峰,创造了每秒交易峰值
17.5 万笔,每秒支付峰值 12 万笔的新纪录。

一、基础设施

1.1、万亿交易量级下的秒级监控

监控体系:

image-20211027174410650

自主研发了多套监控系统,规模达到千万级监控项、PB级的监控数据。

阿里核心业务监控的SunFire监控平台,是一整套海量日志实时分析解决方案,以日志、REST 接口、Shell脚本等作为数据采集来源,提供设备、应用、业务等各种视角的监控能力,从而帮您快速发现问题、定位问题、分析问题、解决问题,为线上系统可用率提供有效保障。

SunFire技术架构图:Agent采集、计算(Map、Reduce)

image-20211027174823817

日志传输前需要进行压缩处理。

zero-copy:文件传输其实是可以不经过用户态的,可以在linux 的核心态用类似 DMA 的思想,实现极低 CPU 占用的文件传输。之前的传输使用c语言编写的sendfile逻辑,之后集成到java工程中使用java实现。

  • 计算平台周期任务架构里,使用对二分查找法稍加优化的方式进行日志内容查找。

1.2、 软硬件结合的思考和实践

自主研发针对于阿里电商双十一业务的硬件

定制处理器: x86 处理器定制从 0 到 1,AliCPU,稳定承载了 2016 双 11 大促,成为保障奇迹背后的关键力量。

  • 针对基本盘从性能、能效、成本几个直接界面问题入手。

定制 SSD(硬盘):从know-why、know-what、know-how几个层面,开始自研SSD,AliFlash

  • MySQL默认使用双写(double write)来保证数据的一致性,此特性会造成两次 IO,带来性能和容量的额外开销。通过开启 AliFlash 原子写功能,从硬件层面保证了业务写入 innodb 的 page 时,不会产生跨页写入,保障数据的一致性。由于关闭了双写,在高 IO 压力下,对于逻辑卷(LVM),响应时间降低了 8%左右。对于裸盘,性能提高约 5%左右,RT 上降低了 18%,约 0.3ms。另外,关闭双写降低了 30%~45%的业务写入量,能显著提升 AliFlash 的使用寿命。

存储领域:貔貅架构

image-20211027180917811

通用底盘:雷神项目

阿里理念:笃定客户价值和长期技术竞争力构建的初心,阿里巴巴基础设施技术团队承诺不断挑战自我、勇于创新、持续交付便捷高效优质的硬件基础设施解决方案。

三、中间件

3.1 万亿级数据洪峰下的分布式消息引擎

中间件团队于 2011 年研发了以拉模式为主,兼有推模式的高性能、低延迟消息引擎 RocketMQ。并在 2012 年进行了开源,经历了 6 年

双 11 核心交易链路检验,愈久弥坚。

RocketMQ 很好的服务了阿里集团大大小小上千个应用,在双 11 当天,更有不可思议的万亿级消息流转,为集团大中台的稳定发挥了举足轻重的作用。

image-20211106001950833

低延迟:RocketMQ 作为一款消息引擎,最大的作用是异步解耦和削峰填谷。一方面,分布式应用会利用 RocketMQ 来进行异步解耦,应用程序可以自如地扩容和缩容。另一方面,当洪峰数据来临时,大量的消息需要堆积到 RocketMQ 中,后端程序可以根据自己的消费速度来进行数据的读取。所以保证 RocketMQ 写消息链路的低延迟至关重要。

image-20211106002142660

借鉴 Hystrix 思路,中间件团队自研了一套消息引擎熔断机制

阿里中间件(Aliware)。

Zookeeper 作为分布式调度框架,需要至少在 A、B、C 三个机房部署以保证其高可用,并为 RocketMQ 高可用架构提供如下功能

展望:面对移动物联网、大数据、VR 等新兴场景,面对席卷全球的开放与商业化生态,团队开始着手打造第 4 代消息引擎,多级协议 QoS,跨网络、跨终端、跨语言支持,面向在线应用更低的响应时间,面向离线应用更高的吞吐,秉持取之于开源,回馈于开源的思想,相信 RocektMQ 朝着更健康的生态发展。

四、电商云化

T4 是阿里在 2011 年的时候基于 Linux Container(LXC)开发的容器技术基础设施。T4 使用了 LXC,Docker的执行引擎也支持 LXC,但神奇的是 T4 却能够在阿里内部老版本的 OS 和内核上跑起来。因此直觉告诉我将 T4 和 Docker 结合起来应该是可行的将两者融合为了一个产品,相当于既让 T4 具备了Docker 的镜像能力,又让 Docker 具备了 T4 对内部运维体系的友好性,并且能够运行在内部早期的AliOS5u和2.6内核上。这个产品在内部称为AliDocker

几十万 Docker 容器撑起了双 11 交易 17.5 万笔每秒的下单峰值

五、业务架构

5.2、双十一核心链路的故事

image-20211106003630489

红包使用:通过 SQL 分析我们发现在红包使用场景中数据库花费了大量的 CPU 资源进行 SQL 解析,同时一次下单涉及的 SQL 语句也很多,有非常多的网络消耗。而mysql 并不像 sqlserver 等数据库那样支持预编译,但好消息是 mysql 支持batch insert 语法。于是我们可以使用 batch insert 的语法来优化插入性能,使用一条 UPDATE SQL 更新多条红包的方式来优化更新性能,然后再将些 SQL使用前面提到过的合并优化方案合并为一条大的 SQL 语句发送给数据库服务器,减少网络交互。假定本次用户下单时全额使用了 3 个红包,那么可以通过一个SQL 将三个红包的余额更新为零,同时还使用了金额锁保证红包并没有其它的事务并发更新。同时为更新语句添加 TARGET_AFFECT_ROW 3 的标签,如果红包已经被其它订单在并发场景下使用,那么它会使当前事务失败,并且我们可以通过数据库返回的错误码识别这一情况。

效果:通过前述的优化措施,在典型的场景下,数据库服务器的负载下降了至少50%,而且下单的整体响应时间也减少了至少 50%。


多级缓存框架实践 —— 狼烟多级缓存框架

在 UMP 整合了天猫优惠系统后,由于天猫卖家中,会有大卖家,如:猫超、当当网、优衣库。每到大促,热点数据成为了我们关注的问题。UMP 由于实时性的要求,是一个重度依赖缓存的系统。如何防止热点数据击穿,提升热点数据的访问效率,我们建立了一个多级缓存框架来解决这个问题 —— 狼烟。

image-20211106082250640

image-20211106082330457

5.3、千亿访问量下的开放平台技术揭秘

高性能API网关:使用异步化调用,首先进行前置校验后,使用HSF或HTTP NIO Client来发起远程服务调用,并结束与回收该线程。得到响应后,以事件驱动的形式将远程调用结果与上下文请求信息提交到TOP工作线程池,来进行之后的数据处理。最终使用Jetty Continuation特性唤起请求将结果输出给ISV,实现请求的全异步处理。

优化元数据获取:千万级 QPS 全部打到 DB 是不可取的,尽管 DB 有做分库分表处理,所以我们在DB前面加了一层分布式缓存;然而千万级QPS需要近百台缓存服务器。

image-20211106083030438

image-20211106084422824

如何降低数据写入开销

数据同步方式

# 原始写法
SELECT * FROM jdp_tb_trade WHERE tid = #tid#;
UPDATE jdp_tb_trade SET jdp_response = #jdpResponse#, jdp_modified = now() WHERE tid = #tid#

# 优化写法
UPDATE jdp_tb_trade SET jdp_response = #jdpResponse#, jdp_modified = now() WHERE tid = #tid# AND modified < #modified#

白天订单成交量较高,对DB的访问量增大,此时不适合做频繁的删除,可以采用逻辑删除的方式来批量更新失效数据,在晚上零点后交易低峰的时候在对数据进行批量错峰删除,可以有效提供数据同步体验。

5.4 智能供应链

菜鸟作为一家平台型公司,通过数据和技术,建设一个社会化协同的物流和供应链公司。

实现:通过海量数据精准的预测大促包裹量及流向、通过供应链预测计划合理入库及分仓铺货、以及做到“单未下、货先行”的货品下沉提前打包等。


六、大数据

在面向商家的数据直播大屏中,为了实时观察店铺流量情况,需要处理全网的所有流量数据。另外,为了让商家更全面更细地分析流量,增加了很多实时的数据维度,比如我们需要计算每个商家的访客数量、加购数量、热销商品、流量来源、每个商品的访问情况等等。

并且阿里的业务有很多很多种,每个业务模块还会进行各维度的交叉分析,比如行业、类目、地域等,数据监控了当天活动进展的方方面面,也是当天活动应急响应决策的重要依据,实时处理是如何做高精度、高吞吐、低延时、强保障的呢?

  • 实时计算 聚合组件:XTool

七、人工智能

奖赏函数,例如商品的排序布局;

推荐算法

电商智能助理-小蜜,智能交互。

自然语言处理,支付宝热线智能客服。

数据赋能:提供访客运营、会员粉丝运营,借助大数据与人工智能技术,来帮助商家提升客户运营的效率。

店铺承接页个性化技术,个性化场景:猜你喜欢、有好货。

千牛头条推荐。

DNN搜索场景。

八、交互设计

VR电商购物。商品交互

淘宝直播在双11的互动实践。

核心优化:首屏秒开、变速播放。


名词补充

ISV(Independent Software Vendors,独立软件开发商):加入淘宝服务频道或者开放平台的开发者及企业。

你喜欢、有好货。

千牛头条推荐。

DNN搜索场景。

八、交互设计

VR电商购物。商品交互

淘宝直播在双11的互动实践。

核心优化:首屏秒开、变速播放。


名词补充

ISV(Independent Software Vendors,独立软件开发商):加入淘宝服务频道或者开放平台的开发者及企业。

我是长路,感谢你的耐心阅读。如有问题请指出,我会积极采纳!
欢迎关注我的公众号【长路Java】,分享Java学习文章及相关资料
Q群:851968786 我们可以一起探讨学习
注明:转载可,需要附带上文章链接

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长路 ㅤ   

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值