第1章 云计算平台
1.1 云计算平台简介
1.1.1 云计算的概念
在互联网蓬勃发展的今天,云计算(Cloud Computing)是各个行业争相探讨的核心话题,几乎各个行业都期望能够“拥抱”这项新技术,并通过它来提升自身。
美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)对云计算进行了定义:云计算是一种资源的服务模式,该模式可以实现按需从可配置的计算资源共享池中获取所需的资源(如网络、服务器、存储、应用及服务等),资源能够被快速提供并在不需要的时候被及时释放,这大大减少了用户在资源管理工作上的费用[1]。
依据业界从底至上的划分规则,将云计算架构划分为3个层次,分别为基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)。
IaaS层:IaaS是指将云资源基础设施(如计算处理、运行执行内存、数据存储容量及服务通信等)作为一种对外服务,供云用户使用。在这一层,基础设施的运营和维护由相关人员进行管理,把硬件资源虚拟化,从而为上层提供服务。由于要保证云计算中资源以按需分配的颗粒度进行划分,因此虚拟化成为IaaS层的核心技术。这方面的服务提供商是Amazon。Amazon云计算服务(Amazon Web Services,AWS)的基础服务包括虚拟机租用服务(EC2)、存储租用服务(S3)等[2]。
PaaS层:PaaS是指把应用程序运行时依赖的平台作为一种服务,提供给用户使用。多租户弹性伸缩(Multi-Tenancy Elastic Scale)[3]即考虑租户或者租户的应用需求,对其需要的云计算资源实现动态增加以及释放,相对于传统的应用平台,PaaS更具优越性。
SaaS层:SaaS是一种新提出的为用户提供云上托管服务的软件模式,可为云用户简化应用程序的下载安装过程。SaaS层的服务上层为用户层,它可以根据用户需求提供灵活的、价格低廉的服务,并且具备软件无缝升级等优势。
1.1.2 云计算的发展
随着移动设备数量的爆发式增长以及用户的需求越来越多样化,应用服务面对的压力越来越大,同时也越来越复杂,比如高并发需求、密集请求突发性、更高的计算能力、应用之间的网络通信能力以及如何保证用户信息的安全等。对于应用服务开发商来说,为了使应用稳定地运行和向用户提供更好的服务质量,必须加大人力、时间和经济等资源的投入,比如购买更多的物理设备、分派更多的运维人员、随着访问量的波动增删不同机器设备上的应用等。此外,还可能出现由于不能及时应对突发性请求而导致服务质量降低的情况,这给用户造成相当严重的负担。
云计算为上述问题提供了很好的解决方案,“网格之父”Ian Foster认为,云计算是一种大规模分布式计算模式,其推动力来自规模化带来的经济性,它以网络的形式将各种服务按需提供给用户使用。云计算一般具有以下3个特点。
(一)高弹性
对于密集型突发请求,云计算平台的资源动态扩展相对于开发商自己调整来说响应速度更快,购买者只需要在相应的云计算服务提供商的网站上,通过鼠标对购买的实例进行升降配置,无需关心后端的网络、磁盘等配置。
(二)高可靠性
云计算服务提供商拥有大规模的同构或异构物理设备,并且会采用多副本机制和容灾策略,对于意外性宕机导致不能提供服务的场景,会及时更换节点并及时恢复数据,以保障服务的高可靠性。
(三)高安全性
随着用户的隐私意识逐渐提高,网络和数据安全已经成为衡量服务质量的一个重要因素,也是开发商必须面对的问题。受开发商自身运维团队能力和人员数量的限制,其抵挡网络恶意攻击和保护数据安全的能力不足,而云计算服务商拥有的运维团队普遍更加专业和更加庞大,可以大大降低安全风险。
1.1.3 云计算分类
根据服务对象的不同和部署的差异性,可将云计算简单地划分为如下3类:公有云(又称公共云)、私有云以及混合云[4]。
(一)公有云
公有云通常由云服务提供商负责构建及运行,然后供云用户使用,其基础设施包括物理基础硬件、网络传输带宽及程序运行所需内存等。用户按照自身需要的资源使用量,通过交付一定的费用从云资源池中获得相应的服务资源。
(二)私有云
私有云主要由专一的机构或部门拥有及运营维护,它只限于内部人员和客户单独使用的硬件、网络、存储、应用以及应用程序接口(Application Programming Interface,API)等基础服务。公有云可能存在安全和带宽等方面的问题,但是私有云由于仅仅部署在局域网络中,安全性得到了提高。
(三)混合云
混合云由上述2类云组成,虽然这2类云相互混合,但它们之间却是相互独立的,可通过一定方式进行有效的关联。
1.1.4 云计算技术
在云计算平台的构建过程中,主要包含编程模型、虚拟化技术、数据存储技术、数据管理技术、云计算平台任务调度技术5种技术[5]。
(一)编程模型
选择好的编程模型可以提高计算的效率,主流的云计算编程模型主要有2种:一种是由Google研发的MapReduce,通过映射、规约算子将问题进行分布式处理;另一种是由Apache开发的Spark,它先建立特有的弹性分布式数据集(Resilient Distributed Dataset,RDD),再使用Spark提供的内部算子对大数据进行操作,从而实现分布式的计算方式。
(二)虚拟化技术
云计算利用虚拟化技术将底层硬件配置隔离,并将各种异构的硬件资源整合到一起,供云用户按需使用。因此一般认为虚拟化技术是实现云计算的基础。
(三)数据存储技术
云计算会涉及大量的数据,由于数据量激增,不能将所有数据保存到一台主机上,因此需要开发一种数据存储技术以整合分布在不同主机上的数据,同时供计算模型使用。现在普遍将Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)作为数据存储技术,它支持集群数据的存储与读取。
(四)数据管理技术
由于云计算会对海量的数据进行特殊处理,因此在这个过程中需要一种数据管理技术对数据接收与计算过程中的中间数据进行管理。最初使用由Google开发的BigTable,后来大多使用由Apache开发的Hive和Hbase,并将其作为海量数据的管理技术。
(五)云计算平台任务调度技术
在云服务过程中,需要按照一定的模式将用户提出的大量计算问题分发到计算资源中,由于任务的种类繁多,需求也是多样的,因此需要一种优秀的任务调度算法将任务与资源对应,保证任务能够又好又快地通过云平台完成。
1.1.5 云计算平台的概念
云计算平台也被称为云平台,是指基于硬件资源和软件资源的服务,它可提供计算、网络和存储能力。云计算平台能够以快速、简单和可拓展的方式创建和管理大型复杂的信息技术(Information Technology,IT)基础设施。简而言之,云计算平台就是将任何开发者可能需要的软件集成到一个平台上,开发者只需要登录这个平台,就可以选择自己需要的软件、数据库、开发环境等,不必耗费本地内存和资源,且具有更高的安全性。
根据云平台的不同功能,可以将云计算平台大致分为以下3类:
一是以数据存储为主的存储型云平台;
二是以数据处理为主的计算型云平台;
三是兼顾计算和数据存储处理的综合云计算平台。
1.1.6 云计算平台的优势
在传统的工作方式中,开发者需要将数据库、开发环境、软件等部署在本地的服务器上。在这种方式下,服务器部署、维护等工作需要投入大量成本,并且安全性能也存在较大隐患。相比而言,云计算平台具有以下优势。
(一)便捷高效
云计算平台部署在云服务器上,用户在使用时只需通过终端连接云服务器就可开始工作,这样就可以摆脱时间、地域的限制,解决部门跨地域合作的问题,对于部门分散的企业来讲,效率得到了极大提升。
(二)节约成本
相比传统服务器需要对设备进行部署和维护,云计算平台无需进行部署工作,平台提供用户所需的所有软件,维护设备等工作由服务商承担。对于新兴的创业公司来讲,这使得他们可以将更多的成本投入到核心业务上,而不是耗费在部署和维护设备上。
(三)安全可靠
云服务商通常会为用户提供备份服务,这样即使用户存储在云计算平台的数据因为发生意外而丢失或者出现其他问题,也可以通过备份来快速恢复,避免造成损失。除此之外,云服务商提供的防火墙、高防IP等服务也可为用户的数据提供更多保障。
(四)商业化云平台
随着云计算的迅猛发展,一些大型的商业化云平台走进了人们的生活,这些云平台应用涉及生活中的很多领域,使得人们对云计算的接受程度越来越高。
表1.1分别从技术特性、核心技术和企业服务3个方面对微软、Google、IBM、Oracle、Amazon和阿里巴巴6家公司的云平台进行了对比。
表1.1 云平台对比