一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于容器的负载迁移系统设计方法与流程

2023-03-08 13:25:45 来源:中国专利 TAG:


1.本发明属于计算机软件领域,具体涉及一种基于容器的负载迁移系统设计方法。


背景技术:

2.随着终端应用软件内容的日益丰富以及对终端资源需求的日益增长,终端设备资源(cpu以及内存等)受限的问题日益突出。在终端应用软件领域,如何拓展终端设备的资源以满足对资源的需求是一个新的研究方向。
3.当前终端应用软件开发领域主要是通过优化代码的方式来更加高效地利用资源来减轻对终端系统资源的依赖,然而,对于终端应用软件中的某些高资源需求型计算密集型任务来说这种方法效果确十分有限,因此有必要针对应用软件中的高资源需求型计算密集型任务提出一种更为有效资源拓展技术方案。
4.负载迁移技术通过将应用软件中高资源需求型计算密集型任务的输入数据传输到cpu内存资源更加丰富的服务器上去执行以达到拓展终端设备资源的目的。
5.近年来针对负载迁移技术的研究成果较多,也有几种具有代表性的系统成果被提出。包括支持细粒度的任务级别的负载迁移系统以及支持整个终端系统虚拟镜像的负载迁移系统,上述提到的负载迁移系统都是基于虚拟机的实时迁移技术完成的。
6.基于虚拟机的负载迁移系统有几个缺点,首先是虚拟机镜像文件过大导致迁移过程中传输时间较长,且对服务端磁盘和内存空间占用率较高。以改进上述缺点为出发点,本发明提出了一种基于容器的负载迁移技术。
7.容器相比于虚拟机是一种更为轻量级的虚拟化方案,相比于虚拟机,容器具有更高的资源使用率、容器实例的规模相较于虚拟机也更小、创建和迁移的速度也更快。因此基于容器的负载迁移系统可以很好的解决基于虚拟机的负载迁移技术的缺点。


技术实现要素:

8.(一)要解决的技术问题
9.本发明要解决的技术问题是如何提供一种基于容器的负载迁移系统设计方法,以解决基于虚拟机的负载迁移系统有几个缺点,首先是虚拟机镜像文件过大导致迁移过程中传输时间较长,且对服务端磁盘和内存空间占用率较高的问题。
10.(二)技术方案
11.为了解决上述技术问题,本发明提出一种基于容器的负载迁移系统设计方法,负载迁移系统分为客户端和服务端,运行于终端设备和服务器设备上;负载迁移系统客户端将应用软件的高资源需求型计算密集型任务打包进docker容器当中作为网络服务运行,同时在负载迁移系统的客户端和服务端上分别部署应用软件的客户端和服务端;
12.负载迁移系统客户端在终端设备中保存着每一个应用软件对应的dockerfi le,dockerfi le由命令组成,docker容器构建时通过dockerfi le的命令构建容器环境,每一个应用的dockerfi le用于指导服务器设备上的docker容器构造具备执行环境的docker镜
像,在应用软件需要时负载迁移系统客户端将dockerfi le传递给负载迁移系统服务端,负载迁移系统服务端接收到dockerfi le之后通知docker引擎构造镜像,镜像启动后再通过docker容器与服务器设备的端口映射来作为网络服务为终端设备的应用软件客户端提供各种资源。
13.进一步地,负载迁移系统客户端通过发现服务广播的回应检索到可提供资源的服务器设备,然后将应用软件的部署文件dockerfi le和数据发送到负载迁移系统服务端进行具体的docker容器的构建安装;构建完成后负载迁移系统服务端将docker容器映射的端口和ip地址发送给负载迁移系统客户端,负载迁移系统客户端再传递给应用软件客户端以便后续程序执行应用软件可以使用服务器设备的资源。
14.进一步地,负载迁移系统客户端包括以下模块:
15.控制模块:对负载迁移系统客户端的其它模块进行全局的管理和控制,并协调其它模块的协同工作;
16.迁移模块:负责将dockerfi le和应用软件的部署文件和数据打包发送至服务端;
17.消息处理模块:接受来自服务端的通知消息,并将信息转发给控制模块,控制模块根据消息的类型调用其它模块进行工作,同是也负责向负载迁移系统服务端发送负载迁移系统客户端产生的消息;
18.资源管理模块:计算终端设备的可用资源并估算即将运行的任务所消耗的资源;
19.任务管理模块:监控终端应用软件任务执行状态并记录应用所使用的终端设备资源;
20.决策模块:根据服务端的资源和任务信息以及客户端可用资源信息决定是否需要服务端协助执行;
21.服务发现模块:在局域网内广播,检索可用的服务器设备;
22.设备管理模块:管理客户端通过发现服务检索到的可用服务器设备的资源地址信息;
23.心跳控制:对系统使用的服务器设备的存活状态进行监控,定时向服务端发送心跳包,配合服务端的心跳控制模块返回的应答包更新服务器设备的存活状态。
24.进一步地,负载迁移系统服务端的发现检索应答模块保持开启状态,随时准备接收系统客户端的广播消息并回应;接收到负载迁移系统客户端的请求之后负载迁移系统服务端根据服务器设备的资源状况决定是否提供资源;如果决定提供资源,则后续接受客户端发送dockerfi le文件及数据后开始部署工作,调用docker引擎创建新的可运行的docker镜像;负载迁移系统服务端还周期性的对系统的资源进行实时的监控,并且负责对执行任务的调度;负载迁移系统服务端与docker容器内部运行的任务进行实时通讯,掌握任务的进度信息,并发送给负载迁移系统客户端。
25.进一步地,负载迁移系统服务端包括以下模块:
26.控制模块:负责对服务端其它模块进行管理控制,协调其它模块协调工作;
27.消息处理模块:负责接受来自客户端的消息,将消息转发给系统控制模块再转发,同时也给客户端发送控制消息;
28.资源管理模块:计算服务器设备可用资源并估算当前服务器设备的可用资源;
29.任务管理模块:对在服务器设备执行的任务所使用的资源和执行状态进行监控和
记录,并更新任务执行的进度信息;
30.自动部署模块:接受负载迁移系统客户端发送过来的dockerfi le和文件数据,结合基础docker镜像构造出对应的应用软件使用的高级docker镜像并启动提供对外资源;
31.心跳控制模块:对所有客户端的存活状态进行监控,并且响应各个客户端发送的心跳包;
32.发现检索应答模块:响应客户端的发现广播,并将服务器设备的地址资源信息发送给客户端;
33.设备管理模块:服务端接受来自客户端的广播后通知客户端自身的地址以及资源信息,在真正为应用软件提供服务之后将终端设备信息加入到管理列表中维护;
34.任务调度模块:服务端根据任务执行状态、进度以及系统当前可用资源信息更改任务执行的顺序,降低任务完成所需要的平均等待时间。
35.进一步地,负载迁移系统服务端使用存放在服务器设备的基础docker镜像来构建应用软件所需要的高级的应用docker镜像,每一个基础docker镜像都已经安装好各种编译工具以及执行环境的镜像,服务器通过dockerfi le命令指示在基础镜像的更上层次安装好应用程序即可。
36.进一步地,根据dockerfi le构建镜像的过程是自动化完成的,应用程序的开发者编写合理的dockerfi le来指导docker引擎工作;dockerfi le内部编写了各种相关的命令,紧接着跟随着参数和安装镜像的步骤产生一个新的可以用于运行容器的镜像,并且可以为该镜像指定名称和版本号,作为识别镜像的名字;如果已经有了相同名称和版本号的镜像docker引擎会创建新的镜像将其覆盖。
37.进一步地,负载迁移系统服务端创建容器的流程为:首先自动部署模块调用docker引擎读取dockerfi le命令,然后开始检索基础镜像,在基础镜像的最上层构造新的镜像层,拷贝传输过来的应用程序文件集到镜像中,然后执行编译指令,开放容器端口,如果有同名称同版本号的镜像则执行覆盖操作,最后新镜像创建成功。
38.进一步地,应用软件为了适配系统的工作模式同样分为客户端和服务端,应用软件的客户端和服务端分别被负载迁移系统的客户端和服务端管理,负载迁移系统中的应用软件如果没有服务端可用能够具备独立提供全部功能的能力;若负载迁移系统与应用软件的服务端可用,则应用软件客户端在服务端的协助下以更高的效率完成软件中的高资源需求型计算密集型任务且任务完成的质量更好。
39.进一步地,该方法包括如下步骤:
40.s11、首先部署在终端设备上的负载迁移系统客户端通过发现服务检索发送广播到可用的服务器设备并得回应,同时得到负载迁移系统服务端的ip地址;
41.s12、负载迁移系统客户端发送任务请求给负载迁移系统服务端,然后系统服务端给出肯定应答;建立通讯连接,系统客户端发送具体应用软件的镜像构造文件dockefi le和应用程序文件给负载迁移系统服务端,系统服务端根据dockerfi le文件、应用软件文件数据以及基础docker镜像构建应用软件的高级docker镜像,镜像构建完成之后运行容器内的应用服务端;
42.s13、容器启动之后发送应用服务端的ip地址和映射的端口信息给系统服务端,然后系统服务端将应用服务端的ip地址和端口发送给负载迁移系统客户端,进而在转发给应
用客户端;
43.s14、应用客户端获得应用服务端的ip地址和端口之后便建立通讯连接,传输未处理的输入数据给应用服务端,应用服务端接收后进行处理并返回结果给应用客户端完成负载迁移工作。
44.(三)有益效果
45.本发明提出一种基于容器的负载迁移系统设计方法,与现有技术相比,本发明提出了一种基于轻量级虚拟化技术-容器的负载迁移系统的设计方案,为传统终端应用软件提供一个额外的位于服务器设备上拥有更丰富资源的任务模块方便应用软件更好的完成高资源需求型计算密集型任务,以广泛使用的docker容器作为基础工具,将终端应用软件中的相关任务代码拆分成单独模块,封装为网络服务最后部署到docker容器当中启动,当终端应用软件执行相应任务时只需将输入数据通过网络传输给容器,容器内的网络服务执行任务后返回结果。相较于基于虚拟机的负载迁移系统,本发明提供的负载迁移系统的设计方法具有对服务器磁盘空间,cpu以及内存等资源的占用更小、终端在进行负载迁移的准备过程更加简单、负载迁移过程中网络传输的数据更少以及对网络带宽要求更低等优点。
附图说明
46.图1为本发明的技术原理图;
47.图2为本发明的整体架构图;
48.图3为本发明的系统功能模块图;
49.图4为本发明应用镜像构建流程图;
50.图5为本发明的应用软件架构图;
51.图6为本发明的系统核心工作场景图。
具体实施方式
52.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
53.本发明的目的是提出一种基于容器的负载迁移系统的设计方法,本发明选择应用最广泛的docker容器作为实际使用的容器,类似于传统的cs应用,本发明设计的负载迁移系统分为客户端和服务端,分别部署在终端设备和服务器设备上,应用软件也分为客户端和服务端,分别由负载迁移系统的客户端和服务端管理;更改应用软件的执行模式,应用软件具备独自完成全部任务的能力,同时也可以通过负载迁移系统借助服务器设备以更高的效率完成任务。
54.负载迁移系统将应用软件中的高资源需求型计算密集型任务以网络服务的方式部署于docker容器当中,应用软件将输入数据传输给docker容器服务并接收返回的数据得到结果,以此达到拓展终端系统资源的目的。
55.1.技术原理
56.本发明使用docker容器作为负载迁移系统的核心工具,通过将应用软件的某些任务模块封装入容器当中运行于服务器设备上与应用软件客户端进行通信协作完成任务的负载迁移,这里选取docker容器做为本发明的目标容器,docker是一个在linux容器基础之
上的一个开源的容器引擎,是构建在linux容器之上并且基于进程容器(process container)的轻量级虚拟化解决方案,可以方便的对容器进行管理,初衷也是将各种应用软件和它们所依赖的运行环境封装成标准的容器或者镜像从而解决应用程序的冲突依赖、缺少依赖以及平台依赖的问题。
57.docker容器可以让开发者把他们开发出来的应用软件和依赖的环境封装到一个docker容器之中,然后将这个容器转移到任何装有docker引擎的系统中运行,实现应用的快速发布。在系统中容器与容器之间是完全隔离的,两个容器之间不会有任何影响。最重要的是,它们对语言环境、框架系统等没有任何的依赖。
58.docker使用高级多层次统一文件系统(aufs)作为容器的文件系统,aufs是一种能覆盖现有文件系统的层状文件系统,aufs为现有文件创建一个副本文件提供给修改文件的进程,并且在当前的层状文件系统之上建立一个可写层,用于保存该进型修改过得文件,这个机制称为写时复制机制,写时复制机制为本发明的应用镜像的自动构建提供了非常重要的技术基础。
59.因为docker容器运行时具有多个互相依赖的层次化的特点,因此也在最大程度提高docker镜像与容器对系统资源的利用率,加快了运行部署速度,减少对系统资源的占用,如一个apache的运行环境可能是在基础的根文件系统镜像的基础上叠加了包含各种常用工具的镜像,再叠加包含apache及其相关依赖的运行库的镜像,这些镜像由统一文件系统加载合并到统一路径中,以只读的方式存在,在最上层加载一层可写的空白层用来保存当前容器对运行镜像的修改,以便以后的重用。
60.有了层级化的镜像做基础,不同的应用软件或者同一个应用软件的不同实例就可以既能共用已有镜像文件层,包括系统脚本、系统服务以及相关依赖工具等,又可以通过写时复制的机制维护自己的那一份修改过的数据。
61.根据docker容器的以上种种特性,本发明将终端应用软件的高资源需求计算密集型任务模块封装入docker镜像中,并将镜像部署于具有docker引擎的服务器设备去执行,服务器设备不可用时终端应用软件可以独自完成任务,如果服务器设备可用时终端应用软件则可以选择在服务端的协助下一同完成任务,其技术原理如图1所示。
62.2.整体架构
63.基于容器的负载迁移系统的整体架构如图2所示。整个负载迁移系统分为客户端和服务端,运行于终端设备和服务器设备上。负载迁移系统客户端将应用软件的高资源需求型计算密集型任务打包进docker容器当中作为网络服务运行。同时在负载迁移系统的客户端和服务端上分别部署应用软件的客户端和服务端。
64.负载迁移系统客户端在终端设备中保存着每一个应用软件对应的dockerfile,dockerfile由命令组成,docker容器构建时通过dockerfile的命令构建容器环境,每一个应用的dockerfile都可以指导服务器设备上的docker容器构造具备执行环境的docker镜像,在应用软件需要时负载迁移系统客户端将dockerfile传递给负载迁移系统服务端,负载迁移系统服务端接收到dockerfile之后通知docker引擎构造镜像,镜像启动后再通过docker容器与服务器设备的端口映射来作为网络服务为终端的应用软件客户端提供各种资源。
65.3.系统功能模块
66.负载迁移系统功能模块如图3所示。负载迁移系统客户端通过发现服务广播的回应检索到可提供资源的服务器设备,然后将应用软件的部署文件dockerfile和数据发送到负载迁移系统服务端进行具体的docker容器的构建安装;构建完成后负载迁移系统服务端将docker容器映射的端口和ip地址发送给负载迁移系统客户端,负载迁移系统客户端再传递给应用软件客户端以便后续程序执行应用软件可以使用服务器设备的资源。除此之外,负载迁移系统客户端还负责收集终端的资源信息,以便进行决策以及任务的撤回等等,主要可以细分为以下模块:
67.(1)控制模块:对负载迁移系统客户端的其它模块进行全局的管理和控制,并协调其它模块的协同工作;
68.(2)迁移模块:负责将dockerfile和应用软件的部署文件和数据打包发送至服务端。
69.(3)消息处理模块:接受来自服务端的通知消息(包括服务器设备的资源信息和任务执行的实时信息),并将信息转发给控制模块,控制模块根据消息的类型调用其它模块进行工作,同是也负责向负载迁移系统服务端发送负载迁移系统客户端产生的消息。
70.(4)资源管理模块:计算终端设备的可用资源(主要是cpu空置率和可用内存)并估算即将运行的任务所消耗的资源。
71.(5)任务管理模块:监控终端应用软件任务执行状态并记录应用所使用的终端资源。
72.(6)决策模块:根据服务端的资源和任务信息以及客户端可用资源信息等决定是否需要服务端协助执行。
73.(7)服务发现模块:在局域网内广播,检索可用的服务器设备。
74.(8)设备管理模块:管理客户端通过发现服务检索到的可用服务器设备的资源地址等信息。
75.(9)心跳控制模块:对系统使用的服务器设备的存活状态进行监控,定时向服务端发送心跳包,配合服务端的心跳控制模块返回的应答包更新服务器设备的存活状态。
76.负载迁移系统服务端的发现检索应答模块保持开启状态,随时准备接收系统客户端的广播消息并回应。接收到负载迁移系统客户端的请求之后负载迁移系统服务端根据服务器设备的资源状况决定是否提供资源。如果决定提供资源,则后续接受客户端发送dockerfile文件及数据后开始部署工作,调用docker引擎创建新的可运行的docker镜像;负载迁移系统服务端还周期性的对系统的资源进行实时的监控,并且负责对执行任务的调度。负载迁移系统服务端与docker容器内部运行的任务进行实时通讯,掌握任务的进度信息,并发送给负载迁移系统客户端。负载迁移系统服务端模块主要细分为以下模块:
77.(1)控制模块:负责对服务端其它模块进行管理控制,协调其它模块协调工作。
78.(2)消息处理模块:负责接受来自客户端的消息,将消息转发给系统控制模块再转发,同时也给客户端发送控制消息。
79.(3)资源管理模块:计算服务器设备可用资源并估算当前服务器设备的可用资源。
80.(4)任务管理模块:对在服务器设备执行的任务所使用的资源和执行状态进行监控和记录,并更新任务执行的进度信息。
81.(5)自动部署模块:接受负载迁移系统客户端发送过来的dockerfile和文件数据,
结合基础docker镜像构造出对应的应用软件使用的高级docker镜像并启动提供对外资源。
82.(6)心跳控制模块:对所有客户端的存活状态进行监控,并且响应各个客户端发送的心跳包。
83.(7)发现检索应答模块:响应客户端的发现广播,并将服务器设备的地址资源信息发送给客户端。
84.(8)设备管理模块:服务端接受来自客户端的广播后通知客户端自身的地址以及资源信息,在真正为应用软件提供服务之后将终端设备信息加入到管理列表中维护。
85.(9)任务调度模块:服务端根据任务执行状态、进度以及系统当前可用资源等信息更改任务执行的顺序,降低任务完成所需要的平均等待时间。
86.4.应用软件镜像创建流程
87.负载迁移系统服务端使用存放在服务器设备的基础docker镜像来构建应用软件所需要的高级的应用docker镜像,每一个基础docker镜像都是已经安装好各种编译工具以及执行环境的镜像,服务器需要做的就是通过dockerfile命令指示在基础镜像的更上层次安装好应用程序即可。
88.根据dockerfile构建镜像的过程是自动化完成的,因此就需要应用程序的开发者编写合理的dockerfile来指导docker引擎工作。dockerfile内部编写了各种相关的命令,紧接着跟随着参数和安装镜像的步骤产生一个新的可以用于运行容器的镜像,并且可以为该镜像指定名称和版本号,作为识别镜像的名字;如果已经有了相同名称和版本号的镜像docker引擎会创建新的镜像将其覆盖。在本发明所设计的负载迁移系统中,不需要dockerfile完成太过复杂的应用程序环境的安装,系统开发者已经提前在基础镜像中安装好了必须的编译以及运行时环境,只需要应用的开发者完成自己所编写的应用软件服务端的拷贝、编译以及运行等工作。
89.具体流程是,首先自动部署模块调用docker引擎读取dockerfile命令,然后开始检索基础镜像,在基础镜像的最上层构造新的镜像层,拷贝传输过来的应用程序文件集到镜像中,然后执行编译指令,开放容器端口,如果有同名称同版本号的镜像则执行覆盖操作,最后新镜像创建成功。流程图如图4所示。
90.5.应用软件的架构
91.负载迁移系统中的应用软件架构如图5所示,应用软件为了适配系统的工作模式同样分为客户端和服务端,应用软件的客户端和服务端分别被负载迁移系统的客户端和服务端管理,与传统的cs模式的应用软件不同,负载迁移系统中的应用软件如果没有服务端可用也可以具备独立提供全部功能的能力。
92.若负载迁移系统与应用软件的服务端可用,则应用软件客户端可以在服务端的协助下以更高的效率完成软件中的高资源需求型计算密集型任务且任务完成的质量更好。
93.6.系统核心工作场景
94.负载迁移系统中核心工作场景如图6所示,
95.s11、首先部署在终端设备上的负载迁移系统客户端通过发现服务检索发送广播到可用的服务器设备并得回应,同时得到负载迁移系统服务端的ip地址;
96.s12、负载迁移系统客户端发送任务请求给负载迁移系统服务端,然后系统服务端给出肯定应答;建立通讯连接,系统客户端发送具体应用软件的镜像构造文件dockefile和
应用程序文件给负载迁移系统服务端,系统服务端根据dockerfile文件、应用软件文件数据以及基础docker镜像构建应用软件的高级docker镜像,镜像构建完成之后运行容器内的应用服务端;
97.s13、容器启动之后发送应用服务端的ip地址和映射的端口信息给系统服务端,然后系统服务端将应用服务端的ip地址和端口发送给负载迁移系统客户端,进而在转发给应用客户端;
98.s14、应用客户端获得应用服务端的ip地址和端口之后便建立通讯连接,传输未处理的输入数据给应用服务端,应用服务端接收后进行处理并返回结果给应用客户端完成负载迁移工作。
99.以上就是基于容器的负载迁移系统设计方法的主要技术点,其核心在于高级docker镜像的自动生成部署以及客户端软件对于负载迁移系统的适配,对于应用软件的开发者来说,可以按照本发明的模式改造应用适配负载迁移系统,实现拓展终端系统资源的目的。
100.与现有技术相比,本发明提出了一种基于轻量级虚拟化技术-容器的负载迁移系统的设计方案,为传统终端应用软件提供一个额外的位于服务器设备上拥有更丰富资源的任务模块方便应用软件更好的完成高资源需求型计算密集型任务,以广泛使用的docker容器作为基础工具,将终端应用软件中的相关任务代码拆分成单独模块,封装为网络服务最后部署到docker容器当中启动,当终端应用软件执行相应任务时只需将输入数据通过网络传输给容器,容器内的网络服务执行任务后返回结果。相较于基于虚拟机的负载迁移系统,本发明提供的负载迁移系统的设计方法具有对服务器磁盘空间,cpu以及内存等资源的占用更小、终端在进行负载迁移的准备过程更加简单、负载迁移过程中网络传输的数据更少以及对网络带宽要求更低等优点。
101.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献