Sunday, October 23, 2011

云与云计算概念

云计算现在算是比较火的一个名词了。从最开始的怀疑,质疑,到普遍的应用,再到现
在各大软件公司都开发自己的云,云计算这个方向在企业应用里,就如同SOA一样,已
经开始飞入寻常百姓家了。
云计算其实乍听之下确实有点忽悠。主要还是因为现在还没有一个标准。但是云计算要
解决的核心问题就是资源。让应用可以按需获取资源,可以灵活的增加减少应用的资源
(Scale Up/Down),而不需要惊动应用本身;把应用放在一起,让资源得到更高的利
用。因为云计算服务提供商一般都有自己的数据中心,所以云计算的一个基础优势就是
可以享受云服务提供商打造的数据中心服务,比如,冗余设计,双线服务,专业高质量
的主机维护等等。以下说到的三种云模式,都有这种优势。
(PS:这里插一句,云计算主要还是为企业应用提供服务的,不是面向个人桌面应用的
,面对个人桌面应用的应该是虚拟桌面,这个已经是很成熟的系统了)
现在主流的云模式分为三种,SaaS既Software as a Service,这个其实是最忽悠的,
随便一个站点也可以号称自己是SaaS的,比如一个blog,为每个注册的用户提供服务(
Service),你可以多花钱,增加上传附件的空间,或者开通别的附加服务,比如视频
音频服务等等等等,这就勉强可以说是SaaS了。SaaS最出名的就是Saleforce。其实
Saleforce的SaaS确实算云,它提供可靠的,可伸缩的服务,有自己的基础设施,并不
是一个简单的web site。但是对于终端用户来看,SaaS跟一个普通的website没啥不一
样。所以很多厂家就开始跟风云概念,啥都是云。就好象纳米技术一样。SaaS是云概念
开始提出来的时候,普及的云的概念。以至于很多时候再提起云,给人的感觉就是在忽
悠。
SaaS模式下,依靠服务提供商的服务器集群,可以为用户提供可伸缩的资源。用户不用
维护服务器,不用操心数据库的备份,不用网络的状态,不用操心机房是不是停电了,
是不是漏水了,只需要花钱买服务就行了。但是限制也是非常明显的,用户只能使用服
务商提供的服务而已。比如saleforce的用户,也只能在saleforce的云上使用
saleforce的服务。
说道saas,企业应用系统大概分为,crm(customer rel. managment),
hr, erp,前两个云用的多,还不是简单web,都是appl. system with web interface
,对中小型客户的好处是很明显的,硬件不需要,连软件也不需要。
第二种是PaaS既Platform as a Service。比较著名的就是Google App Engine。它提供
一个平台,让用户可以把自己的应用部署到这个平台上。目前支持Python和Java。乍听
之下,好像跟一个应用服务器上部署多个应用似的。。。没错,初看起来就是这么回事
儿。。。但是GAE完全不是这么回事儿,它提供的其实是一个虚拟的,可伸缩的应用环
境。首先,GAE提供了自己的SDK,应用程序无法操作一些底层资源,比如文件(没错,
不能完全操作文件,因为在PaaS云中的应用没有文件的概念,很多时候就是一个只读的
包,比如Java应用可能就是一个war包)。通过这个SDK,用户可以创建自己的web程序
,也就是写jsp,servlet等等。同时,GAE还提供了NoSQL存储服务作为数据存储(不能
把数据存文件上,文件只能读不能写的)。除了这两大资源之外,GAE还提供了受限的
Socket支持,可以抓取URL内容,但是不能直接建立Socket连接。在这些GAE提供的资源
之上,用户可以开发部署自己的应用程序。
PaaS模式比SaaS提供的资源更底层,所以也灵活的多。用户可使用PaaS提供的应用服务
器、存储、网络等基础服务,开发自己的服务。PaaS随着发展也开始提供更丰富、更灵
活,等强大的服务,为上层的应用提供更多的支持。作为PaaS的用户,坏处当然是受到
一些限制,比如不能直接操控底层资源。但是好处是可以按照自己的需求购买需要的资
源,不需要花不必要的钱。而且在业务发展到需要更多资源的时候,可以花钱购买,而
应用本身不需要下线,用户自己也不需要维护。
第三种是IaaS既Infrastructure as a Service。比较著名的就是Amazon EC2。它提供
的是一个完整的虚拟机环境,CPU,内存,硬盘,网络等等都是虚拟的,可以动态伸缩
。用户可以在虚拟机中安装Linux或者Windows服务器,安装需要的软件,提供自己的应
用服务。相比PaaS,IaaS更为高级和底层,适应更高级的用户需求。一般来说,提供
IaaS的云服务提供商,也会相应的提供一些别的服务,比如数据库存储服务等。Amazon
提供了Amazon RSD (Amazon Relational Database Service)。
云计算的技术基础
走在前面的云服务提供商已经支撑了很多耳熟能详的应用了,比如dropbox就是使用的
Amazon EC2。虽然标准还不清晰,但是云计算已经是成熟可商用的技术,而不仅仅是一
个概念或者试验阶段的技术。云服务的基础设施是大型数据中心,在此基础之上,云的
基础是早已成熟的虚拟化技术,在虚拟化的基础上,提供一套操作,管理和监控的系统。
比如一个服务提供商有100台物理机器,100m上行带宽和100m下行带宽。如果租物理机
器出去,租给100个用户,每人1m上下行的带宽。这样的问题是资源无法得到充分合理
的利用。用户A可能在1点钟的时候CPU撑满,导致应用服务速度缓慢;而此时用户B可能
CPU根本就是闲置的。两点钟的时候AB两个用户情况可能正好反过来。如果A和B都购买
新的物理机来应对峰值情况,那么在非峰值的情况下,资源则极大的浪费了。很明显,
资源无法以物理机为单位进行合理的配置。
应用虚拟技术,可以在物理机和应用之间增加一层虚拟层。用户直接操作的资源都是虚
拟的。用户购买的资源也是虚拟的。再配合相应的管理层实现资源的查找、分配、管理
和监控,就可以算是个云了。
以上面的usecase 为例。用户A只需要购买足够的CPU时间,在1点钟峰值来的时候,云
会分配足够的CPU资源给A用户的应用。至于这些CPU物理上在哪个机器里,用户根本无
需操心。用户A只需要为自己的应用所使用的CPU时间(也可能是虚拟CPU个数)付钱就
可以了。这就做到了资源的合理分配,可以充分利用资源。
对于带宽则更明显,用户无需购买带宽,而只需要购买流量。云服务提供商会使用自己
已有的宽带来满足用户的需求。可能在某个时刻,用户享受的是50m的上下行速度,但
是付出的钱却只和流量相关。资源在云用户之间是共享的,按需分配的。而用户购买的
,也是虚拟的资源而非物理的资源。
依靠云技术,虽然还是100台机器,100m上下行带宽,但是可以服务的用户数有可能多
于100个,而且每个用户的需求都可以得到更好的满足。当然,如果用户继续增长,云
服务提供商可以购买更多的主机和更大的上下行带宽为用户服务。