【干货】阿里研究员蒋江伟:双十一背后的分布式技术

简介: 我的分享有两个部分,一是阿里技术部的发展过程,二是跟“双十一”技术相关的情况。

2016阿里技术论坛于4月15日在清华大学举办,主旨是阐述阿里对世界创新做出的贡献。阿里巴巴集团技术委员会主席王坚,阿里巴巴集团首席技术官(CTO)张建锋(花名:行癫),阿里巴巴集团首席风险官(CRO)刘振飞(花名:振飞),蚂蚁金服首席技术官(CTO)程立(花名:鲁肃)以及来自阿里巴巴集团各部门多位技术大咖齐聚一堂,与莘莘学子分享阿里的技术梦想。

image.png

在下午的《电商技术:零到三万亿,从未停止的技术创新》分论坛上,阿里巴巴研究员蒋江伟(花名:小邪)发表了题为《零点之战,双十一背后的分布式技术》的演讲。

以下为演讲实录:

我的分享有两个部分,一是阿里技术部的发展过程,二是跟“双十一”技术相关的情况。

2008年,当时淘宝跟淘宝商城的体系是分开的,包括商品、交易、营销以及店铺等。那时候我们在维护一个庞大的系统,代码以及各种各样的问题严重制约了整个技术的发展。在这个背景情况下,我们做了分布式化的改造。

image.png

这对于技术有非常明显的帮助。举个例子,我们数据库,小到做变更,大到数据库重新选型,都可以做到比较透明。如果没有抽离出共享服务层,那这个事情的变更是难以想象的,现在我们在基础技术上去做大量的创新工作,但是上层的业务系统根本不需要去修改任何的代码。所以一个是技术上面的创新,一个是业务上面效率带来了非常正向的变化。

整个架构就变化了。原来是一个应用,它从应用到数据做完之后就变成这样了(如图),这个只是0.1版本,是用来教学用的。但是到现在已经没有办法学了,已经超过几千个系统,已经画不下的这么一个场景。

image.png

那么做一个比较大的分布式的架构需要哪些技术?第一个阿里巴巴,还要下APS,还要下筛选,还有服务框架,还有做数据的治理,另外还有我们的应用软件,还有我们的开发框架,最下面可能就是一个存储,非常重要的就是存储,很多的数据都是加入到了缓和里面。比如现在访问淘宝,经常被访问的会员的数据和商品的数据都是放在缓存的。还有文件系统,这些图片存在在系统里面,这个规模也是非常大,在全国也是非常大的一个文件系统。还有阿里的关系数据库,我们通过TDDL对数据做了分库分表,还有我们利用消息中间件解决异步流程,解决数据最终一致性的问题。通过这7个中间件的产品,构成了整个阿里技术体系的分布式架构。使得我们的工程师在开发我们系统的时候,开发一个单机版的程序一样简单。

image.png

刚才讲到的是分布式技术上的呈现,其实使用了分布式技术之后,直接带来的影响就是让我们整个扩展性得到了非常大的提升,同时,从原来的商用的体系里面变成了分布式体系之后,成本下降也非常明显。

哪些技术在“双十一”诞生的?“双十一”它是一个对于工程师来说,就像是面临高考,在座的可能就考过一次高考,我们工程师每年都要做高考,考砸了跟各位是一样的,都是非常严重。

总共7年的“双十一”下来,没有出过大的问题。差不多2年的时间整个技术体系有一些沉淀。2009年—2010年,还是懵懵懂懂的过程,基本没有出现什么问题,工程师都没有特别的感知。

但是也有一些小问题,我了解到当时最大的问题就是图片,图片由于CDN的容量到了,我们做了一件事情就是把淘宝上部分商品的最后一些图片不做显示。第二个事情,因为刚才前面讲到2008年中后期做了改造之后,整个系统全部分布式之后,系统的规模速度增加,一个是系统的数量增加,导致了整个系统的逻辑,或者说整个依赖关系已经没法用工程师的视角归置和梳理出来, 做了一个工具用来治理系统之间依赖的关系,流量,强弱。

2011年、2012年的时候192亿、370几亿,这个时候对整个交易系统的挑战非常大了。所以主要是做了整个扩容,整个容量扩大的非常快。在这之前,我们讲“双十一”最大的挑战有两个。第一个是怎么评估容量,系统能支撑多少容量,这个容量的评估那时候开始做了。第二个,一代治理,容量规划,就是说做了这些事情,其实表现得并不好,在2011年、2012年的时候前面30分钟还是出现了不少问题,突然间购物车商品被删除掉了,或者说下单的时候红包没有用,各种各样的问题。出现这些问题之后,引进了下一代技术,比如说我们做了自动化数据订正系统。

2013年、2014年有了一个先进的技术,刚才我们在视频有提到,在“双十一”之前都是在做这个事情,它是一个容量规划的新的高度。原来我们在之前做容量评估的时候,我们评估每个系统的容量怎么评估呢?通过引流,当前用户,我们把用户的流量集中在一个上面,看一下应用,当你流量不断上涨的时候你的表现情况是什么样的,我们的CPU,还有我们的内存等等。当它出现拐点的时候,我们把这些值给记录下来,这样的话就知道系统的容量。这种办法非常准确,但是有一个问题,因为你系统的量非常大,即使参与整个“双十一”的系统,我预估,因为我搞不清楚到底有多少,预估有几百个系统,直接参与“双十一”交易,就是航天飞机的零件,如果一个零件发生问题,整个就会毁掉。

在“双十一”之前我们做了这么一个事情,它是按照正完全真实的场景,全部动用现在的服务器,然后去模拟“双十一”当天可能会产生的用户行为,系统、服务器,还有真实的逻辑去做压测。与原来的压测方式相比它有几个比较好的地方,第一个原来的方式是真实的流量,但是实际情况是促销的时候,“双十一”大促的时候,它的流量跟平时的模型是不一样的,平时的路径我们是通过搜索或者翻页,“双十一”肯定不是这样的,“双十一”肯定就是所有的东西都加到购物车里面了,这个时候我很少再去做搜索或者再去下单,甚至有一些借助浏览器工具怎么样更快的抢到一些东西,模型是不一样的,但是我们需要模拟出当时的场景。总结一下我们需要这样一个技术:第一是做了一些根据业务场景做模拟的能力,第二个它能够产生巨大的流量,这个巨大的流量能够把我们整个集群,超过几十万台的流量全部压满,然后我们给那个服务器加上新的服务器,然后我们再来做,把所有服务器的流量拉平。

还有一个事情我们做了BCP防资损对账,这个产品做完之,如果出现问题会被秒级发现。刚开始做BCP的时候,我自己觉得意义不是非常大,因为我觉得如果是所有的代码是工程师写的,我认为只要经过测试上线的系统,逻辑肯定是不会出问题。感觉意义不是非常大,但是没有拒绝做这件事情。 后来做出来之后发现这个事情还是非常有意义,原因是什么?我们系统出现异常的流程会导致我们的数据出现异常。比如说我讲“双十一”的时候,突然因为我的优惠券没有使用,这时候就会发现,所以在2013年2014年的时候,整个交易额到了570几亿,但是整个表现已经非常好了,就是这个表现跟我们行业内的其他公司不一样,无论从数据上,体验流畅上面都要远远超于同行。

2015年的时候,我们达到了912亿的交易额,整个体验也是非常不错,但是我们遇到了新的挑战,为了支撑这912亿之后我们大量的计算,但是过了这一天之后,本来非常繁忙的变成非常空闲,这个成本浪费是非常大的。不过不用担心,因为利用阿里云计算,所以可以非常好的解决弹性的问题。

image.png

后面介绍一个整个阿里的文化。我们是开源项目最多的,比如说2015年开源了65个项目,还有高含量的项目18个,还有一些在国内都是非常知名的一些开源项目,这些项目都是由阿里巴巴的工程师,可能是在工作中的一些沉淀,或者说业余的时间来贡献力量。在阿里直接参与开源操作有300多人,这是开源的文化。

目录
相关文章
|
1天前
|
NoSQL Java Redis
京东双十一高并发场景下的分布式锁性能优化
【10月更文挑战第20天】在电商领域,尤其是像京东双十一这样的大促活动,系统需要处理极高的并发请求。这些请求往往涉及库存的查询和更新,如果处理不当,很容易出现库存超卖、数据不一致等问题。
7 1
|
1天前
|
消息中间件 架构师 Java
阿里面试:秒杀的分布式事务, 是如何设计的?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试阿里、滴滴、极兔等一线互联网企业时,遇到了许多关于分布式事务的重要面试题。为了帮助大家更好地应对这些面试题,尼恩进行了系统化的梳理,详细介绍了Seata和RocketMQ事务消息的结合,以及如何实现强弱结合型事务。文章还提供了分布式事务的标准面试答案,并推荐了《尼恩Java面试宝典PDF》等资源,帮助大家在面试中脱颖而出。
|
5天前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
1月前
|
人工智能 Kubernetes Cloud Native
深度对话 解锁阿里云分布式云原生技术落地新姿势
深度对话 解锁阿里云分布式云原生技术落地新姿势
深度对话 解锁阿里云分布式云原生技术落地新姿势
|
2月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
75 5
|
2月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
55 0
|
2月前
|
SQL 存储 分布式计算
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
48 0
|
2月前
|
存储 监控 开发者
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
|
6天前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
2月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
94 2
基于Redis的高可用分布式锁——RedLock

热门文章

最新文章