云计算的发展

已完成

让我们看一下云计算的发展过程。

事件和创新

云计算概念最先出现在二十世纪五十年代初,当时,很多学者(包括 Herb Grosch、John McCarthy 和 Douglas Parkhill)将计算设想为与电力公共设施类似。12在接下来的几十年中,很多新兴技术为云计算奠定了基础。 最近,随着万维网的快速增长和大型互联网巨头(如 Google 和 Amazon)的出现,最终促成了使云计算模型得以繁茂的经济和企业环境的建立。

Evolution of cloud computing.

图 5:云计算的发展

云计算的发展

自二十世纪六十年代以来,组织使用过的最初形态的计算机中的一些是大型机。 当时,多名用户可使用终端通过基本串行连接来共享和连接到大型机。 大型机负责数据的所有逻辑、存储和处理,而与之连接的终端计算能力有限(如果有的话)。 这些系统的广泛使用延续了 30 多年,在某种程度上还延续到了今天。

随着个人计算的出现,更便宜、更小、功能更强大的处理器和内存促使发展掉头转向,用户改为运行自己的软件并在本地存储数据。 这种情况又转而导致出现数据共享低效的问题,还需要在组织的 IT 环境中设定维持秩序的规则。

逐渐地,随着高速网络技术的发展,局域网 (LAN) 诞生了,它让计算机能够相互连接和通信。 因此,供应商设计出兼备个人计算机和大型机双重优势的系统,这带来了客户端-服务器应用程序,它们通过 LAN 流行起来。 客户端通常会运行客户端软件(并处理一些数据),或者运行连接到服务器的终端(适用于旧应用程序)。 而客户端-服务器模型中的服务器会处理应用程序、存储和数据逻辑。

最终,在二十世纪九十年代,随着 Internet 的快速采用,全球信息化时代应运而生。 网络带宽提高了很多个量级,从普通的拨号访问提升到如今的专用光纤连接。 此外,还出现了更便宜且功能更强大的硬件。 而且,万维网和动态网站的发展使得多层体系结构成为必需。

多层体系结构通过将应用程序表示、应用程序逻辑和存储分隔为单个实体来实现软件的模块化。 通过这种模块化和分离,这些单个软件实体很快就能在不同的物理服务器上运行(通常是由于硬件和软件要求不同)。 这导致了组织中的单个服务器的增长;但是,这也导致了服务器硬件的平均利用率不佳。 在 2009 年,国际数据公司 (IDC) 估计 x86 服务器的平均利用率约为 5 到 10%。3

虚拟机技术在二十一世纪已经足够成熟,可以作为商业软件提供。 虚拟化使整个服务器都能够封装为映像,该映像可以在硬件上无缝运行,同时使多个虚拟服务器能同时运行并共享硬件资源。 这样,虚拟化就实现了服务器的合并,从而提高系统利用率。

同时,网格计算在科学界受到重视,致力于以分布式方式解决大规模问题。 借助网格计算,多个管理域中的计算机资源为实现共同目标协同工作。 网格计算提供了多个资源管理工具(例如,计划程序和负载均衡器)来管理大规模计算资源。

随着各种计算技术的发展,计算的经济效益也随之发展。 即使是在基于大型机的计算的早期阶段,IBM 等公司也致力于为各种组织(例如银行和航空公司)托管和运行计算机和软件。 在互联网时代,第三方 Web 托管也受到了欢迎。 而借助虚拟化,提供商在单个服务器上容纳多个客户端,在它们之间共享硬件和资源时具有无与伦比的灵活性。

这些技术的开发与效用计算的经济模型结合,最终发展为云计算。

使能技术

云计算具有各种使能技术,其中包括网络、虚拟化和资源管理、效用计算、编程模型、并行和分布式计算以及存储技术。

Enabling technologies in cloud computing.

图 6:云计算中的使能技术

高速和泛在网络技术的出现大大促使了云计算成为可行范例。 借助现代网络,计算机能够以快速可靠的方式进行通信,这在我们要使用云提供商提供的服务时非常重要。 这使得软件在远程数据中心运行时与在个人计算机上运行时的用户体验不相上下。 一个常见的例子是 Web 邮件,它是一款能提高办公效率的软件。 此外,虚拟化是实现云计算的关键。 如上所述,借助虚拟化,可以通过抽象化来管理云的复杂性并通过多个虚拟机在不同用户之间共享资源。 每个虚拟机都可以执行自己的操作系统和关联的应用程序。 云计算虚拟化会在后面的模块中介绍。

大型存储系统、分布式文件系统和新颖的数据库体系结构等技术对于在云中管理和存储数据至关重要。 云存储技术会在后面的模块中介绍。

效用计算为计算资源租赁提供多种收费结构。 例如按资源用时付费、按保证的吞吐量付费和按每月存储的数据付费。

借助并行计算和分布式计算,位于联网计算机上的分布式实体可以进行通信并协调其操作,以便解决用并行程序表示的特定问题。 为分布式群集编写并行程序本身就很难。 若要在云中实现高编程效率和灵活性,需要编程模型。

云的编程模型使用户能够灵活地将并行程序表示为顺序计算单元(例如 MapReduce 中的函数,以及 GraphLab 中的顶点)。 这类编程模型的运行时系统通常会并行化、分发和计划计算单元,管理单元间通信并容忍失败。 云编程模型会在后面的模块中介绍。


参考资料

  1. Simson L. Garfinkel (1999)。 Architects of the Information Society: Thirty-Five Years of the Laboratory for Computer Science at MIT Press
  2. Douglas J. Parkhill (1966). The Challenge of the Computer Utility Addison-Wesley Publishing Company, Reading, MA
  3. Michelle Bailey (2009)。 The Economics of Virtualization: Moving Toward an Application-Based Cost Model VMware Sponsored IDC Whitepaper

知识检查

1.

有关云计算和效用计算的一般想法是何时出现的?

2.

哪种技术可以将多个服务器合并到同一个物理服务器中?

3.

云计算的三种使能技术是什么?

4.

哪一个领域的进步加快了通信速度,从而使云计算模型能够通过 Internet 从远程数据中心租赁计算资源?