订阅云计算RSS CSDN首页> 云计算

百度云首席架构师林仕鼎:数据中心计算、互联网与云

发表于2012-05-25 11:45| 次阅读| 来源CSDN| 0 条评论| 作者杨爽

摘要:百度云首席架构师林仕鼎带来了《数据中心计算、互联网与云》主题演讲,他首先分析了三者演进过程,帮助我们找出了其中的规律,同时也对云这种新形态带来的设计原则的变革进行深入分析。他指出用公共存储打通互联网服务,将搜索引擎升级为Structured Web和事件引擎,提供个性化智能服务,未来云必...

【CSDN现场报道】第四届中国云计算大会于2012年5月23-25日在北京国家会议中心隆重举行。本次大会由中国电子学会主办,北京市经济和信息化委员会协办,中国云计算技术与产业联盟、中国电子学会云计算专家委员会承办,CSDN与《程序员》杂志协办。在2012国内公共云全面开花、云计算实践元年之际,本次大会云集云计算核心专家,就国内外云计算核心技术以及行业应用创新实践进行了深入探讨。

百度云首席架构师

百度云首席架构师带来了《数据中心计算、互联网与云》主题演讲,他首先分析了三者演进过程,帮助我们找出了其中的规律,同时也对云这种新形态带来的设计原则的变革进行深入分析。他指出用公共存储打通互联网服务,将搜索引擎升级为Structured Web和事件引擎,提供个性化智能服务,未来云必将引发互联网的变革。 

文字实录如下:

我现在是在百度的移动云这个项目负责云计算的战略规划还有架构设计。今天这个议题目是讲讲我从百度做云计算开始这两年时间内,对云和产业的思考以及想法,都是个人的想法,今天想跟大家分享一下。

云计算的起源

这个题目 叫《数据中心计算 、互联网与云》,云计算起源于两个大的数据中心,就是Google和Amazon,Google是一个搜索引擎的公司,搜索引擎最关键的一点是它的数据是海量的,这个网页的量级基本是千亿到万亿的级别,而搜索引擎很多时候是需要每天把这些网页都处理一遍,之所以要每天处理一遍是由搜索引擎本身的特点决定的,因为用户需求和网页内容要发生很大的变化。这时候就遇到一个问题,这么大的网页要每天处理一遍,存储和上面的处理是一个很大的开销 。这时候不可能说每个人都做这个事情,所以Google想了一个办法,就是它发明了一个模型,相当于给每个人提供Cluster,这个Cluster可大可小。

Amazon是电子商务公司,圣诞节前后那段时间的销量可能占到全年销量的50%左右。平常时候有大量的机器闲着用不起来,那么就想办法把它用起来,所以它们用了这个虚拟机。而且用这些资源的公司有大有小,所以它需要做一些弹性的处理,就是可以分配多的资源,也可以分配少的资源。

我总结了一下什么叫云计算,我觉得符合这些特征的技术才是真正的云计算:第一个,超大规模,如果一个很小的应用通常传统的技术就可以做起来。第二个是资源整合,就是有能力把这些资源全都整合起来做一件事情,这一件事情可以用来存储某一些数据,或者做一个服务。然后整合资源要灵活,可大可小,可以用它做一件事,也可以用它做很多事情。而且用户请求这些资源你要做到快速的交互,包括你在软硬件架构上做调整的时候可以很快完成。比如我现在需要的应用是超过现在的软硬件支撑能力,加入机器之后可以很快把这些完成。只有满足这些特点的技术才能真正叫云计算技术。

云计算的技术层次

从技术层次分为三个层面:大家听多的是硬件的基础架构层面,然后上层的是软件架构。但是现在很多地方都在讲云,它有了一些其他的意义,所以如果说我们更精确的定义的话,把它叫做数据中心计算会好一些。然后这些技术通常用来做数据的处理、数据挖掘等等。大家看到现在有新技术提出,其实就是我们去看软件的基础架构加上很多数据的处理,所以我们把技术层次分解完之后知道这里面有哪些内容。

这是一些背景的介绍,接下来我会谈一谈云计算和互联网的关系,然后简单讨论数据中心计算带来的不同,最后再跟大家探讨一下,云后续会怎样发展,它怎样从后续的技术层面改变这个产业。

刚才好多朋友也在演讲的时候说互联网业务的一些特点。其实互联网从第一天诞生开始就有的两个最大特点是:它永远是爆炸性增长的,用户会不断增长;它的业务是不断发生变化的。这种情况下,很多时候我们希望你的公司由你的业务驱动发展,就是你要做什么事可以很快,不会因为系统问题无法支撑这些业务。但是事实中不是这样的,大多数公司是Pain-driven,要在痛苦中不断地改。可能是今天某一个服务有问题,要改它,明天运维遇到问题,要改它,不断在痛苦驱动过程中成长 。而在这种情况下怎么办?有这种技术帮助你。就是我们通过大规模系统架构,可以很有效地帮助你做业务拓展。

这个业务拓展中通常是用什么办法?这个总结起来就是快速迭代的过程。比如一些快速消费品的行业选择用街头问卷问消费者有什么问题,但是这种方式的改进速度是非常非常慢的,而对互联网是不一样,因为互联网从第一天开始就直接接触用户,而且是大量的用户,所以我们可以进行在线的反馈或者高速迭代。让用户帮你做选择,因为用户量足够大,通过用户的选择,你就能知道哪种做法更好,留下好的,去掉不好的。而这个反馈需要做大量的离线分析。很多时候离线的分析不够,因为离线分析处理大量的数据,它可能做得比较慢,它需要跟在线的反馈结合起来,把离线处理跟线上服务的算法相结合或者调整,这就是互联网开发重要的创新手段。我们看到,哪一家公司做的速迭快,它的创新就快、发展就好。

搜索引擎的迭代

下面我说一下这个速迭是什么样的过程,比如说搜索引擎,大家知道搜索引擎是从网页变成Data Mining,然后有倒排表。搜索引擎在做的绝大多数改进都在调整这些策略,这些策略该怎么做?有些时候是你可以事先知道的,你不知道的东西怎么办?我们只能做实验,而做实验就有一个问题了。也就是说你要做这种实验很多时候是全量的数据,数据加起来跟网页数据差不多,就是你不可能为每一个策略都提供全量的数据,这时候你需要做很多架构上设设计。但对这些调研策略来说,它访问你数据的接口应该是一样的。然后你怎么去判断哪个策略是好还是不好?这时候有a/b测试的策略,同样,以前做网页挖掘的时候也需要用这个机器学习平台。也就是说我们做更好更快搜索引擎的创新,它需要在架构上做很多事情。一个是足够大的网页库和平台,能够帮你处理这些网页。然后你的索引系统能够很灵活存放下倒排表,而且支持倒排表调研属性 。然后对于策略来说,你的系统要支持很多版本同样的策略在运行。然后在调整的时候可以很快由下面的机器学习平台帮你选择哪个需要调整。而以前在没有这种架构支持的时候,你只能是通过手工来做。

另一个跟搜索引擎不一样的产品,对这一类产品它有一个特点,它用户的需求会不断地发生变化,很多时候你甚至不知道用户想要什么,你可以有这个数据分析帮你验证这个想法,然后你有了想法之后希望可以验证这个想法,要有快速的开发框架开始,最后是部署完成为产品。大多数产品做完之后,它怎样指导产品进一步发展呢?会缺乏一个反馈的过程,有了这个数据的分析和A/b测试方法我们可以知道原因。

总结一下,我们看到这个互联网很不一样,它究竟跟传统的软件企业有什么不同?从最开始的主机,然后到PC,到Internet,到Cloud,这里面有一个问题就是真正的系统和核心在什么地方。以前是硬件,然后20世纪80年代PC发展起来后是软件,但是我们发现到Internet之后就不一样了,对Internet来说,最重要的是用户和数据,这是因为互联网公司设的软件不断发生变化,它其实是人成为这个系统中的一部分,很多工程师一起改这个软件来服务用户,所以它不断调整这些。然后有了Cloud之后,我们发现这个时候数据开始起作用,因为有了数据之后它可以帮你找到规律,去验证很多的假设,而且去预测将来的发展。总结起来,我们说互联网公司在迭代,迭代的本质是让人参与系统的优化中,但是这个迭代不一定变好,要指导这个迭代往好的方面去做。怎样能使这个做得更快?其实就是Infrastructure。

数据中心计算

接下来我们简单谈一下数据中心计算的问题,在我看来就有这几个部分。

第一是存储,一个是计算 ,一个是操作规模系统,还有一些是体系结构、虚拟化、数据中心等技术。每一个技术有一些关键点,对于存储系统来说有两件事情是最需要做的,一个是究竟做什么样的结构,结构会在很大程度影响设计。然后在结构之外要关注访问模式,比如是只读不写的,还是多读少写的,有很多不同的访问模式会极大影响设计,我们考虑存储这个核心的问题要从这个方面去分析。

第二是计算类型很多。数据密集计算是它的IO和CPU比较均衡,这时候我们应该把计算放在数据中。这可能对于搜索引擎公司、处理处理公司用得比较多,但是很多时候需要其他的帮助,比如所谓计算密集型,就是你可能很小的数据让你算很长时间,而且通常情况下这些计算任务可以独立开,每个小计算之间不需要很频繁的交换数据,在需要频繁交换数据的时候就变成通信密集型的计算 。我们通常是做海量数据分析,但是近几年我们发现后来这种通信密集型的计算会越来越重要,我们也做了很多工作。在这种情况下,很多时候需要同时考虑计算和存储,我们做了很多事情去定义存储和计算应该是怎样的。

第三,超大规模系统本身就是要解决两个问题,一个是扩容,一个冗错。这里面重要关注的是怎么做设计和开发,因为系统是解决运维问题的,但是系统本身的运维怎么做,怎么做大规模分布式系统的设计、开发和调试这些问题。

第四,体系结构、虚拟化。这个说了很多,我不再解释。

我做了一个对比示意图,单机运算的时候在数据中心完全发生了变化,这个应用环境和需求的变化导致了整个系统的理念发生了变化,我总结了大概三点:

第一点,在数据中心最大的不同是它是单任务、多用户的环境。就是我们以前看PC的时候它只有一个用户,就是我们的使用者,但它要支持很多的用户。但在数据中心不一样,很多情况下只有一个应用,但是这个应用要支持很多用户,每个用户其实并不需要那么快,只要这个快速是他可以感觉的范围之内就行了。更重要的是支持吞吐很高,因为吞吐不够高的话成本就会很大,成本就转不起来。

第二点,以前做单机的时候,你的策略是要公平的,比如说你在听歌的时候人家在编辑文档,这时候你哪边都要顾得上,哪边调度出现问题都很难受。但是数据中心更关注的是效率而不是公平,很多请求可以给它重新调序,很多功能可以按大小组合一下。

第三点,因为这个数据只支持一个超大规模的应用,它也带来了另一个特点,就是很大程度上我们是由需求驱动做这个系统的定制。以前我们做系统设计都是分层结构,下层对上层透明,只要符合接口就行了。而且下层倾向于隐藏更多细节,而在数据中心是希望下层暴露更多细节给上层使用,下上层更简单。这时候我们更要考虑的是怎么把成本做低,效率变更高,变得更有扩展性。

比如我们之前设计了一款SD的产品,以前的SD是给桌面操作系统用的,一台机器一块卡、一块盘,你再怎么做它的性能是有限的,它的可靠性肯定不是百分之百的。我们希望上层整体系统提供用户最终想要的确东西,这时候我们的要求反而变成希望做得更简单。如果你有了错误,你不是去处理这些错误,而是要更快的把这些错误暴露出来让上层知道,让上层来处理。也导致整个系统架构发生变化,以前是层次论性的,现在是竖井式的,从上到下,从硬件,到软件,到设计,到数据中心,从最终应用需求驱动做整体的定制。

还有一个重要的不同,就是在这样的环境中确定的系统变成了不确定的系统。 以前出现故障出现的问题是截止掉,不需要做任何的处理,但是在数据中心需要你容忍故障,然后你发现软件错误也是可以容忍。比如说有很多系统后来开始做很多部件,有些部件可能用了几天之后它会出现问题,但是用了几天过程中是没有问题的,这时候你定期重启就可以了。然后因为这个系统很大程度上是做数据处理,它的特点是指标通常不会做到百分之百准确,它有一个精确度的问题,那就看你对这个精确度可以牺牲到什么程度。如果你通过规模可以补上算法的提升,你可以做的是一个不太正确的系统,只要它在概率上符合最终要求就行了。

云:从计算到服务

最后我想说一下这个云后面怎么发展,现在我们看到的云,以前的Service 是给人用的,它的界面是UI,我们现在的Service可以给程序用,也就是说我们把它的接口 从UI变成API,它不仅仅是人来用,而是更多的程序和这些服务自己可以使用。从这点来看的话,云计算技术帮互联网做以前不能做的事情现在做得更好,最终这两个应该会结合起来,把这些变得更加普适化,最后成为云。

也就是说我们看到人现在很多时候是随着移动终端的发展,手上有各种各样的App,这个App会成为cloud,会支持这些应用。为什么?因为App要使用的东西在Web上,但是以前Web是给人用的,现在Web也要变成Service。有了这些Service以后我们可以更好地让这些App对Service进行加工,对Web进行编程。同时,Web发生很多事件,以前是靠人做处理的,现在可以靠App做加工处理。另外一点,现在很难做到有一个完整的UGC,也就是说每一个用户在使用这些互联网产品的时候都是割裂的。在这种情况下,有些事情只能通过人来做加工处理,你必须把这个数据从这搬到那。这种情况下很难为用户做定制化处理,但是有了云以后一切会变得不一样。总结起来,我们可以从用户的使用中找到更有个性的内容。现在App能做的事情是已经预定好的东西,就是开发者自己去下面的API抽取,然后写在逻辑程序,但这只能满足部分要求,更多的要求希望通用的,也就是说云应该处理可编程的问题,把Web真正可以编程了。

总结起来,云的价值是能使App更方便编程、更智能地服务于用户。在这种情况下,使互联网发生的变革有两个方面:第一个,有可能用公共存储服务打通互联网服务,在这种公共存储上所有的数据都是打通的,可以更好地构造应用;第二个,搜索引擎会升级为Structured Web和事件引擎,把事件也变成App可处理的。这种情况下我们就有可能真正把用户所有的使用结合上面的API提供真正个性化的智能的服务。

更多精彩内容,请关注CSDN云计算频道微博第四届中国云计算大会专题报道

欢迎投稿:“第四届中国云计算大会”之我见——征稿启事

本文为CSDN原创,未经允许不得转载。如需转载请联系market@csdn.net

0
0
百度云首席架构师林仕鼎:数据中心计算、互联网与云