Docker技术在Web服务系统中的有效应用研究
2022-03-10杨光
杨光
庆安集团有限公司航空设备研究所 陕西 西安 710077
引言
在云计算的应用范围日渐广阔的当今时代,接受云计算按需服务理念的各类企事业单位也日渐增多,此情况为软件行业跨国公司提供了商机。尤其对于亚马孙、谷歌、微软与IBM等云计算巨头而言,推行云计算相关业务能为其引入越来越多的服务营收,且已日渐成为此类公司主营业务中的重要组成部分。而云计算技术的发展不仅离不开虚拟化技术的支持,也离不开面向服务架构的广泛应用。而近年来逐渐被越来越多的人所认可的Docker虚拟化技术,正是对操作系统虚拟化的利用,使得采取组件构建的信息系统在云平台中的部署更为便捷。
1 Docker技术简介
Docker是一项以LXC(Linux Containers)为基础的虚拟化技术高级容器引擎,同时依托于Go语言实现的应用于云平台中的虚拟化技术。相较于传统虚拟化技术,Docker粒度更小、更轻量级,且无须指令级模拟或即时编译。Docker所利用的Linux容器技术仅应用相关源码与依赖库、环境配置等都打包起来建立一个沙盒执行环境。Docker虚拟化技术有效的将由一个单独操作系统管理的资源划分到一个个孤立的组中,平衡了孤立的组之间资源使用需求的冲突,提升资源利用率。Docker容器能够直接在核心CPU运行本地指令,从而能够有效避免虚拟化,也能够避免系统调用替换中存在的复杂性,从而能与宿主机运行性能更为接近。Docker虚拟化的构建以应用组件级虚拟化技术为依托,使得容器存在一定的独立性与封闭性,运行容器对其他容器或宿主环境不造成影响。且不同容器各具存储空间,其各自进程与网络接口也各不相同。
在此基础上,包含Linux系统运行所需的应用程序,却不同于传统虚拟化技术,以容器运行为依托的Docker虚拟化技术不存在对完整Linux操作系统进行虚拟的操作,仅具备应用程序运行应存在的核心操作系统环境。使得其存在启动时间短,且空间占用少,便于分发复制等优势。与此同时,也有与传统技术相同的隔离性与安全性。基于此,从2013年Docker发布至今,其已获得各类云计算服务提供商的认可,并为应用系统提供了便利,使其能够实现跨平台部署,在各类云平台中都能得以运行[1]。
表1 Docker容器与虚拟机之间性能差异
2 基于Docker的Web服务系统改造方案
2.1 基于虚拟机部署的Web服务系统局限性
要使当下信息系统按照得以重构,以使其符合云平台理念,可操作的途径是对当下信息系统设计进行重组。在重组过程中,可使用SOA架构使系统实现模块化与服务化的目标,以此促进其转变为Web服务系统,而此系统则由若干轻量级服务组件构建构成,且具备可分布性。在此情况下,原信息系统所具备的复杂程度得以有效降低,信息系统部署涉及的各类资源的量级也得以有效降低,从而让信息系统扩展向云平台的途径更具灵活性。以SOA架构为依据,部署Web服务提供组件的宿主机的网络环境和操作系统环境直接影响着Web服务系统运维是否便捷。在虚拟主机所提供的网络环境相对统一的情况下,其涉及的操作系统环境也较为统一,使得日渐增多的Web服务系统得以于虚拟主机中被有效部署。但囿于虚拟机耗用的系统资源数量较大,且其被分配于操作系统,而并不能被分配于Web服务组件,因此同一虚拟机中能够部署的Web服务组件的数量已成为相关工作人员应当深入研习的重要课题。在此基础上,一旦在Web服务组件短时间内涉及大批复制与扩展时,最为迅速的方式是对虚拟机进行复制与扩展。但一台物理主机可承担的虚拟机数量存在限度,而虚拟机镜像副本经过复制后则不仅易提升宿主机系统资源开销,也易提升其运行效率[2]。
2.2 基于Docker部署的Web服务系统优势
针对上述问题,Docker虚拟技术提出了相应的解决方法。而其解决方案中的最主要思想是将Web服务系统组件在Docker容器中进行部署。Docker使用平台与其服务理念使Web 服务系统具备一定的敏捷性与共享性、可伸缩性,其应用优势可概括为四点,首先,Docker技术能够迅速取得服务镜像或创建服务镜像。其占据的存储空间大幅度减小,且其复制效率与传输效率都有所提升。其次,服务镜像内环境可度量。Docker容器具备一定的隔离性,此性质使其涉及的Web服务组件处于运行在独立Linux主机的状态。Docker技术可实现对外开放容器内部网络端口。此外,服务镜像具备高伸缩性。最后,服务镜像云端应用便捷在云计算主要服务提供商的支持下,Docker技术已日渐为云计算公司所关注,进而为其所利用。
图1 基于Docker容器部署的Web服务调度组件运行步骤
2.3 基于Docker的Web服务系统设计
一般情况下,Web服务系统中的主要成员是服务调度组件与各类服务提供组件,其能够为消费者提供相应服务。以虚拟机部署的Web服务系统为基础,Web服务调度组件可完成服务提供组件的调用工作,同时对服务提供组件所处运行状态进行监控,以此使Web服务系统得以维持有效的常态运行。而对于服务提供组件的启动、停止以及迁移等工作,则由虚拟机管理软件承担。此类操作存在一定不足,即Web服务调度组件并未实现全权管辖其注册的服务,使Web服务系统运营与维护工作得以落实则主要借助于虚拟机管理软件,运维人员需结合服务调度组件与虚拟机管理软件,以此使Web服务系统能够发挥自身的自动化管理功能[3]。
但在Web服务提供组件部署于Docker容器后,Web服务调度组件不仅能履行发现服务与调用服务的基本功能,也可对Web服务提供组件进行启动与停止、复制、删除等工作,在此情况下,Web服务调度组件可监管其注册的全部服务。此时服务调度组件除对Web服务提供组件调用地址进行存储外,也对其端口信息进行存储,同时承担对Web服务提供组件Docker容器信息的维护工作,其中不仅创建Docker镜像位置,也能实现对Docker镜像位置的运行与停止、删除其Shell脚本等工作。在对Shell脚本与JAVA管理程序进行开发的基础上即可实现对Docker技术的自动化调用,使其所提供的容器配置命令能够实现服务的再次配置与运行。Docker容器所具备的秒级启动速度使服务存在更高程度的可用性。
当服务需要进行扩展,服务调度组件则可对预设的Shell 脚本加以运行,在Docker宿主机内部完成新承载服务提供组件的容器副本进行创建,并在此基础上运行,使其后续服务请求引导能够投入到新Web服务提供组件副本。但对于无须再次运行的Docker容器副本,服务调度组件则可执行脚本实现对Web服务提供组件副本的停止和删除,以此使Web服务系统能够完成自动伸缩工作。应Docker容器技术后,可以通过简单的程序开发就实现服务的高可用性和可伸缩性,而不需要依赖专业的虚拟机管理软件的辅助来实现这些功能,真正实现了服务调度组件作为“服务管理者”角色在SOA系统中所起的管理者作用。Docker 技术要求 Web 服务提供组件在设计时尽量小型化[4]。在Web服务系统设计模型中,基于实体主机的服务调度组件由两部分构成,其中一部分为面向服务消费者的服务注册组件,另一部分则是部署于Linux宿主机的服务管理组件。当Docker服务镜像分布于不同主机中部署时,则应当为其中的每个主机都进行服务管理组件部署,同时需要使服务注册组件同服务管理组件建立一定关联。但在Web服务系统位于云平台时,云主机中存在的资源则更具可伸缩性,在此情况下,也可对服务注册组件与服务管理组件进行合并,使其合并为服务高度组件,从而以一体身份部署于运行Docker服务镜像的云主机中。
根据Web服务系统改造方案,可由编程方式实现服务管理组件与服务注册证件,再自行创建Docker容器,并在其中完成服务提供组件部署,以此使Docker容器能够部署于Web服务系统。此过程主要分为三个步骤,首先需要创建运行环境,并在此环境中创建Docker镜像,其次需要部署Docker镜像,并完成对Shell远程管理脚本的编写,最终实现服务注册,并完成对管理脚本的远程调用,使服务提供组件所在的宿主机IP地址与调用端口等各类信息都能存储于服务管理数据库中[5]。完成上述三个步骤后,基于Docker容器的Web服务系统即可开始对外提供服务。
3 结束语
综上所述,Docker技术使得Web服务系统的开发工作与运营工作、维护工作都日渐简化,且以Docker技术为依托,可实现Web系统服务统在敏捷开发、灵活部署方面满足实际需求。且在Docker运用范围日渐拓宽的前提下,其为Web服务带来的积极作用与正面影响也日渐增强。且其优势相对较多,不仅灵活性强,也能够实现自动运维。由此可见,只要通过创建服务的容器运行环境,并承载自行开发的轻量级Web服务组件,就可以将该组件发布为Docker服务镜像,在不同的平台和系统中运行,并灵活组合成不同的Web服务系统满足日新月异的需求。