演讲:阿里云飞天负责人、资深总监唐洪
整理:夏宏
10月16-17日,2014年阿里云开发者大会(AWDC2014)在杭州云栖小镇开幕,吸引了海内外7000余名开发者、创业者参与。作为中国云计算领域最具影响力的盛会之一,大会议题涉及智慧城市、移动应用开发、物联网等多个热门领域,会上展示的基于云计算的人脸识别、大数据分析和多款智能硬件引起行业关注。
在连续举办三届之后,阿里云开发者大会目前已在全球范围内具备了较大影响力,“云”日益联结着世界。参加此次会议的有施耐德、飞利浦这样的跨国公司,也有开发出疯狂的小鸟的Rovio这样的海外明星企业。
阿里云开发者大会虽多有巨头出没,但真正唱主角的依旧是开发者与中小创业公司。阿里巴巴集团CTO王坚说,云计算让每一个开发者都能与大公司站在同一起跑线上。
16日下午阿里云飞天负责人、资深总监在会场作了主题发言。他称,阿里云的飞天平台从第一行代码开始,到支持超过百万云上客户的业务,发展到今天,我们仍然面临很多挑战,而这些挑战也是我们正在努力去解决的:第一小概率故障成为常态;第二个挑战就是怎么样能够降低人在服务链条里面的负作用。第三个是解决多租户下性能影响的问题。
以下为其演讲实录:
我在阿里云负责“飞天”的分布式计算平台的研发工作,在我的演讲之前,我想分享一段刚才菲青在一开始的时候讲到的校园招聘的故事,顺着他的故事讲一点背后的花絮。
第一次校招是在2008年11月份开始的,而阿里云第一个员工是08年10月份进来的,也就是说,在阿里云还没有几杆枪的时候我们就开始做校招工作了,那时候公司具体将要做什么也没有特别清楚,也没有一行代码,更不要说有什么客户和产品。当时第一批校招的员工今天很多都成为了飞天团队核心的骨干力量,如果他们回想那次参加校招宣讲的时候,我相信他们很多人都记得当时王坚博士给他们讲述的阿里的技术梦想。
我有幸做了一些考古工作,把当时博士的PPT找了出来。
第一页PPT是预测未来是很困难的,IBM创始人曾说过世界上只有五台计算机就可以了。当时开启了以计算中心为计算的大型机时代,也就是说,计算会是在一个叫做计算中心的地方发生的。
第二个是比尔盖茨开创的PC时代,每个人桌上都有一台电脑。
第三个是云计算时代,也就是回归五台计算机,当然不只是五台。王坚博士给大家描绘的技术梦想,他觉得阿里巴巴也将是他们其中的一家,并且是可以做到最大的一家,所以他把阿里巴巴放到最前面。我相信当时第一次参加校招的员工都记住这个故事,这是我们共同的技术梦想。
我不想把今天的分享变成一个分布式计算的教科书,所以我只能从我自己的经验感受出发,来讲今天面对我们客户最关键的一些技术挑战:
第一小概率故障成为了常态,这个很容易理解,分布式计算集群里面有成千上万台,几十万台甚至上百万台服务器,每个服务器都有那么多组件,所以任何小概率事件都会被放大。
第二个挑战,机器比人可靠,但是在我们服务链条里面有很多很多人的因素,所以第二个挑战就是怎么样能够降低人在服务链条里面的负作用。
第三个是多租户,带来的负效果就是如果不能做到用户之间的隔离,一个用户的应用可能会影响另外一个用户,这也是我们面临最大的挑战。
结合这三个挑战,我讲一下我们具体在做的是什么,遇到的问题是什么。
第一个是小概率常态,可能一块磁盘每年故障率是3%,当有5千台机器的时候每天可能就有4台出现故障,当你有10万台的时候每小时就会坏一台,这是非常常见的事情。大家可能认为网络设备比较可靠,但我们还是会发生一些丢包或者连接时断时续的现象等等。飞天平台是通过数据去掉单点的方法来降低这些小概率带来的影响,但我们发现客户受到困扰的并不是一个简单的可用率,我们今天的可用率也可以达到99.9%以上,但你深入挖过去,当你聊到每个具体客户的时候,会发现他们的痛点不能只用一个概率来概括。
其实大家也知道,作为云计算来说性能就是它的一个很重要的功能点。所以当我们性能不达标的时候也是一种故障,所以我的标题叫做慢也是一种故障。
这里我举一个客户案例,就是B公司,这家公司通过家庭式摄像头提供视频查看等服务,安装之后可以把家里情况汇报给家里的主人。在IO大于3秒的时候就会导致数据的丢失,所以对他们来说一个慢IO就会导致数据丢失。要解决慢IO有非常大的挑战,因为有很多的原因,举个例子来说硬件的老化,光纤会老化,磁盘也会老化,另外操作系统也都会有Bug。最后跟分布式计算本质是相通的,就是在这么庞大集群里面没有办法精准控制全局的状态,也就是偶尔会发生有瞬时的热点。
我们做了很多工作来降低慢性能对用户的应用导致的影响。在B公司案例里面我们用的方法叫做Backup Buchet,最后也做了6天的考核,无一例慢IO。
(图示)大家都知道OSS的写的时候,如果马上返回就完成了。但也有可能经过一段时间那个响应没有反馈出来,就会再发生一个新的请求。运气比较好的情况下,只要有一个不是在慢IO的情况下就可以很快反馈回来,这样就可以得到比较灵敏的响应。背后因为需要状态的同步,所以就是在背后做的,在读的时候稍微有一些挑战,就是需要向组合发生一些请求,并且通过一些应用层的判断来决定到底是用主还是用从上的数据。
关于小概率故障第三件事情,目前我们在研发名为“华佗“的系统模块,从系统层面上根本解决尽快发现底层的故障。华佗通过综合了各种类型的系统信息,例如系统的日志、SMART磁盘的指标或者命令反馈的信息,并且可以综合应用的反馈,比如说访问我们某个云服务的时候超时了或者断联了,就把这个反馈给华佗,这个形式比较简单,比如通过经验规则,或者可以通过学习的方法建立一个故障模型,甚至在这个硬件发生故障之前就可以判断它即将发生故障,然后通知运维赶紧把这个硬件下掉,也可以通知应用绕开这个节点。
目前华佗在ODPS上线,并且能够发现磁盘的故障,而且根据我们的观察,基本上能够做到百分之百的覆盖,也就是磁盘有故障就可以发现,误报率在10%左右,我们即将推广一些在线的集群。
下面我讲一下人是最薄弱的环节这个话题。这其实也不是第一次听到的话题,有很多的研究,说明了人是很多故障的来源。举个例子,比如说配置的错误,因为配置项很多,让人来配置的话很容易配错,或者我们代码修改之后,我们的操作其实是一个文档,但没有做相应的修改,我们用老的操作流程的时候就会出现问题,它另外去执行的时候也会发生问题。还有一些操作,虽然我们有文档,但从来没有操练过,因为很难在一个实验的环境去复现这个情况,其实是没有验证过的,真正上到战场上发现这个流程是错的。最后发现流程是对的,但是人在疲劳或者压力的情况下会出现错误,所以很多情况下是人的失误所导致的故障。
这里我想讲两方面的工作,第一是热升级的工作,我们在升级过程中要求不能够让用户感知到,就好象你开着飞机,在飞的途中去换一个引擎,这是非常有挑战的事情。大家也知道,我们在开始上线的时候慢慢扩张起来,也可能各个生长环境不一样,有的机房老一点,有的机房新一点,部署的版本也不一样,有的时候会安装新的软件、脚本,所以配置不一样。所以第二个挑战,就是在这个生产环境里面配置千奇百怪,所以很难用一个固定化的流程把这些问题全部剔除掉。所以我们升级过程中有很多人操作,也就是每一步都会去看看有没有成功,如果中间没有成功就会进行下一步,所以每个流程非常长。
另外一个是阿里云部署升级非常快,我们部署升级的频率不但跟业务相关,也跟迭代速度有关,13年底的时候,我们发现目前的方式没有办法跟上业务和产品的规划节奏,所以我们启动了御风项目,当时目标是希望把单个集群从原来一个礼拜缩短为六小时,并且希望把整个升级过程中的自动化和可控性能够上升到一定水平,能够把升级效率提高10倍以上。
此外还有一个跟人相关的问题,就是很多运维工具变更流程发布之后,其实很难进行测试。我举一个例子,RDS曾经发生的一个故障,有些受到影响的用户可能还记得,当时RDS发布了一个新的前端,但是访问后端的时候要返回过去一个字符串,这个字符串出现了一点错误,MySQL大小写错误导致了用户无法购买MySQL。为了这个问题,我们做了一个麻雀的产品,在有麻雀之前,我们上线流程是这样的,就是研发同学研发测试完了之后,会进行单个产品集成测试,然后到生产环境部署或者是变更,但有了麻雀之后就会发现我刚才所说的这些问题。
最后一个挑战,后台负载干扰在线服务,就是多种环境下性能隔离的问题。这里我举一个案例,也是困扰很多用户的案例。当用户投诉我们说ECS和IO比较慢的时候, 我们经常会告知用户把快照关闭。从系统层面根本解决这个问题是很复杂的事情。一方面我们需要在全局进行控制,也就是到底多少路IO在进行中等等,第二方面是网路的流控,最后要确保单机的流控。
此外我们还发现了一个问题,比如当我们打快照的时候启动一个后台进程叫P,把原来虚拟磁盘数据搬到快照静像上。当有写请求进来的时候,需要首先把写之前的磁盘读出来,第二步把读取这个数据写到相应的快照位置上去,第三步才会把这个数据写进去,也就是在打快照期间,写操作的IO路径中间有一个读操作。我们怎么解决这个问题呢?我们打算解决的方法,是用一个影子拷贝,也就是当我写的时候,我先写到这个影子拷贝里面去,这样我的后台打快照不受影响,前台写也不受影响,但直到快照打完之后,会把影子里面所有的数据合并到数据磁盘里面去,所以这也是我们在做的,我们相信做完之后,会对打快照IO影响降到很低很低。
最后我想用四个字总结我的分享,“困知,勉行”这四个字是从《礼记》中庸里面讲到的,这四个字概括了我们是怎么理解客户的痛点,怎么理解云计算技术,怎么样去做好云计算技术。其实做云计算到今天,其实云计算是课本上学不到的,就靠分析一个个工单,看到每一个蓝屏和闪断等等问题之后,才会明白云计算的挑战在哪里。我们团队里面没有什么天才,大家都是平凡人,唯一能做的就是努力,努力做好云计算,我们用200%的努力来实践,才能完成这件事情。
上篇:
经纬创投合伙人张颖:市场来到了恐惧时刻
下篇:
在台北创业意味着什么
1 学习阿里战略,打赢线下渠道“反击战” 2 陈勇:六个方法将推广页转化率提升30倍 3 连咖啡是如何靠微信裂变实现用户疯狂增长? 4 如何起一个好标题?好标题必备这9大要素! 5 新媒体人如何利用“金字塔原理”写出好文案? 6 新人必看:8个运营微信公众号常见的陷阱! 7 实操复盘:一份实用的汽车用品类社群营销方案 8 类类有话说:关于活动运营一定要遵循的10条铁律! 9 总结了100个10W+的标题,发现SCB的标题创作思路! 10 互联网社群商业模式 = IP+社群组织+用户场景+分享经济 11 陈勇:营销6要素是如何一步步“套路”消费者下单的? 12 如何提高微信公众号文章的打开率和分享率?