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

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

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

d938b7b266da34a155fa4b58c8c4e6324cbb16ec

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

以下为演讲实录:

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

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

183b97520ce10db2e9daad0e70897641de1d3481

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

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

596ad729b961eab4b98d5fd3739458b35ad90779

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

4e215e5f65250d2e5d445cae28a2b6121fb58cb2

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

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

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

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


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

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

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

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

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

90c4fb2fb3832518715cf9b75b46b48ac132f33c

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


欢迎扫码关注,更多技术分享。

ea14ec7fb062eab8a29333c7a100d227a258a14a

目录
相关文章
|
4天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
17天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
21 0
|
17天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
13 0
|
17天前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
16 0
|
17天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
41 0
|
17天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
64 0
|
17天前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
26 1
|
1月前
|
NoSQL 算法 安全
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
152 0
|
1月前
|
NoSQL 关系型数据库 MySQL
分布式锁(redis/mysql)
分布式锁(redis/mysql)
53 1
|
3月前
|
NoSQL Java 测试技术
字节二面:Spring Boot Redis 可重入分布式锁实现原理?
字节二面:Spring Boot Redis 可重入分布式锁实现原理?
155 1