云计算的架构 – 从技术角度剖析云计算

本文原载于InfoQ中文站,版权全部,原文为从技术角度剖析云计算的架构,如需转载,请务必附带本声明,谢谢。 在这里也要稍微谢谢InfoQ霍主编,若是不是他的坚持,这篇文章也不会像如今这样成熟,还有,InfoQ自己也是一个比较高端的技术网站,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等,你们若是没去过的话,请点击
 
在写 《剖析云计算》(编者注:InfoQ中文站随后推出该Minibook)一书的时候,我发现虽然云计算自己有三层之分,也就是SaaS,PaaS和IaaS,但这种分层自己主要是从用户体验的角度来而言,好比,SaaS主要将应用做为服务提供给客户,IaaS是主要是将虚拟机等资源做为服务提供给用户。而本文将从技术角度来分析和总结云计算的架构。
 

综述

基于对现有的一些云计算产品的分析和我我的的一些经验,总结出一套云计算的架构,具体请看下图:
Cloud
图1. 云计算的架构
这套架构主要可分为四层,其中有三层是横向的,分别是显示层、中间件层和基础设施层,经过这三层技术可以提供很是丰富的云计算能力和友好的用户界面,还有一层是纵向的,称为管理层,是为了更好地管理和维护横向的三层而存在的。接下来将一个个地给你们介绍每一个层次的做用和属于这个层次的主要技术。
 

显示层

这层主要是用于以友好的方式展示用户所需的内容,并会利用到下面中间件层提供的多种服务,主要有五种技术:
  1. HTML:标准的Web页面技术,如今主要以HTML4为主,可是将要推出的HTML5会在不少方面推进Web页面的发展,好比视频和本地存储等方面。
  2. JavaScript:一种用于Web页面的动态语言,经过JavaScript,可以极大地丰富Web页面的功能,最流行的JS框架有jQuery和Prototype。
  3. CSS:主要用于控制Web页面的外观,并且能使页面的内容与其表现形式之间进行优雅地分离。
  4. Flash:业界最经常使用的RIA(Rich Internet Applications)技术,可以在现阶段提供HTML等技术所没法提供的基于Web的富应用,并且在用户体验方面,很是不错。
  5. Silverlight:来自业界巨擎微软的RIA技术,虽然其如今市场占有率稍逊于Flash,但因为其可使用C#来进行编程,因此对开发者很是友好。
在显示层,大多数云计算产品都比较倾向HTML,、JavaScript和CSS这对黄金组合,可是Flash和Silverlight等RIA技术也有必定的用武之地,好比VMware vCloud就采用了基于Flash的Flex技术,而微软的云计算产品确定会在从此使用到Silverlight。
 

中间件层

这层是承上启下的,它在下面的基础设施层所提供资源的基础上提供了多种服务,好比缓存服务和REST服务等,并且这些服务便可用于支撑显示层,也能够直接让用户调用,并主要有五种技术:
  1. REST:经过REST技术,可以很是方便和优雅地将中间件层所支撑的部分服务提供给调用者。
  2. 多租户:就是能让一个单独的应用实例能够为多个组织服务,并且保持良好的隔离性和安全性,而且经过这种技术,能有效地下降应用的购置和维护成本。
  3. 并行处理:为了处理海量的数据,须要利用庞大的X86集群进行规模巨大的并行处理,Google的MapReduce是这方面的表明之做。
  4. 应用服务器:在原有的应用服务器的基础上为云计算作了必定程度的优化,好比用于Google App Engine的Jetty应用服务器。
  5. 分布式缓存:经过分布式缓存技术,不只能有效地下降对后台服务器的压力,并且还能加快相应的反应速度,最著名的分布式缓存例子莫过于Memcached。
对于不少PaaS平台,好比用于部署Ruby应用的Heroku云平台,应用服务器和分布式缓存都是必备的,同时REST技术也经常使用于对外的接口,多租户技术则主要用于SaaS应用的后台,好比用于支撑Salesforce的Sales Cloud等应用的Force.com多租户内核,而并行处理技术常被做为单独的服务推出,好比Amazon的Elastic MapReduce。
 

基础设施层

这层做用是为给上面的中间件层或者用户准备其所需的计算和存储等资源,主要有四种技术:
  1. 虚拟化:也能够理解它为基础设施层的“多租户”,由于经过虚拟化技术,可以在一个物理服务器上生成多个虚拟机,而且能在这些虚拟机之间能实现全面的隔离,这样不只能减低服务器的购置成本,并且还能同时下降服务器的运维成本,成熟的X86虚拟化技术有VMware的ESX和开源的Xen。
  2. 分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,因此须要一整套分布式的存储系统,在这方面,Google的GFS是典范之做。
  3. 关系型数据库:基本是在原有的关系型数据库的基础上作了扩展和管理等方面的优化,使其在云中更适应。
  4. NoSQL:为了知足一些关系数据库所没法知足的目标,好比支撑海量的数据等,一些公司特意设计一批不是基于关系模型的数据库,好比Google的BigTable和Facebook的Cassandra等。
如今大多数的IaaS服务都是基于Xen的,好比Amazon的EC2等,但VMware也推出了基于ESX技术的vCloud,同时业界也有几个基于关系型数据库的云服务,好比Amazon的RDS(Relational Database Service)和Windows Azure SDS(SQL Data Services)等。关于分布式存储和NoSQL,它们已经被普遍用于云平台的后端,好比Google App Engine的Datastore就是基于BigTable和GFS这两个技术之上的,而Amazon则推出基于NoSQL技术的Simple DB。
 

管理层

这层是为横向的三层服务的,并给这三层提供多种管理和维护等方面的技术,主要有下面这六个方面:
  1. 账号管理:经过良好的账号管理技术,可以在安全的条件下方便用户地登陆,并方便管理员对账号的管理。
  2. SLA监控:对各个层次运行的虚拟机,服务和应用等进行性能方面的监控,以使它们都能在知足预先设定的SLA(Service Level Agreement)的状况下运行。
  3. 计费管理:也就是对每一个用户所消耗的资源等进行统计,来准确地向用户索取费用。
  4. 安全管理:对数据,应用和账号等IT资源采起全面地保护,使其免受犯罪分子和恶意程序的侵害。
  5. 负载均衡:经过将流量分发给一个应用或者服务的多个实例来应对突发状况。
  6. 运维管理:主要是使运维操做尽量地专业和自动化,从而下降云计算中心的运维成本。
如今的云计算产品在账号管理,计费管理和负载均衡这三个方面大都表现地不错,在这方面最突出的例子就是Amazon 的EC2,但惋惜的是,大多数产品在SLA监控,安全管理和运维管理等方面还有所欠缺。
 

举例

接下来,将以Salesforce的Sales Cloud和Google的App Engine这两个著名的云计算产品为例,来帮助你们理解本文所提到的云计算架构:
Salesforce Sales Cloud
也就是以前的Salesforce CRM(客户关系管理),属于云计算中的SaaS层,主要是经过在云中部署可定制化的CRM应用,来让企业用户在很低初始投入的状况下使用上CRM,而且可根据自身的流程来进行灵活地定制,并且只需接入网络就能使用。下图为其在技术层面上大体的架构:
salesforce
图2.  Salesforce Sales Cloud
采用的主要技术:
  1. 显示层:基于HTML、JavaScript和CSS这对黄金组合。
  2. 中间件层:在此层,Salesforce引入了多租户内核和为支撑此内核运行而通过定制的应用服务器。
  3. 基础设施层:虽然在后端仍是使用在企业环境中很常见的Oracle数据库,可是其为了支撑上层的多租户内核作了不少的优化。
  4. 管理层:在安全管理方面,Salesforce提供了多层保护,并支持SSL加密等技术,除此以外,其还在账号管理、计费管理和负载均衡这三方面有不错地支持。
Google App Engine
App Engine属于云计算中的PaaS层,其主要提供一个平台,来让用户在Google强大的基础设施上部署和运行应用程序,同时App Engine会根据应用所承受的负载来对应用所需的资源进行调整,并免去用户对应用和服务器等的维护工做,并且支持Java和Python这两种语言。因为App Engine属于PaaS平台,因此关于显示层的技术选择由应用的自身须要而定,与App Engine无关,关于App Engine在技术层面上大体的架构,具体请看下图:
google
图3. Google App Engine
采用的主要技术:
  1. 中间件层:既有通过定制化的应用服务器,好比上面已经提到过的Jetty,也提供基于Memcached的分布式缓存服务。
  2. 基础设施层: 在分布式存储GFS的基础上提供了NoSQL数据库BigTable来对应用的数据进行持久化。
  3. 管理层:因为App Engine是基于Google强大的分布式基础设施,使其在运维管理技术方面很是出色,同时其计费管理能作到很是细粒度的API级计费,并且App Engine在账号管理和负载均衡这两方面都有很是好地支持。
 
虽然用一张这样简单的图和两个简短的例子来描述庞大的云计算总体架构的确是略显寒酸,可是应该能让你们从技术角度对云计算的架构有一个大体的了解。
相关文章
相关标签/搜索