图书前言

前言

云计算是在网络通信高度发达后出现的新型计算模式,使得中小微企业构建和运维其业务信息系统的方式发生了根本性改变。企业不再考虑机房和网络建设,不用再购买服务器和支撑软件,不用再雇佣IT运维人员,也不用再考虑设备更替和升级。企业租用云服务商的计算资源和存储资源,将其业务信息系统迁移至云上运行,系统运维工作也外包给云服务商。这种模式使得企业搭建和运维其业务信息系统的成本大为降低,性价比大为提升。对于云服务商来说,能通过规模效应和集约效应,提升其资源利用率,把服务做到价廉物美。云计算能使服务商与其客户互利双赢。正因为如此,全社会都在拥抱云计算。

云计算作为热门技术,深受社会追捧。工业界在云平台建设和云开发支撑上不断推出产品和服务,学术界则不断通过论文贡献理论研究成果。有关云计算的图书也有很多。这些图书的一个共性特征是: 围绕产品或者系统,描述其构架、功能和使用方法,回避了技术来龙去脉和前因后果的揭示。对云计算的特征与特性的讲述显得有些武断和笼统,缺乏案例,不能以理服人。这种情形导致很多人对云计算的认知停留在知其然,而不知其所以然的状态。有人说它是一种全新的技术,也有人说它不过是原有技术的一种演进。

要成为创新型人才,只知道工具和产品的构成和使用方法显然远远不够,必须知道问题的由来,以及技术演进的特征与特性,知晓解决问题的策略和方法。本书的特色是: 从技术演进视角揭示云计算的本质,通过分析与论述,以理服人,以例服人。针对云计算涉及问题广,技术体系庞大,产品和工具众多这一情形,本书从中提炼出资源共享这一根本问题,围绕资源共享的不断深化,紧扣基本原理和基本准则,以通俗易懂的方式揭示云计算的真面目。

本书从资源共享这一根本问题,归纳了计算模式的两次演变: 从单机计算到集群计算,再从集群计算到云计算。基于这一主线,得出云计算要在集群计算的基础上进一步解决的两个关键问题: ①程序能在云上到处运行; ②运行在同一计算机上的程序彼此不相互干扰。本书的技术脉络简洁清晰,能使读者知晓技术演进的来龙去脉和前因后果,对云计算不仅知其然,而且还能知其所以然,具备信息系统规划和建设的驾驭能力。

本书是作者多年来在教学和科研实践中所思、所想、所悟成果的总结,力求将云计算和微服务知识以通俗易懂的方式,以简洁轻快的笔调,以全新的视角勾勒出来,降低学习这些知识的门槛,使任何对云计算知识感兴趣的读者,都能通过阅读本书抓住云计算和微服务的纲绳,对云计算和微服务中的基本问题、求解思路、体系结构、特征与特性、关键技术有一个清晰的感性认识,能综合运用云计算和微服务知识解决实际工程问题。

本书每章都包含问题由来、求解思路、求解方案、特性分析、问题思考和归纳总结六部分内容,将读者从接触知识提升到理解知识,从学习知识提升到应用知识。本书从工程问题入手,通过分析、推理、论证,强调解决方案的可行性和切实性,强调理论的通俗性,强调知识前后的关联性,力求使读者明白要学什么知识和这些知识有什么用,明白解决工程问题的基本思路、基本方法、关键环节,明白如何去超越别人和实现创新。

本书在讲解云计算知识方面既强调基础性,也特别注重前瞻性。本书共6章,重点针对资源共享问题展开分析和论述,揭示出资源共享的深化路线,展示求解方案的优美性和艺术性。本书也探索技术演进背后的动因,追踪业界最新技术及其发展趋势,帮助读者灵活应对IT技术发展与变迁所带来的挑战。

第1章为云计算与微服务绪论。资源共享是推动计算方式演进的原动力。计算方式经历了从单机计算演进到集群计算,以及从集群计算到云计算的演变过程。在单机计算中,共享是指多进程并发执行,它们共享同一台计算机上的资源。集群计算延伸了共享范围,实现了跨计算机边界的共享。云计算则是通过深化共享,利用规模效应和集约效应降低成本,实现物美价廉,互利双赢。在信息化大潮的席卷下,服务器面临数据量越来越大和客户请求量越来越多的双重压力。实现服务程序高效运行、弹性运行、安全运行、快速开发与快速改版升级,以及快速启动的策略和方法统称为微服务技术。

第2章讲解一台计算中资源共享的实现技术。资源共享的最基本形式是一台计算机上的资源被本机上运行的多个应用程序共享。其中的核心问题是多任务并发执行,以及随之而来的资源共享问题。为此将程序代码结构化成操作系统和应用程序两部分,其中操作系统扮演资源管理者角色,充当服务器,而应用程序充当客户角色。应用程序与操作系统之间的交互以函数调用方式实现。共享资源包括CPU、内存、网络等硬件资源,以及代码和数据文件等。操作系统对各种共享资源进行分门别类管理。本章讲解CPU、内存、网络、代码、数据文件这些资源的共享实现方案,重点探究代码共享中遇到的问题及其解决方法。

第3章讲解跨计算机边界的资源共享实现技术。跨计算机边界的资源共享也称为分布式计算。分布式计算由单机计算演进而来,把资源共享提升到新高度。在网络通信的支撑下,资源共享的边界概念已被打破,实现了无边界共享。无边界共享是传承与光大的辩证统一,也可说成变与不变的辩证统一。不变性表现在共享模式上,变化性表现在共享边界被扩展和延伸,以及服务质量的提高上。资源共享中,访问冲突问题始终是最根本的问题。另外,数据一致性问题在分布式计算中变得异常突出。本章重点讲解无边界共享的实现策略和方法。

第4章讲解去中心化计算。常见的服务系统为中心化系统。其特点是: 系统的数据正确性、服务公平性,以及服务可用性这些事情全由单个服务提供方掌控。去中心化计算试图改变这一局面。其想法是服务不再由单一的服务提供方提供,而是改由多个服务提供方共同提供。从系统构成看,系统不再由单个节点构成,而是由多个节点构成。不同的节点归属不同的服务提供方。于是任何事情不再由单一的服务提供方说了算,而是由多个服务提供方共同商议决定。任何一个服务提供方对于服务而言不再是必不可少的,而是可有可无的。本章重点讲解去中心化计算中遇到的问题,以及求解策略和方法。

第5章讲解虚拟化和云计算。云计算由集群计算演进而来,其目标是: 使企业客户将其业务信息系统不加修改地迁移至云,在云上成功运行。相比于集群计算,云计算再次把资源共享提升到全新的高度。在集群计算的基础上,云计算要解决两个关键问题: ①企业客户的应用程序在云上到处运行; ②运行在同一计算机的多个应用程序彼此不受干扰。本章将应用程序结构化成应用程序自身和运行环境两部分,将上述两个问题转换为能否运行,以及能否成功运行的问题,然后采用虚拟化策略得出这两个问题的解决之策。

第6章讲解微服务技术。在集群或云上运行的服务器具有动态性。这种动态性表现在3方面: ①服务程序运行在哪台计算机上不能事先确定,要到运行时实时确定; ②为了服务的可用性和吞吐量,一个服务器的副本数具有动态变化性; ③当一台服务器中的数据量增长到上限时,要将服务器一分为二。另外,服务器面临着数据量不断增长和负载不断加大的双重压力,面临的安全威胁也日益增大。本章探索使服务器高效运行、安全运行、弹性运行,以及实现服务程序的快速开发与部署、快速改版升级、快速启动的策略和方法。这些策略和方法统称为微服务技术。

本书内容新颖、图文并茂、通俗易懂,特别适合作为高等院校计算机及其相关专业的教材,或者作为工程技术培训的教材。本书也非常适合科研人员和工程技术人员阅读,从中感悟云计算和微服务的内涵,体会其精妙之处。

对于初学者,要透彻领悟云计算和微服务,必须边看书边练,同时思考和琢磨知识内涵和彼此间的联系。基于此考虑,本书每节的重要知识点后都提供有思考题,引导读者回溯和联想,以便检验学习效果,加深对知识点的认识,训练开拓性思维。本书的习题经过了精心挑选和编排,既精炼,又能覆盖知识点。

本书配套资料齐全,包括教学大纲、教学日历、教学PPT、小班讨论题目、课程实验与指导、习题答案等。读者可以从清华大学出版社官网下载对应资源,也可以扫描书中的二维码获取。书中错误之处在所难免,欢迎读者批评指正。

本书的出版得到湖南大学信息科学与工程学院的支持,也得到清华大学出版社的相助。清华大学出版社的薛杨编辑为本书提了很多改进建议, 特此致谢。

杨金民2024年12月