现在的位置: 首页 > 综合 > 正文

云计算的架构

2013年12月03日 ⁄ 综合 ⁄ 共 8989字 ⁄ 字号 评论关闭

IT,身为一个新兴行业,在其发展历程中向其他行业借鉴了一些先进的思想和理念,比如除了前面提到的从电力行业借鉴了公用事业这种商业模式和从丰田汽车流水线生产中总结出精益这套编程模式之外,还在软件设计方面引入了架构这个在建筑行业非常核心的概念。

 

架构,对软件系统而言是极为重要的。因为它不仅定义了系统内部各个模块之间是如何整合和协调的,同时也对其整体表现起着非常关键的作用。而云,作为一个非常复杂的大型软件系统,其中包含着许许多多的模块和组件,所以如果能够理出其架构的话,将会非常有益。

 

为了让大家对云计算有更深入的理解,本章将会对云的架构进行深入剖析。除了云的架构之外,本章还将会对云计算最主要和最常见的4种模式进行深入介绍。

 云的架构

在对云计算进行了三年多的研究之后,我觉得云计算虽然涉及了很多产品与技术,表面上看起来的确有点纷繁复杂,但是云计算本身还是有迹可循和有理可依的,所以在个人理解的基础上,我总结出了一套云计算的架构,具体请看图2-1。

这个云架构共分为服务和管理两大部分。

在服务方面,主要以提供用户基于云的各种服务为主,共包含3个层次。其一是Software as a Service(软件即服务),简称SaaS,这层的作用是将应用主要以基于Web的方式提供给客户;其二是Platform as a Service(平台即服务),简称PaaS,这层的作用是将一个应用的开发和部署平台作为服务提供给用户;其三是Infrastructure as a Service(基础设施即服务),简称IaaS,这层的作用是将各种底层的计算(比如虚拟机)和存储等资源作为服务提供给用户。从用户角度而言,这3层
服务是独立的,因为它们提供的服务是完全不同的,而且面向的用户也不尽相同。但从技术角度而言,云服务的这3层是有一定依赖关系的。比如,一个SaaS层 的产品和服务不仅需要用到SaaS层本身的技术,而且还依赖PaaS层所提供的开发和部署平台或者直接部署于IaaS层所提供的计算资源上,而PaaS层 的产品和服务也很有可能构建于IaaS层服务之上。

enter image description here

在管理方面,主要以云管理层为主,它的功能是确保整个云计算中心能够安全、稳定地运行,并且能够被有效管理。

接下来,将给大家详细介绍每个层次,其中不仅涉及它们的历史和相关产品,而且还会讨论它们的优势和采用的技术。

SaaS

SaaS 是最常见的,也是最先出现的云计算服务。通过SaaS这种模式,用户只要接上网络,通过浏览器就能直接使用在云上运行的应用。SaaS云供 应商负责维护和管理云中的软硬件设施,同时以免费或者按需使用的方式向用户收费,所以用户不需要顾虑类似安装、升级和防病毒等琐事,并且免去初期高昂的硬 件投入和软件许可证费用的支出。

1. 历史

SaaS的前身是 ASP(Application Service Provider),其概念和思想与ASP相差不大。最早的ASP厂商有Salesforce.com和Netsuite,其后还有一批企业跟随进来。这 些厂商在创业时都主要专注于在线CRM(客户关系管理)应用,但由于那时正值互联网泡沫破裂的时候,而且当时ASP本身的技术也并不成熟,而且还缺少定制 和集成等重要功能,再加上当时欠佳的网络环境,所以ASP没有受到市场的热烈欢迎,从而导致大批相关厂商破产。但在2003年后,在Salesforce
的带领下,残存的ASP企业喊出了SaaS这个口号,并随着技术和商业这两方面不断成熟,Salesforce、WebEx和Zoho等国外SaaS企业 得到了成功,而国内的企业(诸如用友、金算盘、金碟、阿里巴巴和八百客等)也加入到SaaS的浪潮中。

2. 相关产品

由于SaaS产品起步较早,而且开发成本低,所以在现在的市场上,SaaS产品不论是在数量还是在类别上都非常丰富。同时,也出现了多款经典产品, 其中最具代表性的莫过于Google Apps、Salesforce CRM、Office Web Apps 和Zoho。

  • Google Apps。中文名为“Google 企业应用套件”,它提供企业版Gmail、Google 日历、Google 文档和Google 协作平台等多个在线办公工具,而且价格低廉,使用方便,并且已经有超过两百万家企业购买了Google Apps服务。
  • Salesforce CRM。它是一款在线客户管理工具,并在销售、市场营销、服务和合作伙伴这4个商业领域上提供完善的IT支持,还提供强大的定制和扩展机制,来让用户的业务更好地运行在Salesforce平台上。这款产品常被业界视为SaaS产品的“开山之作”。
  • Office Web Apps。它是微软所开发的在线版Office,提供基于Office 2010技术的简易版Word、Excel、PowerPoint及OneNote等功能。它属于Windows Live的一部分,并与微软的SkyDrive云存储服务有深度的整合,而且兼容Firefox、Safari和Chrome等非IE系列浏览器。和其他 在线Office相比,它的最大优势是,由于其本身属于Office 2010的一部分,所以在与Office文档的兼容性方面远胜其他在线Office服务。
  • Zoho。Zoho是AdventNet公司开发的一款在线办公套件。在功能方面,它绝对是现在业界最全面的,有邮件、CRM、项目管理、 Wiki、在线会议、论坛和人力资源管理等几十个在线工具供用户选择。同时包括美国通用电气在内的多家大中型企业已经开始在其内部引入Zoho的在线服 务。Zoho在国内的代理商为百会。

3. 优势

虽然和传统桌面软件相比,现有的SaaS服务在功能方面还稍逊一筹,但是在其他方面还是具有一定的优势的,下面是其中的4个方面。

  • 使用简单。在任何时候或者任何地点,只要接上网络,用户就能访问这个SaaS服务,而且无需安装、升级和维护。
  • 支持公开协议。现有的SaaS服务在公开协议(比如HTML 4/HTML5)的支持方面都做得很好,用户只需一个浏览器就能使用和访问SaaS应用。这对用户而言非常方便。
  • 安全保障。SaaS供应商需要提供一定的安全机制,不仅要使存储在云端的用户数据处于绝对安全的境地,而且也要通过一定的安全机制(比如HTTPS等)来确保与用户之间通信的安全。
  • 初始成本低。使用SaaS服务时,不仅无需在使用前购买昂贵的许可证,而且几乎所有的SaaS供应商都允许免费试用。

4. 技术

由于SaaS层离普通用户非常近,所以大家对SaaS层用到的大多数技术都耳熟能详。下面列出了其中最主要的5种技术。

  • HTML。它是标准的Web页面技术,现在主要以HTML 4为主。但是即将推出的HTML5会在很多方面推动Web页面的发展,比如视频和本地存储等。
     JavaScript。一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能。最流行的JavaScript框架有jQuery和Prototype。
  • CSS。主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。
  • Flash。业界最常用的RIA(Rich Internet Applications,富因特网应用)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验方面也非常不错。
  • Silverlight。来自微软的RIA技术。虽然它现在的市场占有率稍逊于Flash,但由于它可以使用C#来进行编程,所以对开发者非常友好。

由于通用且学习成本较低,大多数云计算产品都会倾向于HTML、JavaScript和CSS这对黄金组合,但是在HTML5被大家广泛接受之 前,RIA技术在用户体验方面还是具有一定优势的,所以Flash和Silverlight也将会有一定的用武之地,比如VMware vCloud就采用了基于Flash的Flex技术,而微软的云计算产品肯定会在今后大量使用Silverlight技术。

 PaaS

通过PaaS这种模式,用户可以在一个提供SDK(Software Development Kit,软件开发工具包)、文档、测试环境和部署环境等在内的开发平台上非常方便地编写和部署应用,而且不论是在部署还是在运行的时候,用户都无需为服务 器、操作系统、网络和存储等资源的运维操心。 PaaS在整合率上非常惊人,比如一台运行Google App Engine的服务器能够支撑成千上万个应用,也就是说,PaaS是非常经济的。PaaS主要面对的用户是开发人员。

1. 历史

PaaS 是云服务这3层之中出现最晚的。业界第一个PaaS平台诞生在2007年,是Salesforce的Force.com,通过这个平台,不 仅能使用Salesforce提供的完善的开发工具和框架来轻松地开发应用,而且能把应用直接部署到Salesforce的基础设施上,从而能利用其强大 的多租户系统。接着,在2008年4月,Google推出了Google App Engine,从而将PaaS所支持的范围从在线商业应用扩展到普通的Web应用,也使得越来越多的人开始熟悉和使用功能强大的PaaS服务。

2. 相关产品

和SaaS产品百花齐放相比,PaaS产品主要以少而精为主,其中比较著名的产品有:Force.com、Google App Engine、Windows Azure Platform和Heroku。

  • Force.com。就像上面所说的那样,Force.com是业界第一个PaaS平台,它主要通过提供完善的开发环境和强健的基础设施等来帮助 企业和第三方供应商交付健壮的、可靠的和可伸缩的在线应用。还有,Force.com本身是基于Salesforce著名的多租户架构的。
  • Google App Engine。Google App Engine提供Google的基础设施来让大家部署应用,还提供一整套开发工具和SDK来加速应用的开发,并提供大量免费额度来节省用户的开支。
  • Windows Azure Platform。它是微软推出的PaaS产品,运行在微软数据中心的服务器和网络基础设施上,通过公共互联网来对外提供服务。它由具有高扩展性的云操作 系统、数据存储网络和相关服务组成,而且服务都是通过物理或虚拟的Windows Server 2008实例提供的。还有,它附带的Windows Azure SDK提供了一整套开发、部署和管理Windows Azure云服务所需要的工具和API。
  • Heroku。它是一个用于部署Ruby On Rails应用的PaaS平台,并且其底层基于Amazon EC2的IaaS服务,在Ruby程序员中有非常好的口碑。

3. 优势

和现有的基于本地的开发和部署环境相比,PaaS平台主要有下面这6方面的优势。

  • 开发环境友好。通过提供SDK和IDE(Integrated Development Environment,集成开发环境)等工具来让用户不仅能在本地方便地进行应用的开发和测试,而且能进行远程部署。
  • 服务丰富。PaaS平台会以API的形式将各种各样的服务提供给上层的应用。
  • 管理和监控精细。PaaS能够提供应用层的管理和监控,比如能够观察应用运行的情况和具体数值[比如吞吐量(Throughput)和响应时间(Response Time)等]来更好地衡量应用的运行状态,还能通过精确计量应用所消耗的资源来更好地计费。
  • 伸缩性强。PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。
  • 多住户(Multi-Tenant)机制。许多PaaS平台都自带多住户机制,不仅能更经济地支撑庞大的用户规模,而且能提供一定的可定制性以满足用户的特殊需求。
  • 整合率高。PaaS平台的整合率非常高,比如Google App Engine能在一台服务器上承载成千上万个应用。

4. 技术

与SaaS层所采用的技术不同的是,PaaS层的技术比较多样,下面是常见的5种。

  • REST。通过REST(Representational State Transfer,表述性状态转移)技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。
  • 多租户。它能让一个单独的应用实例可以为多个组织服务,而且能保持良好的隔离性和安全性。通过这种技术,能有效地降低应用的购置和维护成本。
  • 并行处理。为了处理海量数据,需要利用庞大的x86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。
  • 应用服务器。在原有应用服务器的基础上为云计算作了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。
  • 分布式缓存。通过这种技术,不仅能有效降低对后台服务器的压力,而且还能加快相应的反应速度。最著名的分布式缓存的例子莫过于Memcached。

对于很多PaaS平台,比如用于部署Ruby应用的Heroku云平台,应用服务器和分布式缓存都是必备的, REST技术常用于对外的接口,多租户技术则主要用于SaaS应用的后台(比如用于支撑Salesforce的CRM等应用的Force.com多租户内 核),而并行处理技术常被作为单独的服务推出(比如Amazon的Elastic MapReduce)。

 IaaS

通过IaaS这种模式,用户可以从供应商那里获得他所需要的计算或者存储等资源来装载相关应用,并只需为其所租用的那部分资源付费,而这些烦琐的管理工作则交给IaaS供应商来负责。

1. 历史
和SaaS一样,类似IaaS的想法其实已经出现很久了,比如过去的IDC(Internet Data Center,互联网数据中心)和VPS(Virtual Private Server,虚拟专用服务器)等,但由于技术、性能、价格和使用等方面的缺失,这些服务并没有被大中型企业广泛采用。但在2006年年底,Amazon 发布了EC2(Elastic Compute Cloud,灵活计算云)这个IaaS云服务。由于EC2在技术和性能等多方面的优势,这类技术终于被业界广泛认可和接受,其中就包括部分大型企业,比如 著名的纽约时报。

2. 相关产品
最具代表性的IaaS产品有:Amazon EC2、IBM Blue Cloud、Cisco UCS和Joyent。

  • Amazon EC2。EC2主要以提供不同规格的计算资源(也就是虚拟机)为主。它基于著名的开源虚拟化技术Xen。通过Amazon的各种优化和创新, EC2不论在性能上还是在稳定性上都已经满足企业级的需求。而且它还提供完善的API和Web管理界面来方便用户使用。
  • IBM Blue Cloud。“蓝云”解决方案是由IBM云计算中心开发的业界第一个,同时也是在技术上比较领先的企业级云计算解决方案。该解决方案可以对企业现有的基础 架构进行整合,通过虚拟化技术和自动化管理技术来构建企业自己的云计算中心,并实现对企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和 统一备份,也打破了应用对资源的独占,从而帮助企业能享受到云计算所带来的诸多优越性。
  • Cisco UCS。它是下一代数据中心平台,在一个紧密结合的系统中整合了计算、网络、存储与虚拟化功能。该系统包含一个低延时、无丢包和支持万兆以太网的统一网络 阵列以及多台企业级x86架构刀片服务器等设备,并在一个统一的管理域中管理所有资源。用户可以通过在UCS上安装VMWare vSphere来支撑多达几千台虚拟机的运行。通过Cisco UCS,能够让企业快速在本地数据中心搭建基于虚拟化技术的云环境。
  • Joyent。它提供基于Open Solaris技术的IaaS服务。其IaaS服务中最核心的是Joyent SmartMachine。与大多数的IaaS服务不同的是,它并不是将底层硬件按照预计的额度直接分配给虚拟机,而是维护了一个大的资源池,让虚拟机上 层的应用直接调用资源,并且这个资源池也有公平调度的功能,这样做的好处是优化资源的调配,并且易于应对流量突发情况,同时使用人员也无需过多关注操作系 统级管理和运维。

3. 优势

与传统的企业数据中心相比,IaaS服务在很多方面都存在一定的优势,下面是最明显的5个。
- 免维护。主要的维护工作都由IaaS云供应商负责,所以用户不必操心。
- 非常经济。首先免去了用户前期的硬件购置成本,而且由于IaaS云大都采用虚拟化技术,所以应用和服务器的整合率普遍在10(也就是一台服务器运行10个应用)以上,这样能有效降低使用成本。
- 开放标准。虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等应用发布协议的诞生,IaaS在跨平台方面稳步前进,这样应用能在多个IaaS云上灵活地迁移,而不会被固定在某个企业数据中心内。
- 支持的应用。因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以IaaS所支持应用的范围非常广泛。
- 伸缩性强。IaaS云只需几分钟就能给用户提供一个新的计算资源,而传统的企业数据中心则往往需要几周时间,并且计算资源可以根据用户需求来调整其资源的大小。

4. 技术

IaaS所采用的技术都是一些比较底层的,其中有4种技术是比较常用的。

  • 虚拟化。也可以将它理解为基础设施层的“多租户”。因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟机,并且能在这些虚拟机之间实现全面 的隔离,这样不仅能降低服务器的购置成本,而且还能降低服务器的运维成本。成熟的x86虚拟化技术有VMware的ESX和开源的Xen。
  • 分布式存储。为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式存储系统。在这方面,Google的GFS是典范之作。
  • 关系型数据库。基本上是在原有的关系型数据库的基础上作了扩展和管理等方面的优化,使其在云中更适应。
  • NoSQL。为了满足一些关系数据库所无法满足的目标,比如支撑海量数据等,一些公司特地设计一批不是基于关系模型的数据库,比如Google的BigTable和Facebook的Cassandra等。

现在大多数的IaaS服务都是基于Xen的,比如Amazon的EC2等,但VMware也推出了基于ESX技术的vCloud,同时业界也有几个 基于关系型数据库的云服务,比如Amazon的RDS(Relational Database Service,关系型数据库服务)和Windows Azure SDS(SQL Data Services,SQL数据服务)等。关于分布式存储和NoSQL,它们已经被广泛用于云平台的后端,比如Google App Engine的Datastore就是基于BigTable和GFS这两个技术,而Amazon推出的Simple
DB则基于NoSQL技术。

 云管理层

虽然和前面云服务的3层相比,熟悉云管理层的人非常少,但是它确实是云最核心的部分,就好像一个公司离不开其董事会的管理一样。与过去的数据中心相 比,云最大的优势在于云管理的优越性。云管理层也是前面3层云服务的基础,并为这3层提供多种管理和维护等方面的功能和技术。如图2-2所示,云管理层共 有9个模块,这9个模块可分为3层,它们分别是用户层、机制层和检测层。

enter image description here

1. 用户层

顾名思义,这层主要面向使用云的用户,并通过多种功能来更好地为用户服务,共包括4个模块:用户管理、客户支持、服务管理和计费管理。

  • 用户管理
    对于任何系统而言,对于用户的管理都是必需的,云也是如此。云方面的用户管理主要有3种功能。其一是账号管理,包括对用户身份及其访问权限进行有效地管 理,还包括对用户组的管理;其二是单点登录,英文为“Single Sign On”,其意义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,这个机制可以极大地方便用户在云服务之间进行切换;其三是配置 管理,对与用户相关的配置信息进行记录、管理和跟踪,配置信息包括虚拟机的部署、配置和应用的设置信息等。
  • 客户支持
    好的用户体验对于云而言也是非常关键的,所以帮助用户解决疑难问题的客户支持是必需的,并且需要建设一整套完善的客户支持系统,以确保问题能按照其严重程度或者优先级来依次进行解决,而不是一视同仁。这样,能提升客户支持的效率和效果。
  • 计费管理
    利用底层监控系统所采集的数据来对每个用户所使用的资源(比如所消耗CPU的时间和网络带宽等)和服务(比如调用某个付费API的次数)进行统计,来准确地向用户索取费用,并提供完善和详细的报表。
  • 服务管理
    大多数云都在一定程度上遵守SOA(Service-Oriented Architecture,面向服务的架构)的设计规范。SOA的意思是将应用不同的功能拆分为多个服务,并通过定义良好的接口和契约来将这些服务连接起 来,这样做的好处是能使整个系统松耦合,从而使整个系统能够通过不断演化来更好地为客户服务。而一个普通的云也同样由许许多多的服务组成,比如部署虚拟机 的服务、启动或者关闭虚拟机的服务等,而管理好这些服务对于云而言是非常关键的。服务管理主要有下面这5个功能。
  • 管理接口。提供完善的关于服务的Web管理界面和API接口。
  • 自定义服务。能让用户对服务进行自定义和扩展。
  • 服务调度。配备强健的机制来负责服务的调度,以使服务能在合理的时间内被系统调用和处理。
  • 监控服务。利用底层的监控系统来观测服务实际的运行情况。
  • 流程管理。提供一个工具来让用户将多个服务整合为一个流程,并对它进行管理以提升运行效率。

2. 机制层

这层主要提供各种用于管理云的机制。通过这些机制,能让云计算中心内部的管理更自动化、更安全和更环保。和用户层一样,该层也包括4个模块:运维管理、资源管理、安全管理和容灾支持。

  • 运维管理
    云的运行是否出色,往往取决于其运维系统的强健和自动化程度。而和运维管理相关的功能主要包括3个方面。首先是自动维护:运维操作应尽可能地专业和自动 化,从而降低云计算中心的运维成本。其次是能源管理:它包括自动关闭闲置的资源,根据负载来调节CPU的频率以降低功耗并提供关于数据中心整体功耗的统计 图与机房温度的分布图等来提升能源的管理,并相应地降低浪费。还有就是事件监控:它是通过对在数据中心发生的各项事件进行监控,以确保在云中发生的任何异 常事件都会被管理系统捕捉到。

全文链接:

 

 

抱歉!评论已关闭.