王竞争
摘要:云计算是当今计算机领域的热门领域,它包括的技术种类丰富,大到云计算数据中心架构设计,小到虚拟机网络模式设置,而且云计算开源社区发展活跃,它不断融合新的技术,创新出新的应用。该文首先介绍了云计算的概念,然后从云计算服务模式(基础架构即服务、平台即服务、软件即服务)方面入手,介绍了虚拟化、分布式计算等不同服务模式下的关键技术,最后概述了云计算技术在超融合、容器方面的最新发展趋势。
关键词:云计算;虚拟化;分布式计算;超融合;容器
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)20-0052-03
1 云计算概述
从2006年亚马逊推出云计算服务以来,云计算概念从萌芽到发展,云计算技术经历着一个逐渐成熟的过程。云计算技术不仅仅是一种技术,而是大量计算机领域的技术互相融合发展而来的。OpenStack是云计算的开源项目,从OpenStack的技术发展来看,最初的云计算技术仅有服务器虚拟化、Flat和Vlan虚拟化网络、虚拟机管理技术,接着又有了Gre和Vxlan虚拟化网络、分布式存储、大数据处理技术,后来又加入了裸机管理技术、微服务技术、自动部署技术、NFV等。新一代互联网公司是云计算的理念孕育、技术发展与业务部署的助推者与实践者,很多大型的互联网公司已经把所有的生产业务放在云上,证明云计算是一项成熟的并且经过验证的技术。与此同时,传统企业也在对云计算探索、尝试,拥抱新一代的技术。
1.1 云计算定义
云计算是一种IT服务交付模式,云计算安全联盟(CSA, Cloud Security Alliance)给出的定义是[5]:
“云计算是一种能够对可配置的共享计算资源池进行普遍存在的、方便的、按需的网络访问的服务供模型,这些资源包括计算资源、网络资源、存储资源等。云计算是一种颠覆性的技术,它有增强合作、敏捷性、扩展性和可用性的潜力, 并且可能通过优化和效率计算减少费用。”
美国国家标准与技术学院(U.S. National Institute of Standards and Technology)在“NIST Working Definition of Cloud Computing/NIST 800-145”中的定义得到广泛接受。它定义了五个基本元素,三种云服务模型和四种云部署方式,如图1所示。云服务的五个基本元素是:通过网络分发服务、自助服务、可衡量的服务、资源的灵活调度,以及资源池化。三个云服务模型分别是SaaS(Software as a Service—软件即服务)、PaaS(Platform as a Service—平台即服务)和IaaS(Infrastructure as a Service—基础架构即服务)三类,PaaS基于IaaS实现,SaaS的服务层次又在PaaS之上,三者分别面对不同的需求。IaaS是基础设施即服务层,提供给用户所需的计算资源、网络资源和存储资源;PaaS是平台即服务层,提供给用户的是应用的平台环境,比如大数据平台、Tomcat平台、集成开发平台;SaaS是软件即服务层,提供给用户的是最终的软件服务,例如OA、电子邮箱等。四种部署模式分别是公有云、私有云、混合云和社区云四种,公有云是指能够通过互联网访问、提供给公众(包括企业和个人)使用的、按使用量收费的云计算服务;私有云是指企业私有的、不提供给外部使用的云服务;社区云一般是行业云,只面向相关行业的少数企业或组织使用的云计算服务;混合云是指能够混合使用公有云和私有云的云服务,打通企业私有云和公有云的云服务。
1.2 云计算优势
云计算有传统IT架构所不具备的优势。首先,云计算能够提高资源利用率,云计算按需获取的特点保证了资源的有效分配使用,而弹性伸缩模式则保证了资源的回收与再利用,所以说,资源的利用率得到了有效的提高。其次,扩展性是云计算的另一特点,云计算平台能够容易地横向扩展,随着业务量的增大逐渐增加云计算环境的集群大小。再次,云计算具有高可靠性的特点,通过云服务的高可用配置,服务质量能够保证较高的水平,当一部分服务出现故障,后台会自动维护迁移,保证业务的不中断。第四,云计算服务具有便捷性的优势,它通过网络获取,即插即用,用户通过网络访问到云服务即可在任何时间任何地点使用云服务。第五,云计算通常以模块化的方式提供服务,例如用户可以在邮件、CRM、OFFICE等多种服务类型之间自由组合,根据用户自身的情况在适当的时间选择适当的种类和适当容量的云服务内容。
2 云计算技术
2.1 虚拟化技术
IaaS层是基础设施即服务层,主要提供计算资源、网络资源和存储资源。通过虚拟化技术,IaaS层能够定量提供所需的资源。虚拟化技术主要包括三个方面,分别是计算资源虚拟化、网络资源虚拟化和存储资源虚拟化。
计算资源虚拟化指的是把服务器中物理的CPU和内存通过资源隔离技术划分成虚拟计算资源的过程。通过把计算资源虚拟化,单个服务器上可以同时运行多个虚拟机,每个虚拟机与其他虚拟机完全隔离,实现服务器的计算资源划分和资源的灵活运用。计算资源虚拟化技术包括全虚拟化(Full Virtualization)和半虚拟化(Para-virtualization)。全虚拟化技术是虚拟机内部所有的指令都是通过虚拟化过程实现的。虚拟机与宿主机中间架设了一层Hypervisor,Hypervisor完全模拟底层硬件,虚拟机的底层硬件指令通过Hypervisor执行,Hypervisor再调用宿主机硬件执行。全虚拟化技术的好处是不需要修改客户机操作系统,在使用性上较为方便,但是相比于在底层硬件上通过模拟的硬件执行指令会对虚拟机运行性能有一定的损失。全虚拟化业界成熟的产品主要是VMware、KVM。半虚拟化是使用事先修改过的客户机操作系统内核共同分享宿主机硬件来实现的,它比全虚拟化技术的性能更强,但是客户机的操作系统需要修改导致使用便利性和兼容性不足。半虚拟化比较成熟的产品是Xen。
网络资源虚拟化是通过虚拟的网络设备共享物理网络基础实施来实现的。具体来说,这些虚拟网络设备包括虚拟网桥、虚拟路由、虚拟网络命名空间以及虚拟网卡。在OpenStack领域内普遍使用的网络模式为Flat、Vlan、Gre、Vxlan。Flat网络模式是一个平面网络,所有的虚拟机连接到一个Linux网桥上,并且都在同一个网络中。Vlan是虚拟局域网,这种网络模式下可以实现多个虚拟子网,每个虚拟子网之间互相隔离,能够实现每个租户拥有私有虚拟网络。由于Vlan只能有4096个的限制产生了基于隧道和封装的技术。Gre是L3层的点对点隧道技术,本质是在隧道的两端的L4层建立UDP连接传输重新包装的L3层包头,在目的地再取出包装后的包头进行解析。Gre的缺点是L2层的操作移到了L3层上造成了网络的性能下降,另外如果有很大的集群规模,点对点的隧道形式将会增加使用大量的资源。Vxlan与Gre使用相同的隧道技术,与Gre不同之处在于通过重新包装L2层包头,在目的地的L4层隧道重新解析。
存储资源虚拟化是建立虚拟逻辑存储层,将应用系统与物理存储设备隔离的虚拟化技术。应用系统只需关心自己需要什么样的资源,逻辑存储层一方面提供应用系统存储资源,一方面管理物理存储设备和负责数据的管理与维护。存储虚拟化一般分为基于存储设备的存储虚拟化和基于网络的存储虚拟化。分布式存储是云计算中越来越广泛使用的存储虚拟化技术。基于存储设备的存储虚拟化是通过硬件设备把多个物理磁盘组合到一起,形成一个统一的存储空间,例如磁盘阵列技术(Redundant Array of Inexpensive Disks,RAID)。基于网络的存储虚拟化是指通过网络远程访问存储资源,一般可通过网络附加存储(Network Attached Storage,NAS)和存储区域网(Storage Area Network,SAN)实现。分布式存储技术是通过使用计算集群中的每台服务器上的空余磁盘空间,通过软件定义的方式将这些磁盘空间加入到一个统一的资源池,能够对外提供块存储、对象存储、文件存储等功能。分布式存储中最常见的产品是GlusterFs和Ceph,其中Ceph是越来越流行的分布式存储软件。
2.2 分布式计算
分布式计算是指在大规模计算任务中,数据分散在不同的计算节点,把计算任务运行在各个不同的数据块上,最后把计算结果汇总的计算方式。
Pass层上最著名的平台是Hadoop,其中最关键的组件为MapReduce,采用分布式计算技术来对大数据任务进行处理。MapReduce源自于Google2004年发表的论文,属于并行计算算法,它通过Map和Reduce两个过程来实现。在Map阶段,算法遍历所有的数据块,对所有的元素进行统计。当Map阶段完成后,在Reduce之前会进行一个Shuffle操作,主要对统计元素的列表进行简单的清理和排序。在Reduce阶段,算法会对所有的统计结果进行汇总,形成最终的key/value列表。
HDFS源自于Google2003年发表的论文,它是一个分布式文件系统,它被设计为运行在廉价的物理服务器上,具有高容错性的文件系统。作为Hadoop的底层文件系统,它支持数据的高吞吐量,能够存储GB到TB级的数据。HDFS集群有三种节点类型,分别为NameNode、SecondaryNameNode和DataNode。NameNode是控制节点,主要管理数据块的映射,响应客户端的读写请求和管理HDFS的文件命名空间。SecondaryNameNode是NameNode的冷备份,当NameNode出现故障的时候,SecondaryNameNode能够启动以保障HDFS集群的正常运行。DataNode是数据存储节点,存储数据块并执行读写功能。HDFS内部的所有通信都基于标准的TCP/IP 协议。
由于Hadoop1.0的设计缺陷(扩展性差、可靠性差、资源利用率低、无法支持多种计算框架),Hadoop2.0中引入了Yarn。Yarn实际上是一个资源管理框架,它的目标已经不再局限于支持MapReduce一种计算框架,而是朝着对多种框架进行统一管理的方向发展,比如Spark、Storm都可以运行在Yarn上。
2.3 SaaS层技术
SaaS软件即服务是指通过网络提供按需的软件服务,而购买软件产品本身。SaaS软件服务丰富多样,例如邮箱服务、Google Docs、CRM、团队OA,主要是为企业提供垂直化的解决方案,SaaS层技术多种多样,主要是Web2.0技术。现有的SaaS产品一般是服务运营商设计完成全套应用服务和流程,能够满足通用的行业应用需求,但是随着不同行业和企业的个性化需求,逐渐发展了SaaS2.0概念。SaaS2.0要求企业用户能够使用运营商平台提供的通用API,定制个性化的企业应用,并能够与运营商平台的其他SaaS服务无缝对接。
SaaS2.0模式要求SaaS运营商平台有一个强大的云计算平台,它能够提供多种多样的API服务以满足用户的个性化需求,它具有强大的集成能力以实现各种API的快速集成,它具有快速的应用部署能力和应用运维能力以对用户定制的SaaS服务进行部署和维护。用户的业务知识将与运营平台的计算能力相结合,用户只需关注业务方面的需求,而运营平台主要精力则专注于API资源的提供和平台本身的维护,可以预见这种模式可以大大提高生产效率。
3 云计算技术的发展趋势
云计算技术领域发展迅速,每年都会出现新的技术融合与应用创新。最新的技术趋势有超融合架构、容器、SDN/NFV、IaaS和PaaS的融合等方面的发展。超融合架构是指将服务器的计算资源和存储资源结合在一起,通过虚拟化技术和分布式存储技术将服务器集群中的计算资源和存储资源同时利用起来,形成统一的资源池。在开源云计算社区中,Docker是最流行的容器技术,同时应用Docker构建微服务架构也成为一个热门的话题。Docker与云计算平台的结合,计算资源提供的方式可以不再是虚拟机而是容器,容器的轻量性和便捷性一方面提高了物理资源的利用率,另一方面在业务部署效率上也有很大的提升,未来有可能改变开发、运维以及业务交付的方式。SDN指的是软件定义网络,NFV指的是网络功能虚拟化,随着电信运营商对云计算数据中心在复杂网络上的需求,云计算社区希望通过行业标准的服务器、存储和网络设备来取代私有专用的网元设备,因此引入了SDN/NFV技术的融合。另外,IaaS层的技术逐渐成熟,IaaS提供商逐渐把目光转向PaaS层,IaaS平台与PaaS平台有了融合的趋势,大数据处理平台是常见的PaaS层平台,架构在IaaS层的虚拟化平台上,将使得大数据平台拥有弹性伸缩能力,对数据中心的资源使用率将得到很大的提升。
4 结束语
云计算领域技术涵盖广泛,本文仅对云计算IaaS、PaaS、SaaS各个层面的关键技术进行简单介绍,大致梳理了云计算大框架内的技术脉络,并且展望了云计算的新技术趋势。云计算领域发展迅速,新的技术和应用模式不断涌现,开源社区对云计算的发展贡献较大,OpenStack成为云计算领域的事实标准。随着OpenStack的版本成熟度提高、自动部署工具的成熟以及IaaS与PaaS的融合,云计算将会普及到更多的企业中去。
参考文献:
[1] 李天目, 韩进. 云计算技术架构与实践[M]. 北京:清华大学出版社, 2013.
[2] 吴朱华. 云计算核心技术剖析[M]. 北京:人民邮电出版社, 2011.
[3] 徐立冰. 云计算和大数据时代网络技术揭秘[M]. 北京:人民邮电出版社, 2013.
[4] 董西成. Hadoop技术内幕:深入解析YARN架构设计与实现原理[M]. 北京:机械工业出版社, 2013.
[5] Cloud Security Alliance, Security Guidance for Critical Areas of Focus in Cloud Computing[M]. V3.0, 2011.