这是一个美好的时代,这也是一个糟糕的时代。信息技术领域正在发生翻天覆地的变革,这种技术变革大约每十年会发生这么一次。这种变革不仅仅会影响到商业模式,而且也会改变我们在开发、部署、使用应用软件时所依赖的底层基础架构。之所以会产生这种变革,跟云计算、公用计算等新兴思想的兴起是不无关系的。值得注意的是,很多人似乎把这两个本来不同的概念混为了一谈。
什么是公用计算?
虽然公用计算往往也需要某种类似“云”那样的基础架构,但它的重点却是在商业模式本身,这种模式是提供计算服务的基础。简单来讲,一项公用计算服务是指客户从一个服务供应商(可能是硬件服务或软件服务)那里获得计算资源,然后按实际使用的资源量来付费,就象我们在家里用水电气一样。
Amazon的WEB服务(AWS,Amazon Web Services)尽管是新推出的东西,但它实际上也是一种公用计算服务模式,比如EC2 (Elastic Compute Cloud,弹性计算云)允许客户根据使用计算资源的时间来付费, S3 (Simple Storage Service,简单存储服务)则是允许客户根据使用的存储容量来付费。还有其他一些这类的公用服务,包括Sun的Network.com、EMC新推出的storage cloud service(存储云服务)以及一些初创企业提供的Joyent和Mosso等软件。
公用计算最主要的好处在于成本低廉。我们知道,企业数据中心往往资源利用率很低,象服务器这种资源通常有85%的时间都是空闲的。这是因为很多企业的业务周期是有波动性的,比如证券交易所在平常的交易日和周末时间所需要的IT计算能力是明显不一样的,为了保证满足峰值期的需求,企业往往在前期采购阶段就有意地多买了许多硬件,以备不时之需。而公用计算允许企业仅仅只是为他们真正需要时所使用的计算资源支付费用。
什么是云计算?
和公用计算相比,云计算的概念更宽泛,它指的是上层服务所依赖的底层的基础架构。就象George Gilder在他的《信息工厂》里谈到的,云计算可以用于公用服务,也可以用于企业内部数据中心里。其实,多年来,华尔街的许多金融服务公司一直在使用这种“内部云”(internal clouds)。他们把它称作“网格计算”,但概念是一样的。
虽然现在我们还难以拿出一个精确、全面的云计算的定义,但其核心思想是:应用软件运行在“云”(不管是在一个企业内部网还是公网)的某一个地方——我们不知道具体是在什么地方,而且我们也不需要关心这一点。这对于最终用户来说,其实是没什么影响的:因为多年来,我们在使用WEB应用的时候,也一直就不关心应用软件到底是跑在哪个系统上面。
但是受较大影响的是应用软件开发商和IT管理人员。在理想的状态下,云计算可以让他们在开发、部署和运行应用软件时,可以容易地实现扩容(可扩展性),工作效率更高(性能),还有从不——至少是很少宕机(可靠性),而且,在这些过程中,他们不需要关心下层基础架构是怎样的,在什么地方。
云计算的七个特点
为了达到这个目的,那么云计算的基础架构,还有他们的中间件和应用开发平台就应该具备以下这些特点:
自我愈合功能(Self-healing):在出现故障的时候,应该有一个应用实例的热备份来接替原来的应用,而不会出现中断或宕机。这也意味着,当我定好了一个策略,比如说所有的应用都有一个备份,当出错的时候,备份就代替原来的应用,然后系统会启动一个新的备份,从而维持我的整个可靠性策略。
确保服务水平(SLA-driven):系统要由服务水平协议(service-level agreements,SLA)来实现动态管理,这个协议定义了这样一些策略,比如多长时间内要对需求进行响应。如果系统正处于峰值负载阶段,就需要在更多的服务器上创建额外的应用实例,以保证事实定好的服务水准,即使是对低优先级的应用也是如此。
为多用户提供安全服务(Multi-tenancy):系统应该允许多个用户共享基础架构,而且对用户来说是透明的,并且不能威胁到每一个用户的数据隐私和安全性。
服务导向(Service-oriented):系统允许把多个离散的服务地组合在一起,但服务之间是保持独立的。某一个服务的改变或出错不会影响到其他的服务。这也意味着我可以不断重新使用这些服务。
虚拟化(Virtualized):应用和底层的硬件是相互隔离的。多个应用可以跑在一台计算机上面(比如通过VMWare进行的虚拟化),或者是多个计算机可以用来跑一个应用(如网络计算)。
可以线性扩展(Linearly Scalable):这可能是最大的挑战。在应用扩展、增加的时候,系统应该可以实现可预测,并且保证效率。打个比方说,如果一台服务器每秒能够处理1000次交易,那么两台服务器每秒就应该可以处理2000次交易,以此类推。
数据是核心(Data, Data, Data):数据管理是上述这几个方面的基础和关键,包括数据的分发、划分、安全和同步。一些新的技术如Amazon的SimpleDB能够解决一部分问题,但对于大型关系型数据库来说还做不到。注意别让SimpleDB的字面意思(简单的数据库)把你迷惑了,我的同事Nati Shalom也曾说过,SimpleDB不是真正意义上的数据库。还有一种新的方法是内存数据网格(in-memory data grid)。
小结:新一代应用平台厂商的机会
有一点是确定的:业界构建软件应用的传统方式不适合云计算。这也是为什么Google、Amazon 和eBay要开发他们自己的基础架构软件,而不是从Oracle和BEA这些大型中间件厂商那里去购买,因为从根本上来说,后者在设计这些软件时所采用的方法就是不同的。
基于这个原因,我们看到了新一台应用平台厂商的兴起。这些厂商,包括我所在的GigaSpaces公司,都在从根本上来为云计算构建软件平台——如果你愿意的话,可以把这些平台称为“云件”(cloudware)。
总而言之,虽然公用计算和云计算经常被混在一起来谈,但其实上他们之间的区别是至为紧要的。公用计算指的是一种商业模式,这种模式决定应用基础架构的软硬件资源是如何分配的;而云计算指的是我们设计、构建、部署和运行应用的方式,这些应用在一个虚拟化的环境中执行,共享资源,可以动态地收缩,可以实现自我愈合。
阅读(513) | 评论(0) | 转发(0) |