免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2894 | 回复: 0
打印 上一主题 下一主题

阿里云资深总监唐洪:飞天开放平台 [复制链接]

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-11 10:40 |只看该作者 |倒序浏览
很高兴今天有机会跟大家介绍飞天开放平台,我一开始还是给大家讲一下云计算三个本质问题。

    云计算第一个本质问题是大规模,大家都知道云计算是应互联网而生,并且是为互联网服务的。互联网最大的特征就是有很大数据,有一个数据说互联网每天产生2.5EB(2500PB)的数据。淘宝现在每天也产生几十亿元交易的规模。

    云计算第二个本质特征是低成本,这里不仅仅是讲简单给大家带来的价格的降低,而且说在某种尺度上,成本的降低是可以改变人的习惯的。像刚才王坚博士说的,如果云计算不能降到一定程度的时候,他们会考虑不做这个生意。像电话一样,我在读书的时候,打电话还要考虑一下要花多少钱,今天我想大家已经不会再考虑打电话费用的问题。同样云计算也是一样,云计算要起来的话,一定是让互联网的开发者在云计算开发应用的时候,不要考虑费用。这跟调度有关系,其实计算也是一样,当把计算机打开的时候,如果不在上面进行计算的话,CPU也是在转的。如果真的要降低成本的话,调度是其中最关键的一环。我们希望把不同的应用,把应用对资源覆盖的波峰波谷对接起来。

    第三个本质特征是服务运营,就是说云计算用户不需要像传统IT一样一下子购置很多IT设备,是可以按照对资源的使用量收费。这提供一种可能性,就是说可以达到弹性的扩展。就是说当你的一个应用的服务增长的时候,我可以通过增长我资源的购买来提高我这个服务的效能。从另外一个维度上来说,云计算服务运营的本质应也许意味着他必须是安全的。负责运营一定要保证用户在使用这个服务的时候,是感觉安全和放心的。

    我们设计飞天的时候有两个设计目标,我们希望用同一套系统支持尽量多的离线和在线服务。当我们能够把不同的应用放在同一个平台上运行的时候,它就可以帮助扩大这个平台的规模性。第二,不管是离线还是在线,都有很多共性。第三,离线和在线服务在本质上有些差异,比如说离线的话,是想要优化整个系统吞吐量。还有一个设计目标是我们希望以公共服务方式给大家提供服务,用通俗的话讲,用公共服务方式提供服务,跟亚马逊比较类似,简单讲,如下大家理解,飞天开放平台设计架构的话,就是谷歌加亚马逊。
    到底飞天做什么?飞天想把上千台PC构成一台超级计算机。这个计算机有一个10TB硬盘,大家一个人从生死,我们把他眼睛看到的东西和耳朵听到的视频影像。它拥有一个1万核的计算机,如果你有一个渲染的作业,需要在单机上需要一个月的话,在这台操作机上只有40分钟。一般来说,当你在开发一个渲染的作业的时候有可能他们对渲染完成的东西再看,再更改。如果迭代周期一个月的话,很难想象很快把一个东西做完。

    刚才也讲到,我们希望做到资源共享,所以它必定多租户的运行环境。安全就成为一个很重要的挑战,也不仅是私密性的安全,而且要确保不同应用之间,能够不会互相干扰。因为这是一个很大的系统,大家知道硬件都会发生一些问题,但是系统很大的时候,故障就是成为一个问题。所以飞天要做一件事情,把底层硬件故障屏蔽,并且确保数据永远不会丢失。我们希望构建在飞天上的数据,永远不会中断,数据永远不会丢。飞天能够确保应用在上面跑的话,能够得到的可靠性和可用性是超过一个单台服务器。

    构筑这样一个大型系统,有很多工程上的挑战。第一个挑战,小概率事件变成常态,我举个例子,比如说硬盘,大家知道硬盘故障率每年4%8%,当有一个集群里面有5万个硬盘的时候,他每一天的故障率是99.96%。第二,不单单是已知的故障会放大,也会碰到我们没有碰到的故障,比如说网卡TCP校验有可能出错,这个问题我们实际上本来在设计系统里面是没有想到的,但是实际在生产环境就发生了。第三,虽然我们会强调我们所有工程的流程,工程的实践,尽量保证开发的质量,但是因为受限于我们测试环境的大小,受限于测试场景覆盖,很多的在软件里面的问题,在测试里面没有办法完全消除掉。但是因为我们线上生产系统规模非常大,不同应用场景是非常复杂,而且在不停运行。

    我们总结出来有两点里弥补这些问题,第一,我们在设计这个系统的时候,我们要降低模块之间耦合性。第二,强调整个线上系统的可诊断性。就是当你发生问题的时候,要在线上来修改这个问题。还有一个挑战是全局同步代价是非常昂贵的,有一个理论上支撑,有一个计算机科学家因为在数据库和事务处理方面的研究得到了奖,他讲过规模和竞争有一个三次方的关系。我举个例子,假设你要跟一个朋友出去吃饭,是比较简单的,你打通电话就可以了,他回答只有两种,行或者不行。但是假设你要跟N个人吃饭,到第二个人求证这个时间不行,就必须要回到第一个人求证新的时间。有可能达到同一个时间之后,中间又有个人跳出来我另外有约会,再定时间。这个结论有两个推导的因素,一个在我们架构设计的时候,我们在性能关键路径上要避免全局同步。既然我们没有办法时时刻刻有精准全局状态,我们要对不精准的全局状态达成一个妥协。
    再一个挑战是在这个大规模分布系统里面,我们发现任何时间它都有热点,这个热点不是固定在一个地方。我们不能够说强调想办法达到一个绝对的负载均衡。这个动态也体现在很多互联网是一个周期性变化,像游戏的时候大家在周末的时候用的比较多一点,搜索引擎在工作日用的比较多。
    飞天的系统架构。飞天底层是构建在数据中心大规模Linux集群上面,它的最下面是构建分布式系统基本服务,比如说远程过程调用,就是两个过程中间点对点通信。还有安全管理,安全是云计算一个非常重要的特征,所以我们是把安全作为飞天平台的最底层的模块。分布式的协同服务,可能做过分布式系统的同学都知道,它包含一些构建分布式系统最基本的协同。然后是资源管理,刚才讲怎么把整个底层上千台服务器构成一个有万核的计算机。这里面有两个关系,分别是分布式文件系统和任务调度。一个是集群部署,一个是集群监控。这对我们来说非常重要,在飞天上跑的应用是不能停的,我们在进行软件升级,集群扩容,我们不能把整个系统关掉,所以我们集群系统要支持在线的软件升级和集群扩容。因为系统规模非常大,所以我们需要采集的监控数据非常多,我们整个数据监控也是一个分布式架构。
    在我们整个飞天开放平台上的应用,中间这个框就是我们飞天开放平台。橙色就是我们希望用同一个系统来支持尽量多的离线和在线应用,蓝色部分就是说我们想用开放方式支持上面的应用。因为时间限制,我讲里面这两个部分,分别是分布式文件系统和资源管理。

    分布式文件系统,我们系统名字叫做飞天,里面所有组件名字也很奇怪,是用神的名字命名的。我们分布式系统叫做盘古,我们觉得大地是承载万物的基础,所以我们用盘古命名我们的分布式文件系统。Master主要负责数据管理,我们Master是基于Paxos的多Master架构,我们可以做到故障恢复一分钟,我们多Master花了一年的时间才能够真正稳定下来。我们文件是按照分片存放,一个大文件拆分成64M小片,分布在不同chunk上。最后也讲到,我们其实不能依赖于网卡做TCP校验,我们做了点对点的校验,确保读的数据是原来写下去的数据。

    做过一些分布式应用同学都知道,当要做一个可以扩展的应用的时候,Partition是常见的,这里面我有三个分区,如果分布式文件系统大家不知道的话,这里面文件性的进程可能要访问分布式系统上的数据。一个优化的方案我们会把数据聚拢起来,把一个Partition需要访问的数据放在本地硬盘上。盘古把一个APPPART打标签。再讲一下盘古的冗余恢复过程,当一个服务器上硬盘毁损的时候,我们必须找到另外一个空余的硬盘,把备份上的数据拷到新选取的硬盘。这是从一个硬盘拷到另外一个硬盘,可能要花十个小时才能同步完成。在盘古里面,它的数据是分片式的,就是说如果当一个硬盘挂掉的时候,我们是可以通过分布式的方法来进行冗余恢复。我们做过实验,在50个节点集群上面,同样的情况只需20分钟就可以恢复完成。

    这个事情听上去比较简单,其实后面的机制是非常复杂的。我们在进行实时冗余的时候,确保不会影响前台应用。我们希望把整个冗余恢复时间降到最短。再讲一下我们资源管理,在飞天里面,我们的资源管理模块叫做伏羲,在中国神话里面,伏羲是负责占卜的神。我们资源管理本质问题是什么?假设我们这么一个黑盒子,它的左边是他们的资源请求,我用不同的颜色和大小表示资源请求,跑在我们平台上面的应用是多时多样的。在我们右边是很多资源的容器,简单讲就是每台服务器就是一个资源容器。就是把资源请求分配到资源容器里面,大家想下,我们有5000个资源容器,每秒钟有可能有1%的进程完成了,每秒钟有1千个资源可用的变化,资源调度就要做一个决策,就是我是不是可以放一下新的任务放在空余出来的资源容器里面?待调度的进程数有可能有40万,就是我们每秒钟要从40万里面找一个。每次调度我们还要考虑很多因素,比如说我们在调度的时候考虑多维度资源,刚才的立方体也是代表一个多维度的资源。而且我们是因为是一个多租户的环境,要确保每个用户有不同资源的额度。然后跟服务一样,在我们调度的时候,要考虑本地化。一个任务跑在机器A和机器B上,它花的代价不一样。最后要考虑优先级,抢占之类的事情,每次要考虑非常多的因素。

    我们怎么解决?我抽象讲一下,我们第一个想法是我们想要用批发加零售的方法,我们整个集群的资源调度有一个Master只做批发的事情。它会把资源成批分配给应用的Master,应用Master把下面的每个进程分配给他们,这解决单点问题。另外是计划经济加上市场经济,这个我们要解决的问题就是说每次决策要考虑这么多因素是复杂的,如果我们完全用一个最优的方法来做的话,可能每次决策要花上百毫秒。什么叫计划经济?我们根据已经有的这些40万的进程,然后有5000个容器,先排队,大概预估一下把这个请求分配到另外一个服务器上,这有可能是比较优化的。真正到这个服务器有资源空出来,我们就把已经分配好的那边进行一个市场经济。我们要做的资源重用。当一个服务器资源富余出来的时候,有可能下面要做的事情是同样的应用,把下面可以调度的资源放上去。就是资源可以重复利用。通过使用这些策略,我们大概可以支持到5千台,相应的调度需求。

    回顾一下整个飞天开发历程。整个飞天团队是在20081024日组建,到现在大概有4年多开发时间,今天我们有3个研发中心分布在杭州、北京和硅谷,飞天开放平台的底层开发有250名研发人员,代码大概有200万行。我们整个飞天系统是从零开始自主研发,回过头来想我们走过的路,其实我们选择的是一条比较艰苦的路,要通过一个大的系统支持尽量多的大的离线在线的服务,在市场上是没有办法买到的。在国际上领先的亚马逊、谷歌、微软,他们也是自主研发完成的。这说明我们绕不过自主引发这条路。其实云计算是一个生态,今天在座各位有很多创业者和开发上,我们是觉得我们开发商同志们也是整个生态里面非常重要的部分,我们希望通过这四年努力,和将来更长时间的努力,能够让飞天开放平台,让大家在上面做创业,做开也好,能够走的更快,更顺利,谢谢大家。






您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP