云计算核心技术剖析(二)

时间:2024-04-16 20:05:38

IT ,身为一个新兴行业,其在发展历程中向其他行业借鉴了一些先进的思想和理念,最明显的例子除了上面提到的从电力行业学习了公用事业这种商业模式和从丰田汽 车流水线生产中总结出精益这套编程模式之外,还有,就是在软件设计方面,引入了架构这个在建筑行业非常核心的概念。
  架构,对软件系统而言是极为重要的,因为它不仅定义了系统内部各个模块之间是如何整合和协调的,同时也对其整体表现起着非常关键的作用。而云,作为一 个非常复杂的大型软件系统,它内部包含着许许多多的模块和组件,所以如果能够理出其架构的话,将会非常有益处。
  为了让大家对云计算有更深入的理解,本章将会对云的架构进行深入地剖析。除了云的架构之外,本章还将会对云计算最主要和最常见的四种模式进行深入的介绍。

   2.1 云的架构

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



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

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

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

  2.2 SaaS

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

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

  2.2.2 相关产品

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

  (1) Google Apps :中文名为“ Google 企业应用套件”,提供包括企业版 Gmail 、 Google 日历、 Google 文档和 Google 协作平台等多个在线办公工具,而且价格低廉,使用方便,并且已经有超过两百万家企业购买了 Google Apps 服务。

  (2) Salesforce CRM :它是一款在线客户管理工具,并在销售、市场营销、服务和合作伙伴这四个商业领域上提供完善的 IT 支持,还提供强大的定制和扩展机制,来让用户的业务更好地运行在 Salesforce 的平台上。这款产品常被业界视为 SaaS 产品的“开山之作”。

  (3) Office Web Apps :它是微软所开发的在线版 Office ,提供基于 Office 2010 技术的简易版 Word 、 Excel 、 PowerPoint 及 OneNote 等功能,属于 Windows Live 的一部分,并与微软的 SkyDrive 云存储服务有深度地整合,而且兼容 Firefox 、 Safari 和 Chrome 等非 IE 系列浏览器。和其他在线 Office 相比,它的最大优势是,由于其本身属于 Office 2010 的一部分,所以在与 Office 文档的兼容性方面远胜其他在线 Office 服务。

  (4) Zoho : Zoho 是 AdventNet 公司开发的一款在线办公套件,在功能方面绝对是现在业界最全面的,它包括邮件、 CRM 、项目管理、 Wiki 、在线会议、论坛和人力资源管理等几十个在线工具供用户选择。同时包括美国通用电气在内的多家大中型企业已经开始在其内部引入 Zoho 的在线服务, Zoho 在国内的代理商为百会。

  2.2.3 优势

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

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

  2.2.4 技术

  由于 SaaS 层离普通用户非常接近,所以在 SaaS 层所使用到的技术,大多耳熟能详,下面是其中最主要的五种:

  (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# 来进行编程,所以对开发者非常友好。

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

  2.3 PaaS

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

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

  2.3.2 相关产品

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

  (1) Force.com :就像上面所说的 Force.com 是业界第一个 PaaS 平台,其主要通过提供完善的开发环境和强健的基础设施等来帮助企业和第三方供应商交付健壮的、可靠的和可伸缩的在线应用。还有, Force.com 本身是基于 Salesforce 著名的多租户的架构。

  (2) Google App Engine : Google App Engine 提供 Google 的基础设施来让大家部署应用,它还提供一整套开发工具和 SDK 来加速应用的开发,并提供大量的免费额度来节省用户的开支。

  (3) Windows Azure Platform :它是微软推出的 PaaS 产品,并运行在微软数据中心的服务器和网络基础设施上的,通过公共互联网来对外提供服务,它由具有高扩展性云操作系统、数据存储网络和相关服务组成,而且 服务都是通过物理或虚拟的 Windows Server 2008 实例提供。还有,其附带的 Windows Azure SDK (软件开发包)提供了一整套开发、部署和管理 Windows Azure 云服务所需要的工具和 API 。

  (4) Heroku :是一个用于部署 Ruby On Rails 应用的 PaaS 平台,并且其底层基于 Amazon EC2 的 IaaS 服务,而且在 Ruby 程序员中有非常好的口碑。

  2.3.3 优势

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

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

  2.3.4 技术

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

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

  2.4 IaaS

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

  2.4.1 历史

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

  2.4.2 相关产品

  最具代表性的 IaaS 产品和服务有: Amazon EC2 、 IBM Blue Cloud 、 Cisco UCS 和 Joyent 。

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

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

  2.4.4 技术

  在 IaaS 所采用的技术方面,都是一些比较底层的技术,其中有四种技术是比较常用的:
  (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 , SQL 数据库服务)等。关于分布式存储和 NoSQL ,它们已经被广泛用于云平台的后端,比如 Google App Engine 的 Datastore 就是基于 BigTable 和 GFS 这两个技术之上的,而 Amazon 则推出基于 NoSQL 技术的 Simple DB 。