云计算导致一切皆可服务,生成了无数的XaaS,几乎可以说EveryThing As A Service。那么到底哪些东西适合做成服务,却让人有些困惑。仔细考虑一下Amazon的服务设置,多问几个为什么,会发现有很多有趣的东西。
1、AWS提供对象存储S3,为什么不提供文件存储? 从传统应用开发看,文件系统几乎是必不可少的部分,比如应用启动需要配置文件、应用运行需要生成日志文件,应用需要访问图片文件等等。几乎所有的OS都支持POSIX文件系统接口,如此好用,且通用,那为啥AWS不提供呢?答案是文件系统在提供灵活性、通用性的同时,伸缩性却很差。文件系统需要额外的空间和结构来保存目录树,目录树难以分割;每个文件在目录中一般按照某种次序保存,一旦文件数很大,查找时间很长(现有有些文件系统已经支持Hash定位);文件系统的接口很多,参数繁复,实现开销大。而对象存储完全不同,Object Store非常扁平化,没有目录结构,非常利于让不同的服务器处理不同的对象,具备很好的扩展性。目前AWS S3存储超过了1000亿个对象(这是现有所有NAS都无法企及的),这些对象来自几十万个EC2不断运行而生成的。随着EC2规模的进一步扩大,S3的优势越发明显。
2、AWS提供键值对系统SimpleDB,为什么不提供集中化的SQL服务?(非RDS)类似文件系统,数据库是现代互联网应用、企业应用包括缺少的组件,SQL语言更是人人都会。Amazon不提供集中化SQL的原因是什么呢?除去互联网业务可以被NoSQL的功能涵盖之外,技术方面在于SQL过于灵活:每条语句执行时间是不可预测;同样的语句在不同的数据规模上返回时间不同;复杂的SQL语句执行时间长、占用资源多。因此当大量应用都访问SQL数据库时,数据库将难以为继。TPC-C目前排名第一的是Oracle Exadata(2011年),支持大约每秒50万交易处理(根据ZD的解释,实际上都是NewOrder事务),对于几十万EC2的虚拟机来说,每个虚拟机只能拥有每秒钟几个事务处理能力。另外一个技术问题是Join,分布式的Join在大数据量情况下,几乎没有好的解决方案。还有一个技术问题是测量,SQL无法按照调用次数计费,必须统计执行时间,这对于用户理解账单是个挑战。相反,NoSQL则简单地多,由于只提供简单接口,应用请求的执行时间完全可以预测;不提供Join,一切变得非常简单;计费也很容易。但是很多应用还是需要SQL,于是Amazon和Oracle合作,推出了基于MySQL和Oracle的服务,但这运行在用户自己申请的虚拟机上,性能和复杂性都由用户自己支付。
3、AWS为啥提供弹性块服务(EBS)?先简单普及一下,EBS提供的是块存储服务,用户可以申请1G~1T的Block,挂载到EC2实例,然后格式化。我们知道block设备是文件系统、SQL数据库的底层存储系统。简单考古一下,可以知道EBS是Amazon在提供了S3和SDB之后,大约2008年8月份推出的,这个时候EC2已经逐步被认可,用户希望尝试一下EBS,但是很多人会失望的,因为他们发现没有办法支持LAMP,主要是没有MySQL(虚拟机本地的存储时不可靠的)。这样传统的应用都要重写。AWS为了兼容传统应用,放出了EBS服务,这下子大家都Happy了。
4、有了EBS为啥还有推出RDS?这个Amazon的网站写的很清楚,自己分析吧:-) http://aws.amazon.com/rds/ 如果得出的结论是由于简化用户管理MySQL,则还需要多想想,呵呵。
想了这么些,可以得出些许结论,即哪些IT能力适合当做云计算服务,哪些技术架构适合支撑这些服务。
1、多用户共用资源,用户对资源占用无法分开、难以计量的能力不宜集中提供。比如在线分析系统,类似Teradata的那个敏捷分析云,当做私有云尚可,一旦集中公众服务,那是要瘫痪了。还有EMR。这类能力适合采用虚拟机方式提供。
2、接口复杂、通用性强的能力不宜集中提供服务。文件系统、关系数据库目前尚不宜提供服务。比如,GAE中的应用服务是存在风险的,用户写的代码会被Google检查,确保不包含死循环,但是这种不良/错误代码的模式会层出不穷,只好动态监测。
3、无法被成千上万个EC2并发使用、无法保存大量数据、不易扩容的能力不宜集中提供服务。这一点对底层技术架构也适用,即如果某种技术架构无法动态扩容,则不宜被当做云计算服务的支撑技术。典型场景即SAN和NAS,如果当做集中服务提供,会存在扩容的瓶颈.
4、资源消耗高的能力不宜集中提供服务。
对于不适合做集中运行的IT能力,最好的办法是和虚拟机结合,用捆绑资源申请、预先部署、整合管理的增值方式提供服务,这里面Amazon也给出了很多有益的案例:包括RDS、EMR、HPC、BeanTalk等。
还有哪些IT能力可能被当做集中的云计算服务提供?看上去已经不多了,缓存(如MemCache)可以算作一个。其他还有什么?
《XaaS的背后:哪些IT能力适合作为集中的云计算服务?》有1个想法