前言

我们需要说明的第一句话是:这本书主要是写给“要动手”的人们的!

如何构建一个云计算系统,这是从事云计算相关工作的程序员和工程师最关心的问题之一。但是很遗憾的是,市面上的绝大多数书籍主要介绍的是云计算的模式、架构、应用、接口等,无法使读者站在一个云计算系统的内部,清楚地获知一个典型的云计算系统是如何构成,以及如何编码实现的。

本书以一个典型的开源基础设施云Eucalyptus为例,解构了一个典型的云计算系统的主要构成模块,并在源代码层面上详细讲解了如何构建一个典型的云计算系统。更进一步的,本书通过动手实验的方式,使读者能直观地掌握如何编译一个云系统,其代码结构是怎么样的;并通过写测试代码,使读者掌握如何去调用云系统的API,如何添加和定制化功能。

通过这本书,我们希望读者有以下的收获:

• 如何根据需求选择合适的云计算系统?随着云计算模式的逐渐普及和广泛使用,可以想象,越来越多的企业、机构和个人用户主要面临的问题不再是如何采购硬件、软件,再组织人或外包进行系统开发,然后进行系统部署和运维。他们经常要做的事情是根据应用的需求,选择合适的云计算系统来承载相应的应用或选择合适的云计算系统部署自己的私有云。本书在对工业界和学术界的主流云计算系统进行广泛调研的基础上,提出了典型的云集算系统体系结构,并以目前代表性的开源云系统为例,对主要子系统、关键功能和性能参数、核心技术等进行了系统的介绍和对比分析,从而为读者分析和判断市场上的云平台提供了系统的评价方法。更进一步的,本书在各子系统的相应章节,通过使用该子系统的接口 API,定量测试和评价云平台的各项指标,以及示例如何将云平台与用户的应用平台进行对接。

• 从源代码层面,一个典型的云计算系统是如何构建和实现的?我们可以发现一个普遍存在的事实:绝大多数的云计算系统,包括商业云平台,如Amazon、Microsoft Azure等,其物理服务器的主流配置是 Linux 或 UNIX 类操作系统。而我们知道,在这类操作系统中,有大量优秀的产品级开源系统或工具可供使用和集成,如何将这些开源系统和工具用于构建云平台?本书分别针对云计算系统的主要核心子系统,如虚拟机管理器、存储网络软件、模块互连框架等,详细介绍了如何使用这些工具,并在此基础上实现云计算系统的核心模块。

• 如何实现一个产品级的云计算系统?如何寻找典型的云计算系统中有价值的关键技术点?本书分析的不是玩具系统或原型系统,而是真实应用于工业生产的产品系统!本书选择的Eucalyptus私有云系统已经被世界500强中25%的企业所部署和使用。读者以此为基础,可以实现和构建具有商业意义和价值的关键技术与功能点。

最后,要特别感谢北京邮电大学可信分布式计算与服务教育部重点实验室 2009 级和2010 级的同学们,没有你们的辛苦工作和努力付出,这本书的出版将没有可能。在此请允许一一列举你们的名字:2009 级的宋小宝、李思扬、唐博、王珂、王彦丞、万磊、张路、陈晏民同学;2010 级的李春文、刘彬、刘潇健、王小亮、颉夏青同学。这本书是大家共同奋斗,并肩合作的见证!

著者

2012年9月于北京邮电大学