2016 云栖大会
你知道向左是灯红酒绿,向右是沧海青山,却无法知道向哪里走会最终给你更好的未来。
你知道应该单膝下跪向心爱的人求婚,却不知道今后的每一个日夜要如何相处,才能和她最终厮守一生。
每一条岔路都通向更多的岔路,每一个选择都带来更多的选择。我们站在原地,凭着自己知道的“很多道理”,妄图“过好这一生”,恐怕会惹上帝发笑。
这就是我们每个人面对的困境,我们精密的大脑可以在简单的逻辑里做出最有利于自己的判断,但在无数叠加的抉择面前,却无力地像随风浪迹的沙尘。
因为这世界上的选择和它们通向的答案,比宇宙的星辰还要多。
我给你成千上万形状不一的小石块,让你填满身上的背包。请你告诉我,你如何才能知道哪些石块的组合才能让背包装得最满?
唐洪,阿里云飞天系统的首席架构师,用这个看似轻描淡写问题描绘了阿里云的终极意义。
【阿里云飞天系统的首席架构师 唐洪】
理论上来说,穷举所有石块的组合,就可以得到答案。但事实是,按照图灵机的计算模型,计算的复杂度和可供选择的石头数目成指数关系。每增加一个石块,计算量就翻一倍。
仅仅为了这一个答案,所需的计算能力就超出了人类所有计算机的总和。在哲学上,这恰如我们一次次的人生抉择:除非你尝试每一种可能,否则无法知道正确答案,而上帝不会给你尝试每一种可能的机会。
这个事实让人敬畏上苍。
然而,在唐洪眼中,“飞天”——阿里云的核心操作系统,正是为了这些“终极答案”而来。
找到“那扇门”
在那部经典的科幻电影《2001漫游太空》中,一个远古猿人把骨头奋力抛向蓝天,立刻幻化成穿梭在太空中的宇宙飞船。
这一幕被誉为科幻电影的经典镜头,让无数人热泪盈眶。然而仔细想来,把一个宇宙飞船射向太空,原理不就等同于把一个硕大的骨头扔向更高的天空吗?
一个原始人都会做的动作,当它的体量无限扩大以后,就变成了需要千万年后的高科技才能实现的壮举。
飞天所做的工作,说到“原子”层面,就是排序、数数。拿淘宝举例,就是分析商品卖了几个,分别是什么时候卖的。而一旦这样的工作一旦变成大规模,各个数据之间都有关联,就很难在短时间内得出正确答案。
把亿万卖家和买家的信息进行计算,得到的并不是简单的商品库存和销售情况。
通过数据分析,可以让用户用最快的速度搜索到自己想要的商品。
通过数据关联,可以判断用户的性别爱好,从而根据场景做出精准的商品推荐。
通过数据整合,可以判断出一个人是否有信用污点,从而在金融产品中决定给申请者的贷款额度,控制坏账率。
这些我们在淘宝、天猫、蚂蚁金服中享受的功能,就是“大规模计算”得到的奇迹。“1+1”的小儿科,不经意间变成了我们敬畏的“大数据”。
而把这些“大数据”继续进行调度,就能产生“上帝之手”的功效。
大规模的任务调度是非常复杂的,例如滴滴打车的出租车规划、机场的飞机调度,甚至是沃尔玛的库存管理,都不是靠人脑可以胜任的。因为每个场景都几乎有无限种可能和选择。
唐洪说。
至此,我们遇到了之前的“背包装石头”问题。
大家熟知的非对称安全加密技术,今天热门的区块链技术,都是基于计算极限问题 (intractability)的假设。飞天当然也不可能突破计算极限。所以我们只能给出近似解,而不是理论上的最优解。
最优解只有一个,而近似解有无穷多。怎样在浩如烟海的解中找到最合适的近似解,就是飞天的“刀锋”所在。
“从飞天诞生开始,我们一直在做的就是这件事。”他说。
由于不同行业的业务和数据有自己的特点,这就使得“飞天”计算集群可以把好钢用在刀刃上。利用模型和算法删除掉一些不可能的“子集”,这样就可以使得最终的求解范围在一定程度内缩小。但即使这样,所需的运算仍然超越想象。这时就需要另一套规则和模型根据“价值判断”做出取舍。
这就像你身处一个硕大的房间迷宫中,每个房间都有很多门,而打开一扇门之后,又会进入一个新的房间,这个新的房间同样有很多门。为了找到最终的出口,你需要先排除掉那些肯定不会通往出口的门,然后在这些可能的出口中,挑选可能性最大的那扇门。
由于没有完美的正确答案,所以这些模型和判断的优化,永无止境。这在某种程度上类似于“进化”。
然而,大规模计算所面临的问题,远远不止如上这一个,唐洪为雷锋网列举了另外一个重要的问题,那就是自动化的难度。
超越人脑的极限的计算,必须用自动化的程序来完成。但是数据体量变大之后,平常看来边边角角的问题就成为一个严重的情况,那就是如何保证自动化的正常运作。计算错误、指令未传达、系统卡死等等小概率的事件,都会因为数据和计算集群的庞大而变得几乎成为必然。
这个时候,就需要对于计算的每一个微小的步骤实现感知和监控,发现错误。但是,对于云计算每个路径的各个步骤实现监控,绝非易事。
对于计算的跟踪,需要对每一步进行“染色”,就是做一个标记以便系统进行关联。这就需要在处理过程中嵌入染色信息。 但是系统运行的每一个步骤都各不相同,需要根据具体的情况来找到最好的嵌入点。更难办的是,有些步骤根本没有办法嵌入信息。这个时候,就要根据计算周边的信息来做推断。
例如某个进程打开了文件,操作系统中会用一个描述符来表示这个文件,通过对描述符的关联,就可以把在操作系统内核中发生的事件和用户进程关联起来了。
所有的跟踪都是具体问题具体解决,可想而知付出的艰辛有多大。
他说。
以上这些“坑”,都是唐洪和飞天用了七年时间,一点一点趟出来的。然而,所有的这些微小进化的累积,都是建立在飞天的“算力”基础之上的。
唐洪说,飞天系统就像一个巨大的计算机,只不过是由全球各地的数据中心,几十万台服务器,通过专线联系,组成的超大计算集群。
看到这里,你可能会恍然大悟,调度全球的几十万台服务器,本身就是一个“背包装石头”的巨大挑战。
唐洪给雷锋网 (搜索“雷锋网”公众号关注) 讲述了飞天诞生的故事。
彼时的阿里巴巴,某种程度上说站在了危险的悬崖边上,而还在婴儿期的飞天,做了一个美丽的梦,名叫“5K”。
5K,一尊雕像
王坚,永远带着一副笑容,身影高瘦看似弱不禁风。不过,就是这个人,顶住了所有的质疑和压力,成为众人心中守护阿里云从一颗嫩芽长成参天大树的英雄。
包括唐洪在内的所有人,都把王坚称为“博士”。当年,正是博士的一通越洋电话,把唐洪从美国“忽悠”了回来。
2012年的飞天还在研发的早期阶段,只能支持最大 1500 台机器的集群,也时常因为一些bug遭受客户的吐槽。当时,阿里巴巴的很多数据处理的任务,还是建立在开源软件 Hadoop 的系统之上的,这个集群大概有 3000-4000 台机器。
【阿里巴巴集团技术委员会主席王坚】
但是,Hadoop 无论从安全性还是运行逻辑上,都不是为公共云计算设计的。
Hadoop 的存储和计算是一体的,也就是说,如果你需要十台机器的存储,但不需要十台机器的计算能力,你仍然需要十台机器的集群,这是一种浪费。虽然可以通过其他方法解决这样的问题,但是运行效率会大大降低。
Hadoop 的账号体系,不是面向互联网租户的账号体系,更多的是面对本地管理员。这就决定了它不能像如今的阿里云一样出售给互联网级别的用户。
另外,Hadoop 高度的灵活性,允许应用层的用户直接访问底层的文件,这存在巨大的安全隐患,也不可能直接以多租户共享的形式跑在公有云上。
唐洪告诉雷锋网,以上的一切弊端,都很难通过修修补补的方式,在 Hadoop 上规避。而更关键的问题在于,阿里巴巴那时业务的增长速度,已经趋近 Hadoop 集群的计算能力极限。一旦达到瓶颈,就必须被迫降低业务水平,或者主动限制业务规模。
在此之前,阿里巴巴曾经进行过尝试,用飞天来代替 Hadoop,但都以失败而告终。彼时的阿里巴巴 CTO 王坚对所有阿里的童鞋说,这个任务还是应该让飞天来承担,因为在他心里有一个计划,那就是把飞天做成 5000 台服务器的集群。这个当时让很多同事取笑的疯狂想法,就是“5K”。
从1500到5000,绝不仅仅是再买3500台机器这么简单。唐洪说:
摩尔定律注定了计算机硬件性能随时间的指数增长 。从1500台老机器到5000台新机器,计算力增加了8倍到10倍。在短短不到半年时间内实现如此大跨度的软件能力的升级,对任何一个熟谙软件工程规律的人来说,都是不可能的挑战。
但是,飞天真的做到了。世界上买得起五千台服务器的公司不少,但是真得有自己研发的技术调度这么大规模集群的,一只手都数得过来。
为什么阿里云一定要建设 5000 台机器的集群呢?
唐洪告诉雷锋网,对于阿里巴巴来说,很多计算任务是没有办法拆解的,必须在一个计算集群里完成。如此大量彼此联系的数据,就需要这么多机器处在一个集群中协同分析。
就在2012年底的总裁会上,还有人提出要重新依靠 Hadoop。但最终总裁们决定两条路一起走,既要 Hadoop 也要飞天。但是在我看来,这种决策让技术力量分流了。其实,当时我根据团队内部的模拟实验结果,心里很清楚达到 5K已经不是架构设计的问题,而是一个产品细节打磨的过程了 。但其他部门的同事可能并不这么认为。这样两条路一起走就大大分流了技术力量,所以5K能够早一天做出来,就能早一天终结争论。
他说。
2013年8月15日,是唐洪脱口而出的日期。这一天,事实宣判了王坚、唐洪和飞天的判断是对的 。5K 集群上线,并且是同时上线了两个 5K集群。
在阿里巴巴云栖小镇里,树立着一尊 5K 的雕像。这尊雕像比想象中要小,却丝毫不能阻挡它向周围散发着理想的质感,很多路过的人都会驻足观看。
【坐落在阿里云栖小镇的飞天 5K 雕像】
唐洪告诉雷锋网,后来的事实证明,Hadoop 集群在超越4000台机器集群之后,会遇到不可逾越的瓶颈。如果当时阿里巴巴选择依赖 Hadoop 系统,如此高的业务增长,将会遇到计算性能的“断崖”,后果难以设想。
就像当年的波音的747飞机、Intel的x86芯片、SpaceX 的火箭一样,所有的伟大创造,都来自于孤注一掷。
唐洪如此感慨。
“吃自己的狗粮”
我记得2012年或者2013年我们进行校招的时候,清华北大的学生来面试的非常少,而且很多同学即使拿到了我们的Offer,他们的第一选择也会是百度和腾讯。
唐洪把这个悲伤的事实当作一个段子讲给雷锋网。在今年的阿里星面试上,唐洪问同学问为什么选择来阿里云,得到的回答是“阿里云的云计算技术领先”。
他简单地形容了一下现在的飞天:
单集群万台,全球总共几十万台服务器,每天数据平台处理的数据超过 1PB。
不过他觉得,这些都不能说明飞天的强大,真正有说服力的,是阿里巴巴在“吃自己的狗粮”,也就是包括淘宝天猫在内的部分重要业务,包括瞬时并发计算量惊人的“双十一”,都由飞天来负责云计算调度。也就是说,阿里巴巴自己也在使用给其他客户提供的相同的云服务,没有任何特权和区别。
“我相信国内某些竞争者们自己的服务肯定没有跑在自家提供的云上。”他说。
让阿里云引以为傲的一个数据是:在中国 37% 的网站都建立在阿里云之上。
我们的预计是,未来全世界可能只有几台“计算机”,他们都是由超大规模计算集群组成的。这个时候,计算力就会被彻底地解放。
如果唐洪的预想成真,那时有关“背包装石子”的计算,将会得出比现在更接近真相的解。也许我们永远找不到正确的答案,但是毋庸置疑,机器每每向正确答案逼近一小步,都是人的光荣。
向世界要一个答案
每年,阿里云都会在大本营杭州举行云栖大会,公布阿里云和飞天的最新进展。在今年的大会上,马云发表了热情洋溢的演讲。
原来的机器制造将会变成人工智能,原来机器吃的是电,未来机器吃的是数据。
马云如是说。
可见,机器学习和 人工智能 ,正是飞天下一步棋。
对于人来说,岔路后面的岔路,选择背后的选择,让我们感觉到渺小和恐惧。为了对抗命运的无常,我们发明了云计算,我们发明了人工 智能 。无论对于唐洪还是飞天来说,这些无数运转的芯片,无数网络中川流不息的电流,都只有一个目的:
向世界要一个答案。