云计算 频道

云计算七问七答

  EC2到底是不是云?

  这要看你怎么定义云这个字,以我而言,我倾向认为MapReduce与分布式文件系统是云计算的主要特色,因此在这个定义之上,EC2并不符合首要条件。

  但如果我们把问题转成:EC2可以成为云吗?

  那答案就是肯定的,从上面NYT的例子可以看出,EC2提供100个Instance只是基础架构,之后再上面跑Hadoop才是真正发功之所在。 由此我们也可以得到另一个结论:硬件本身有无虚拟化并不重要(你可以买100台真的电脑连起来,也可以用EC2开100个Instance),重要的是在 其上协同运算的方式(MapReduce是这里的关键)。

  更简单的二分法则是这样:

  Amazon只是把硬件虚拟化,然后卖入门级计算能力。

  GAE/Hadoop则是提供分布式协同运算,打包的计算方案。

  因此,或许我们可以把EC2视为云的前奏曲,拥有它之后,要不要做成云(例如装上Hadoop)则是个人选择。

  何时选择使用EC2或云呢?

  这是更重要也更实际的问题,而答案也很单纯,主要就是考虑下列因素:

  1、你要解决的问题是否能符合MapReduce的矩阵分割方式?

  或是更白话一点的讲,你要做的事能不能被切割成小小的一块块来各个击破?例如日志文件的分析就很适合,但Friend of Friend数据库就不见得适合。如果你的问题可切割成许多小块,那就可以考虑下一点。

  2、Vendor Lock-in是否是个问题?

  这个主要是针对GAE而来的,现在如果用了GAE,基本上它的Lock-in(Vendor Lock-in意思是你采用了一个技术,即将自己锁定在这家提供商身上,不能轻易转换提供商)特质非常强烈,例如一定要用Python与 Bigtable,整个资料库栏位的规划方式跟传统RDB完全不同,操作语法也不一样,将来几乎无法迅速移转到其它主机服务(虽然有人写了GAE to EC2 转换指南,但有没有胆量用是另外一回事)。喔,更别提市场上Python的人才有多贫乏这件事,会RoR的人搞不好还多一点。

  当然这里可能的另一个选择就是效法NYT,用EC2+Hadoop搞定制化分布式运算,而且用的是Java,人才四处可得,相对门槛就低一点(但搞不定最后会死在MapReduce搞不定上:))

  SaaS是云吗?

  这也是个好问题。

  现在很多Software as a Service的服务商,例如Salesforce也都宣称自已提供了云计算服务,这又是怎么回事?我认为比较合理的看法是将云分成三个层次来看:

  第一层是硬件层(100台真的电脑,或100个EC2 Instance)

  第二层是框架(Hadoop、GAE或者微软的AZure等)

  第三层才是服务(记账、PDF生成等)

  在这样的架构下,SaaS是属于第三层服务这个范畴。

  也就是服务商先搞定第一、二层后,在其上建构自已的专业服务,例如Salesforce的主力服务是CRM,因此它通过云提供一系列的CRM API给开发者使用。举个夸张的例子(注意,这例子是假想的),搞不好Salesforce也是租EC2然后搞了个Hadoop,接着在上面用Java写 了一堆API给人调用。这时它就是三层皆备,可称云而无愧了。

  另外类似的例子则是像Gmail、Google Reader等,这些都是基于GAE的软件服务(先搞定一、二层,然后建构第三层的专业服务)。

  附录

  原本我曾认为EC2的虚拟化可以做到将许多台实体电脑虚拟化成一台大的服务器,这样工程师就只需要针对一台“超级电脑”来写程式即可,如果是这样,那EC2其实也符合分布式运算的标准,但我查来查去只不断看到类似下面的解释:

  EC2是为可以跨多台主机进行扩展的应用而设计的,而不是那些需要大量资源的更大的应用。(EC2 is more designed for applications that scale well across many hosts, rather than larger applications that require huge resources. ) 可扩展性:Amazon能让你方便地增加或者减少服务器,而不是为一台现有的服务器(Instance)增加更多的电力/内存/硬盘等。这在你的应用设计 时就考虑可以跨多台服务器进行扩展,以支持增加的负载的时候效果优秀。(Scalability: Amazon supports easily adding or removing servers, not adding more power/memory/disk to an existing server (instance). This works well when your application is architected to scale across multiple servers to support increased load.)

  因此目前先初步认定EC2并没有提供这方面的能力,当然如果有错,欢迎指正。

  后记

  在研究期间叨扰了无数前辈,感谢他们牺牲周未时间情义相挺回答各种无趣的问题,在此致上最高谢意。?

  另外关于EC2 vs. Slicehost的成本或用哪家比较划算这档事,我也小小想了一下,从实际数据看来,如果只是小型的网站或是创业公司,从省钱的角度来看,应该要选 Slicehost,因为它的初始成本最低,例如花个$20美元就可以有颇大的空间与流量可上线运行了。

  但EC2/S3的好处则是安全性、稳定性与扩充性,而它最大的缺点则是成本相对较高,一个Instance开着不用一个月就要$72美元,如果生意好流量大那要交的费用就更多。

  目前台湾地区用EC2的网站似乎并不多(Pixnet把资料存在 s3的站就多一点),可能主要是连线反应时间不够快所以接受度不高吧,但我们服务的客户本来就多在北美,所以没差。

0
相关文章