云计算关键技术探析
2020-11-16郑逸凡
郑逸凡
摘要:云计算是一种全新的计算资源分配模式,用户可以通过终端按需使用服务器的计算资源。云端计算资源需要被池化才能供众多用户使用,用户在使用云端资源时并不知道服务器的具体地理位置。建设具体的云端环境时到底需要使用什么技术,这与终端的用户紧密关联,不同的终端用户类型决定了云端的组建技术也是不同的。
关键词:云计算;虚拟机;负载均衡
中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2020)09-0037-03
云计算的核心在于云端,必须根据用户的需求,弹性分配计算资源。当用户的请求增多时,云端可以相应的增加服务器,扩充计算能力;当用户需要的计算资源减少时,云端可以自动让多余的服务器处于休眠状态,降低能源消耗。云端是运行各种软件来完成相应任务的地方,云端采用的技术与任务的大小有关,大型任务需要多台计算机组成一个集群来完成,小型任务只需要一台计算机中的某个虚拟机来完成。
1 云布局
网络延迟时间是衡量一个网络是否顺畅的重要标志,对于实时性交互要求高的软件来说,云端到终端的网络通讯时间应该控制在100毫秒以内,超出这个时间,用户的体验就会降低[1]。减小网络延迟时间的方法是减少终端与云端网络路径上的节点数或者提高网络设备的转发速度,把云端建在网络延迟小的地方是一种云布局解决方案。比如,在大城市建设存储云,专门存储用户数据;在各个省会城市建设中等规模的云端分部,其主要作用是计算,数据依然保存在存储云中;在地级市建设小型云端支部,负责本地区的计算任务。还有一种类似的解决方案是内容分发网络,简称CDN,用户可以就近访问所需的内容,用户体验好,传输成本低,一个基本的CDN网络如图1所示。
2 存储技术
云计算的本质是把服务器、网络设备、存储设备以及各种软件转化为服务产品,用户通过网络在线使用这些产品及服务,这里的存储一方面是指虚拟内存的组成部分,另一方面指的是软件和数据的存放场所[2]。让CPU和存储分离可以实现共享存储,便于计算机资源横向伸缩,目前能实现共享存储的技术有FC、FCoE、iSCSI、NFS、CIFS等,前三个是磁盘块共享技术,后两个是文件共享技术。
云端主要采用的存储技术是分布式存储,通过分布式文件系统把多台计算机的存储资源整合成一个大的存储空间。对于每一台具体的计算机而言,既有直接插在主板上的直接存储,又有通过网络连接的外部存储,服务器存储局域网(Server SAN)逐渐在各个数据中心的建设中起到重要的作用,例如Ceph分布式存储系统就属于Server SAN,已经被很多数据中心采用。
3 虚拟化与容器技术
虚拟化是云计算的重要技术,主要用于服务器、网络和存储等物理资源的池化,从而实现计算资源的弹性分配[3]。对于不支持逻辑分区的计算机来说,可以通过安装VMware等虚拟化软件来模拟多台计算机,这些模拟的计算机称为虚拟机,用户可以在虚拟机上安装操作系统和应用软件,可以给虚拟机配置CPU、内存、硬盘、網卡等资源。随着多核CPU计算机的发展,鉴于其本身支持虚拟化,软件开发商可以直接开发出能运行在裸机上的虚拟化层软件,如微软的Windows Hyper-v 2012、思杰的XenServer、EMC的ESXi 6、红帽的RHEV-H等,然后在虚拟化软件层上直接创建更多的虚拟机。
容器技术是在操作系统层上创建容器,这些容器共享操作系统的CPU、内存、存储等资源,但是每个容器可以独立设置自己的CPU、内存、硬盘和网络容量,具备单独的IP地址和操作系统管理员账户,容器可以关闭和重启。虚拟机的隔离效果比容器技术好,在安全性要求较高的云端平台中,虚拟机的使用率要高于容器,而在安全性要求不高的场合,容器技术逐渐成为开发者的首选。虚拟机与容器技术的区别如图2所示。
4 负载均衡
云计算是用户通过网络连接到云端并使用里面的资源,这里面涉及到三个方面:一是用户数众多,二是云端的服务器有很多,三是终端与云端之间的网络连接也存在多条[4]。负载就是任务,如何把众多用户的任务请求合理地分发到云端的各个服务器进行处理,就是负载均衡所要解决的问题。常见的负载均衡策略有:
(1)让唤醒的服务器尽可能多地处理终端的请求;
(2)使每台服务器消耗的计算资源占比尽可能相等,如果云端服务器的硬件配置相同,那么本策略将会使终端的请求平均地分配到各个服务器;
(3)让执行相同任务的请求尽可能地分配到相同的服务器,比如同一个业务部门的任务一般都大同小异,把该部门的请求都分配给同一台服务器,可以节约服务器内存;
(4)同一个终端的请求尽可能地分配到同一个台服务器,这样可以减少服务器的切换次数,从而降低网络带宽的消耗。
5 集群
对于大型任务,只靠一台服务器无法完成时,就需要把大型任务拆分成若干个中小型任务,然后把这些任务逐个分配给某一台服务器协同完成,这就是集群所要解决的问题。对用户来说,很多台服务器组成的集群相当于一台超级计算机,不管是中小型任务还是大型任务,都能够很快得到解决。一台具备集群计算能力的超级计算机价格十分昂贵,而一台PC服务器的价格却越来越便宜,因此云端一般采用大量廉价的PC服务器组成一个集群来实现高性能计算。
集群涉及两个技术:一是任务的拆分,二是任务的调度。任务的拆分关键是降低各个子任务之间的关联性,从而提高任务执行的并行效率。任务的调度主要是把拆分出来的子任务合理地调度给云端服务器,从而协同完成总体任务。集群是一个系统工程,这里面涉及到一系列的基础算法,比如选举算法、波算法、快照、一致性算法等。目前比较著名的集群系统Hadoop,它就是负责分布式系统的基础算法,在Hadoop上编写分布式程序就比较容易了。一个简易的Hadoop集群如图3所示。
6 用户隔离
用户隔离是指当用户通过终端登录云端时,该用户的操作行为和数据对于其他用户来说是不可见的,这里面涉及到两个方面的隔离,一个是用户行为的隔离,另一个是用户数据的隔离。用户操作计算机的行为是通过消耗服务器资源来体现的,一个用户占用计算资源的变化,其他用户是感知不到的。现代的云计算服务厂商基本都是按照用户的实际使用量来分配计算资源,但不超过用户购买的资源上限。用户数据一般保存在数据库中,对于同一个数据库系统的用户数据隔离有三种方法:一是分离数据库,二是共享数据库但分离表、视图等元素,三是共享数据库和表、视图等元素。
7 统一身份认证
云端有很多应用系统,每个系统都需要用户登录后使用,如果在每个应用系统中都进行一次身份验证,将极大地降低云端的服务性能,统一身份认证就是用来解决这类问题的。云端专门设置了一台或若干台身份认证服务器,当用户使用云端资源时会首先向这些身份认证服务器发出请求,如果验证通过则用户会收到一个认证通过的标识,以后该用户访问云端的其他应用系统时,系统只需要确认一下该用户是否拥有身份认证通过的标识,如果有则允许访问,这样就实现了统一的身份认证,提高了服务器的处理效率。
参考文献
[1] 黄旭.云计算环境下的分布存储关键技术探究[J].通讯世界,2020,27(5):110-111.
[2] 张志镕.云计算技术在计算机网络中的应用[J].计算机产品与流通,2020(6):47.
[3] 彭新玉.基于软件定义的可虚拟化未来网络关键技术研究及产业化[J].电子世界,2020(9):5-6.
[4] 张琦.云计算及关键技术的发展[J].计算机与网络,2019,45(24):44.