应用扩容方法、装置、系统、存储介质和电子设备与流程
未命名
09-23
阅读:43
评论:0
1.本公开涉及计算机技术领域,具体而言,涉及一种应用扩容方法、应用扩容装置、应用扩容系统、存储介质和电子设备。
背景技术:
2.随着计算机技术的快速发展与用户数据量的不断攀升,单个容器内的应用负载较大,无法满足正常运行需求,通常会对容器进行应用扩容操作。
3.目前,现有的应用扩容方法主要为冷启动方式,即在目标容器中部署源容器的镜像文件,通过冷启动方式启动应用并为用户提供服务,从而达到了应用扩容的效果。
4.然而上述现有技术在目标容器实现应用扩容后,启动应用进程无法立即为用户提供服务,而需要等待应用完成初始化并完成应用进程的重新加载才能提供服务,该方法造成目标容器的资源浪费,导致应用扩容效率低。
技术实现要素:
5.本公开的目的在于提供一种应用扩容方法、应用扩容装置、应用扩容系统、存储介质和电子设备,进而至少在一定程度上克服了容器资源浪费以及应用扩容效率低的问题。
6.根据本公开的第一方面,提供一种应用扩容方法,应用于源容器,包括:对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件;采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照;获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件;基于进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。
7.可选的,应用于源容器的应用扩容方法还包括:在应用进程启动后,控制应用进程停止运行,以便获取应用进程启动后的文件系统快照。
8.可选的,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件,包括:获取应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,文件参数为文件系统快照中每个文件的状态信息;基于应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,对文件系统快照中的每个文件的内容进行一一比对,确定出文件系统的更新文件。
9.可选的,在生成应用进程内存快照前,还包括:清除应用进程的中间件状态,以使恢复后的应用进程与中间件进行连接,控制恢复后的应用进程运行。
10.可选的,将差异文件发送给目标容器后,还包括:发送差异文件后,控制应用进程运行。
11.根据本公开的第二方面,提供一种应用扩容装置,应用于源容器,包括:生成模块、
确定模块、发送模块、控制模块。
12.具体的,生成模块,用于对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件;生成模块,还用于采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照;确定模块,用于获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件;发送模块,用于基于应用进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。
13.可选的,该装置还包括控制模块,用于在应用进程启动后,源容器控制应用进程停止运行,以便获取应用进程启动后的文件系统快照。
14.可选的,确定模块,还可以用于获取应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,文件参数为文件系统快照中每个文件的状态信息;基于应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,对文件系统快照中的每个文件的内容进行一一比对,确定出文件系统的更新文件。
15.可选的,该装置还包括清除模块,具体用于清除应用进程的中间件状态,以使恢复后的应用进程与中间件进行连接,控制恢复后的应用进程运行。
16.可选的,控制模块用于发送差异文件后,控制应用进程运行。
17.根据本公开的第三方面,提供一种应用扩容方法,应用于目标容器,包括:接收差异文件,差异文件包含应用进程的内存快照和文件系统的更新文件;对内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件;基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。
18.可选的,恢复应用进程后,控制sdk调用恢复实例接口实现中间件恢复,恢复实例用于实现网络连接;恢复中间件状态,以便恢复后的应用进程按照源容器清理中间件状态前的应用进程继续运行。
19.根据本公开的第四方面,提供一种应用扩容装置,应用于目标容器,包括接收模块、生成模块、恢复模块。
20.具体的,接收模块可以用于接收差异文件,差异文件包含应用进程内存快照和文件系统的更新文件;生成模块,用于对应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件;基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。
21.可选的,该装置还包括控制模块,具体用于恢复应用进程后,控制sdk,以使其调用恢复实例接口实现中间件恢复,恢复实例接口为中间件使用应用进程内存快照进行网络连接;恢复模块,用于恢复中间件状态,以便恢复后的应用进程按照源容器清理中间件状态前的应用进程继续运行。
22.根据本公开的第五方面,提供一种应用扩容系统,包括:
23.源容器,用于对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件,采用多个线程对多个备份子文件进行压缩,生成应用进程
的内存快照,获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件,基于应用进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程;目标容器,用于接收差异文件,差异文件包含应用进程内存快照和文件系统的更新文件,对应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件,基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。
24.可选的,应用扩容系统还包括云盘,云盘用于接收源容器发送的差异文件,并将差异文件发送到目标容器。
25.根据本公开的第六方面,提供一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任意一种的应用扩容方法。
26.根据本公开的第七方面,提供一种电子设备,包括:
27.处理器;以及
28.存储器,用于存储处理器的可执行指令;
29.其中,处理器配置为经由执行可执行指令来执行上述任意一种的应用扩容方法。
30.本公开实施例提供的应用扩容方法,通过对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件。然后采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照。获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件。基于应用进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。该方法使用dump备份方法对应用进程的内存镜像文件备份,从而避免了对应用进程在运行过程中产生的数据进行实时完全备份,而是在一次完全备份后只对发生变换的数据进行差异备份,从而减少了对容器内存资源的浪费。然后对备份后生成的备份文件进行分片,并采用多个线程同时进行压缩处理,加快了数据的压缩以及传输速度,提高了应用扩容的效率。最后通过对比应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,确定出内容存在差异的文件,以便目标容器在恢复应用进程后无须进行应用进程初始化以及重新加载,直接达到可为用户提供服务的状态,进一步提高了应用扩容的效率。
31.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
32.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
33.图1为本公开实施例提供的一种应用于源容器的应用扩容方法流程图;
34.图2为本公开实施例提供的一种应用于目标容器的应用扩容方法流程图;
35.图3为本公开实施例提供的一种对于中间件处理方法示意图;
36.图4为本公开实施例提供的一种针对复杂应用的应用扩容方法示意图;
37.图5为本公开实施例提供的一种应用于源容器的应用扩容装置的方框图;
38.图6为本公开实施例提供的一种应用于目标容器的应用扩容装置的方框图;
39.图7为本公开实施例提供的一种应用扩容系统的示意图;
40.图8为本公开实施例提供的一种电子设备的示意图。
具体实施方式
41.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
42.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
43.附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
44.本公开实施例提供的应用扩容方法,可以应用于容器中应用进程的业务访问量较大时的应用场景中。例如:当企业的应用进程中业务访问量较大时,为了保障应用程序的稳定运行,提高用户的体验感,通常使用容器间的应用扩容。
45.目前的现有技术中,对于容器间的应用扩容通常采用冷启动方式,即在目标容器中部署源容器的镜像,然后使用冷启动方式启动应用进程。但是这种冷启动方式,需要在扩容到目标容器后等待应用进程完成配置信息的初始化并完成应用进程的重新加载,才能使扩容后的应用可直接提供服务或达到实现功能的状态。这种方式导致应用扩容效率较低。
46.本公开实施例考虑到上述存在的问题,提出了一种应用扩容方法。该方法将应用进程的内存镜像文件进行备份后分片,然后使用多个线程同时对多个分片后的备份文件进行压缩,提高数据传输的速率,进而提高了应用扩容的效率。同时通过对比源容器中应用进程启动前和应用进程启动后的文件系统快照,确定文件系统的更新文件,以便在目标容器中,应用进程可根据更新文件直接提供服务或达到实现功能的状态。从而避免了现有技术中,在目标容器恢复后的应用进程需要等待应用进程完成配置信息的初始化并完成应用进程的重新加载的问题,保证了应用进程快速达到提供服务或实现功能的状态,提高了应用扩容的效率。
47.图1示意性示出了本公开的示例性实施方式的应用扩容方法的流程图,该方法应
用于源容器,源容器为含有应用进程并需要执行应用扩容,以缓解应用进程压力的的容器。参考图1,该应用扩容方法可以包括以下步骤:
48.s12:对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件。
49.其中,应用进程为应用自动程序,即使用计算机时运行的应用程序。应用进程的内存镜像文件为应用进程在运行时,使用的文件描述信息、中间件参数信息、内存映像、网络连接参数、内核状态参数等进程上下文信息文件,内存镜像文件为应用进程在容器中运行时所必需的文件。备份指将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程,以防系统出现操作失误或系统故障导致数据丢失。分片是将备份文件切割成一系列特定大小的备份子文件。
50.在本公开的示例性实施方式中,对内存镜像文件进行备份可使用dump备份。dump备份可通过指定备份等级(level)实现内存镜像文件的备份,其中level可分为0-9个等级,level0为完整备份,即备份所有文件,level1为差异备份,即备份内容出现差异的文件。dump备份具体的实现方式为第一次备份时使用level0实现内存镜像文件的完整备份,在第二次备份时,在level0完整备份的基础上使用level1仅备份有差异的部分,即文件内容出现修改、新增、减少等。
51.s14:采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照。
52.其中,线程指进程中一个单一顺序的控制流,一个进程可并发多个线程,多个线程可并行执行任务。应用进程的内存快照为应用进程的内存数据在某一时刻的状态记录,并以文件的形式储存在磁盘中。
53.具体的,多个备份子文件可分别由多个线程同时并发执行压缩操作,压缩可以使用压缩工具或者压缩算法,例如lz4压缩算法,lz4压缩算法是一种无损压缩算法,其压缩以及解压缩速度极快,即压缩、解压缩的效率高。
54.应理解的是,线程的数目可以与备份子文件的数目相同,也可以多于或少于备份子文件的数目,当线程的数目不小于备份子文件的数目时,数据压缩的效率更佳。本公开不对线程数目进行具体限定,均在本公开的保护范围中。
55.s16:获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件。
56.其中,文件系统快照为对某一时刻的文件系统进行快照操作而生成的,通过文件系统快照可查看每个文件的状态信息。更新文件为内容存在差异的文件集合,例如:内容被修改的文件、新增文件、删减文件等。
57.在一种可能的实现方式中,在应用进程启动后,控制应用进程停止运行,以获取应用进程启动后的文件系统快照。
58.在本公开的示例性实施方式中,当应用进程启动后,源容器需要应用扩容时,可基于一个预设端口控制sdk以使应用进程停止运行。应用进程停止运行后,文件系统中的文件内容不会再发生变化,此时可生成应用进程启动后的文件系统快照。
59.控制应用进程停止运行后再获取应用进程启动后的文件系统快照,可以保证获取的应用进程启动后的文件系统快照内容不会再被修改而导致在目标容器恢复失败的问题,
从而保证了应用扩容的成功率,进一步的提高了应用扩容的效率。
60.进一步的,在确定应用进程启动前的文件系统快照与应用进程启动后的文件系统快照后,获取应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,其中文件参数为文件系统快照中每个文件的状态信息。基于应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,对文件系统快照中的每个文件的内容进行一一比对,确定出文件系统的更新文件。
61.具体的,文件的状态信息为文件的绝对路径、大小、最后操作时间等信息,该状态信息可在文件系统快照中获取。文件系统中包含了大量的文件,每个文件可通过其状态信息快速定位文件位置,并应用进程启动前的文件系统快照与应用进程启动后的文件系统快照中同一文件进行内容的比对,以找出文件系统中内容存在差异的文件集合,例如:内容被修改的文件、新增文件、删减文件等。这些文件集合构成了文件系统的更新文件,再对生成后的更新文件使用压缩算法进行压缩处理。例如:可使用lz4压缩算法。
62.通过应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数可以快速定位每个文件的具体位置,实现同一文件内容的快速对比,减少确定文件系统的更新文件的时间,进一步提升了应用扩容效率。
63.s18:基于应用进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。
64.具体的,将获取的应用进程的内存快照与文件系统的更新文件进行压缩生成差异文件,例如使用lz4压缩算法。
65.在本公开的示例性实施方式中,发送差异文件后,源容器控制应用进程运行。
66.其中,差异文件完成传送后,源容器控制sdk退出对应用进程的控制,从而使应用进程可继续为用户提供服务。同时,差异文件可被上传到云盘中进行传输。
67.本公开实施例提供的应用扩容方法,通过对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件。然后采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照。获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件。基于应用进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。该方法使用dump备份方法对应用进程的内存镜像文件备份,从而避免了对应用进程在运行过程中产生的数据进行实时完全备份,而是在一次完全备份后只对发生变换的数据进行差异备份,从而减少了对容器内存资源的浪费。然后对备份后生成的备份文件进行分片,并采用多个线程同时进行压缩处理,加快了数据的压缩以及传输速度,提高了应用扩容的效率。最后通过对比应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,确定出内容存在差异的文件,以便目标容器在恢复应用进程后无须进行应用进程初始化以及重新加载,直接达到可为用户提供服务的状态,进一步提高了应用扩容的效率。
68.与图1所示的应用扩容方法对应,图2示意性示出了本公开的示例性实施方式的应用于目标容器的应用扩容方法流程图。参考图2,该应用于目标容器的应用扩容方法可以包括以下步骤:
69.s22:接收差异文件,差异文件包含应用进程内存快照和文件系统的更新文件。
70.在本公开的示例性实施方式中,上述源容器生成差异文件后,可将该差异文件传送到云盘。目标容器则可从云盘中下载,以接收到上述差异文件。
71.s24:对应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件。
72.具体的,差异文件中包含应用进程内存快照,应用进程内存快照为压缩后的备份文件。在恢复应用进程内存快照时,可对备份文件进行分片,从而将备份文件切割为多个第一备份子文件,并使用多个线程同时进行解压缩生成多个第二备份子文件,目标容器可根据解压缩后的第二备份子文件恢复应用进程。其中,解压缩操作可使用lz4压缩算法,以提高解压缩的效率。
73.在本公开的示例性实施方式中,在恢复应用进程内存快照时,还可以使用多个线程对备份文件直接进行解压缩操作,但是该方法对目标容器的内存资源要求较高。
74.s26:基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。
75.在本公开的示例性实施方式中,使用第二备份子文件进行恢复的应用进程启动后,可根据文件系统的更新文件直接达到可运行状态,无需重新进行应用进程初始化和数据加载。例如:源容器中有智能空调控制的应用进程,用户a为已注册用户并与家庭中的空调设备a、b绑定,当该应用扩容到目标容器时,目标容器可根据文件系统的更新文件直接获取用户a以及其与用户绑定的空调设备a、b,即用户a无需再次注册或与设备重新绑定,应用进程可直接为用户a提供空调a、b的控制服务。
76.在本公开示出的应用扩容方法中,目标容器接收差异文件,差异文件包含应用进程内存快照和文件系统的更新文件,对应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件,最后基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。该方法中,目标容器将应用进程内存快照进行分片后再同时进行解压缩,减少了恢复应用进程的时间。同时文件系统的更新文件使得恢复后的应用进程无需进行初始化和进程的重新加载,直接达到可提供服务的状态,从而提升了应用扩容的效率。
77.复杂应用为实现的功能以及与系统软件交互较为复杂的应用进程,与系统软件的交互以及多个应用进程之间的通信等均需要使用中间件。中间件为通过网络实现连接应用进程的各部分或连接应用进程与系统软件,以达到资源、功能共享的目的。
78.在上述图1和图2的基础上,对含有中间件的应用,将结合图3对中间件处理方法进行详细说明。如图3所示,图3为本公开实施例提供的一种中间件处理方法示意图。
79.首先,在步骤s32中,清除中间件状态。清除应用进程的中间件状态可以使恢复后的应用进程与中间件进行连接,控制恢复后的应用进程运行。其中,中间件状态为中间件在应用进程运行过程中的状态信息,在应用扩容到目标容器时,因容器互联网协议地址(internet protocol address,ip)的改变,导致中间件的状态无法更新到目标容器中,易导致应用扩容失败。
80.具体的,在应用进程运行时,中间件可通过网络连接帮助应用进程与源容器内的系统软件交互,以实现应用进程为用户提供功能或服务的效果。同时中间件会实时生成状态信息,例如:工作状态是否异常、监管消息队列管理器运行状态、通道运行状态等。中间件在应用进程运行过程中生成的中间件状态,会在应用扩容到目标容器时因网络连接中断出
现状态异常,从而导致恢复应用进程的失败,进而应用扩容失败。因此,需要在获取应用进程的内存镜像文件前,优先清除中间件状态,以保证在进行备份操作时,中间件是无状态的。
81.其次,在步骤s34中,注册恢复实例接口。具体的,中间件在应用进程搭建完成后,会向sdk注册恢复实例接口。当源容器需要应用扩容时,为避免中间件状态异常影响目标容器中应用进程的恢复,会通过预设端口驱动sdk调用清除中间件实例接口完成清除中间件状态。例如:当容器1中的应用进程可以正常为用户提供服务时,应用进程中的中间件均向sdk注册对应的恢复实例接口。当用户量出现骤增,容器1中的应用进程无法为用户提供正常服务,可将容器1的应用扩容到容器2,容器1可通过清除中间件实例接口清除中间件状态,而容器2可通过恢复实例接口实现网络的重新连接。
82.在步骤s36中,同步在目标容器sdk中生成了各中间件注册的恢复实例接口。在源容器的sdk中注册恢复实例接口,可在目标容器恢复的sdk中同步各中间件预先注册的恢复实例接口
83.应该理解的是,一个应用进程中含有的中间件数目可以为0,也可以为一个或多个,对此不进行具体限定。
84.最后,当应用进程在目标容器中恢复后便可为业务端提供服务或实现功能。在步骤s38中,调用恢复实例接口实现应用进程恢复。
85.在本公开的示例性实施方式中,对于复杂应用进程仍需要进行中间件恢复。当目标容器监测到应用进程恢复后,便控制sdk调用中间件向其预先注册的恢复实例接口,实现网络的重新连接,中间件可通过网络实现应用进程与系统软件中间的交互,恢复中间件状态,从而为业务端提供服务。
86.在该实施例中,针对复杂应用的应用扩容方法,在源容器中清理中间件状态,并在目标容器中恢复应用进程时调用恢复实例接口实现网络重新连接,从而恢复中间件与中间件状态,从而实现了复杂应用的扩容过程,扩大了应用扩容的范围,进一步提高了应用扩容的效率。
87.在上述任一实施例的基础上,将参考图4对本公开的示例性实施方式的应用扩容方法的整个扩容过程进行详细说明。图4为本公开实施例提供的一种整体应用扩容方法的过程示意图。
88.当源容器内的应用进程启动后,便开始进入应用扩容过程。首先,在步骤s402中,停止应用进程,并清理中间件状态。
89.在本公开的示例性实施方式中,源容器可控制sdk,以便使应用进程停止运行,并清理中间件状态。其中,应用进程停止运行可确保中间件不会产生新的状态,且中间件状态在快速恢复应用时易出现状态异常的现象,从而导致应用扩容失败,因此优先使应用进程停止运行并清理中间件状态。同时为了便于在目标容器中恢复中间件,可在清理中间件状态前,中间件预先向sdk注册恢复实例接口。
90.清理中间件状态后,执行步骤s404,生成应用进程内存快照。示例性的,获取应用进程的内存镜像文件,内存镜像文件中包含了应用进程运行时使用的必要文件,例如:文件描述信息、中间件参数信息、内存映像、网络连接参数、内核状态参数等应用进程上下文信息文件。对获取的内存镜像文件进行备份后分片以生成多个备份子文件,并采用多个线程
对多个备份子文件同时进行压缩,生成应用进程的内存快照。
91.在步骤s406中,生成文件系统的更新文件。在本公开的示例性实施方式中,分别获取应用进程启动前的文件系统快照以及应用启动后的文件系统快照,其中应用启动后的文件系统快照为sdk控制应用进程停止运行后采集的。根据文件系统快照,可分别获取应用进程启动前与应用进程启动后的文件系统中每个文件的状态信息,例如:文件存储的绝对路径、文件大小以及最后操作时间等。这些状态信息可帮助源容器快速定位同一文件在应用进程启动前的文件系统和应用进程启动后的文件系统的位置,并进行文件内容的比对,以便快速确定内容存在差异的文件集合,生成文件系统的更新文件。
92.在本公开的示例性实施方式中,在生成文件系统的更新文件后,为了加快文件传输速率,可对更新文件进行压缩处理,其中压缩可使用压缩算法实现快速压缩,例如:可使用lz4压缩算法。
93.在步骤s408中,发送至云盘。源容器将生成的应用进程的内存快照与文件系统的更新文件采用压缩算法进行处理,并生成差异文件发送到云盘。最后,在步骤s410中,还原应用进程。源容器控制sdk执行恢复应用进程的运行,源容器可继续为用户提供服务或实现功能。
94.同时,确定目标容器为应用扩容的容器后,目标容器可从云盘中下载差异文件,其中差异文件包含了应用进程内存快照和文件系统的更新文件。在步骤s414中,还原应用进程内存快照以恢复应用进程。应用进程内存快照具体为应用进程内存镜像文件的备份文件,因此可对应用进程内存快照,即备份文件进行分片,并采用多个线程同时进行解压缩并依次导入目标容器,进而完成了应用进程的恢复。
95.依据应用进程内存快照恢复的应用进程无法达到为用户提供服务或实现功能的状态,因此需要优先执行步骤s412。在s412中,还原文件系统的更新文件。对文件系统的更新文件进行解压缩操作,以在目标容器中恢复文件系统。目标容器中的应用进程依据更新文件获取源容器已完成的数据,而无需重新进行应用进程的初始化和数据加载,便可直接提供服务或实现功能。
96.最后,在步骤s416中,恢复中间件并恢复中间件状态。因应用扩容后的目标容器相较源容器,容器的ip发生变化,导致中间件的网络连接中断,而无法实现应用进程与系统软件之间的通信等功能,进而无法提供服务,因此需要实现中间件的恢复。
97.具体的,本公开实施例示出了一种恢复中间件的方法,即在sdk中增加了恢复实例接口。当目标容器监测到应用进程恢复后,便控制sdk调用中间件向其预先注册的恢复实例接口,通过恢复实例接口可输入业务参数进行网络重新连接,进而恢复中间件状态。其中,业务参数为源容器中的应用进程已生成的参数信息,也可以为目标容器中重新传入的,具体情况可根据应用进程业务端的具体需求决定。
98.表1为本公开实施例示出对应用a、应用b、应用c以及应用d分别采用现有技术中冷启动方式与本公开实施例的应用扩容耗时的对比结果。由表1的对比结果可知,本公开提供的应用扩容方法可提高应用扩容效率。
99.表1
[0100] 冷启动方式耗时本公开启动耗时应用a39.878秒3.853秒
应用b57.163秒5.133秒应用c18.932秒4.652秒应用d2分钟8.225秒
[0101]
在本实施例中,通过对源容器中应用进程的内存镜像文件备份后分片,并采用多个线程同时进行压缩以及目标容器中对差异文件的备份文件进行分片后多线程解压缩提高了文件传输和数据处理的速率,同时生成文件系统的更新文件,以便在目标容器中恢复应用进程时可直接达到为用户提供服务或实现功能的状态,提升了恢复应用进程的速率,进而提高了应用扩容的效率。
[0102]
图5示意图示出了本公开的示例性实施方式的应用扩容装置的方框图。如图5所示,本公开的示例性实施方式的应用于源容器的应用扩容装置5可以包括:生成模块51、确定模块53、发送模块55、控制模块57及清除模块59。
[0103]
具体的,生成模块51,可以用于对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件;生成模块51,还用于采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照;确定模块53,用于获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件;发送模块55,用于基于进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。
[0104]
根据本公开的示例性实施例,该装置还包括控制模块57,具体用于在应用进程启动后,控制应用进程停止运行,以便获取应用进程启动后的文件系统快照。
[0105]
根据本公开的示例性实施例,确定模块53,还用于获取应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,文件参数为文件系统快照中每个文件的状态信息;基于应用进程启动前的文件系统快照的文件参数与应用进程启动后的文件系统快照的文件参数,对文件系统快照中的每个文件的内容进行一一比对,确定出文件系统的更新文件。
[0106]
根据本公开的示例性实施例,该装置还包括清除模块59,具体用于清除应用进程的中间件状态,以使恢复后的应用进程与中间件进行连接,控制恢复后的应用进程运行。
[0107]
根据本公开的示例性实施例,控制模块57,还用于发送差异文件后,控制应用进程运行。
[0108]
图6示意图示出了本公开的示例性实施方式的应用于目标容器的应用扩容装置的方框图。如图6所示,本公开的示例性实施方式的应用于目标容器的应用扩容装置6包括:接收模块61、生成模块63、恢复模块65及控制模块67。
[0109]
具体的,接收模块61,用于接收差异文件,差异文件包含应用进程内存快照和文件系统的更新文件;生成模块63,用于对应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件;恢复模块65,用于基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。
[0110]
根据本公开的示例性实施例,该装置还包括控制模块67,用于恢复应用进程后,控制sdk调用恢复实例接口实现中间件恢复,恢复实例可实现网络连接;恢复模块65,还用于恢复中间件状态,以便恢复后的应用进程按照源容器清理中间件状态前的应用进程继续运
行。
[0111]
利用上述应用于源容器的应用扩容装置以及应用于目标容器的应用扩容装置,目标容器将应用进程内存快照进行分片后再同时进行解压缩,减少了恢复应用进程的时间。同时文件系统的更新文件使得恢复后的应用进程无需进行初始化和进程的重新加载,直接达到可提供服务的状态,从而提升了应用扩容的效率。
[0112]
进一步的,本示例实施方式还提供了一种应用扩容系统。
[0113]
参考图7所示,应用扩容系统包括源容器71、目标容器73以及云盘75。其中:
[0114]
源容器71,可以用于对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件,采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照,获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件,基于应用进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。
[0115]
目标容器73,用于接收差异文件,差异文件包含应用进程内存快照和文件系统的更新文件,对应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对多个第一备份子文件进行解压缩,生成多个第二备份子文件,基于多个第二备份子文件与文件系统的更新文件,恢复应用进程。
[0116]
云盘75,用于接收源容器发送的差异文件,并将差异文件发送到目标容器。
[0117]
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
[0118]
在本公开的示例性实施例用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0119]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0120]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0121]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有
线、光缆、rf等等,或者上述的任意合适的组合。
[0122]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0123]
在本公开的示例性实施例中,还提供了一种能够实现上述应用扩容方法的电子设备。
[0124]
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0125]
下面参照图8来描述根据本发明的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0126]
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840。
[0127]
其中,存储单元存储有程序代码,程序代码可以被处理单元810执行,使得处理单元810执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元810可以执行如图1中所示的步骤s12至步骤s18或如图2中所示的步骤s22至步骤s26。
[0128]
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。
[0129]
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0130]
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0131]
电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不
限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0132]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
[0133]
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0134]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0135]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
[0136]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
技术特征:
1.一种应用扩容方法,其特征在于,应用于源容器,包括:对应用进程的内存镜像文件进行备份,生成备份文件,并对所述备份文件进行分片,生成多个备份子文件;采用多个线程对所述多个备份子文件进行压缩,生成所述应用进程的内存快照;获取所述应用进程启动前的文件系统快照和所述应用进程启动后的文件系统快照,将所述应用进程启动前的文件系统快照与所述应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件;基于所述应用进程的内存快照和所述文件系统的更新文件,生成差异文件,发送所述差异文件,以便目标容器基于所述差异文件恢复所述应用进程。2.根据权利要求1所述的应用扩容方法,其特征在于,包括:在所述应用进程启动后,控制所述应用进程停止运行,以便获取所述应用进程启动后的文件系统快照。3.根据权利要求1所述的应用扩容方法,其特征在于,将所述应用进程启动前的文件系统快照与所述应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件,包括:获取应用进程启动前的文件系统快照的文件参数与所述应用进程启动后的文件系统快照的文件参数,所述文件参数为文件系统快照中每个文件的状态信息;基于所述应用进程启动前的文件系统快照的文件参数与所述应用进程启动后的文件系统快照的文件参数,对文件系统快照中的每个所述文件的内容进行一一比对,确定出文件系统的更新文件。4.根据权利要求1所述的应用扩容方法,其特征在于,在生成应用进程内存快照前,还包括:清除所述应用进程的中间件状态,以使恢复后的应用进程与中间件进行连接,控制所述恢复后的应用进程运行。5.根据权利要求2所述的应用扩容方法,将所述差异文件发送给目标容器后,还包括:发送所述差异文件后,控制所述应用进程运行。6.一种应用扩容方法,其特征在于,应用于目标容器,包括:接收差异文件,所述差异文件包含应用进程内存快照和文件系统的更新文件;对所述应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对所述多个第一备份子文件进行解压缩,生成多个第二备份子文件;基于所述多个第二备份子文件与所述文件系统的更新文件,恢复应用进程。7.根据权利要求6所述的应用扩容方法,其特征在于,恢复应用进程后,还包括:控制sdk调用恢复实例的接口实现中间件恢复,所述恢复实例用于实现网络连接;恢复中间件状态,以便恢复后的应用进程按照源容器清理中间件状态前的应用进程继续运行。8.一种应用扩容系统,其特征在于,包括:源容器,用于对应用进程的内存镜像文件进行备份,生成备份文件,并对所述备份文件进行分片,生成多个备份子文件,采用多个线程对所述多个备份子文件进行压缩,生成所述应用进程的内存快照,获取所述应用进程启动前的文件系统快照和所述应用进程启动后的
文件系统快照,将所述应用进程启动前的文件系统快照与所述应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件,基于所述进程的内存快照和所述文件系统的更新文件,生成差异文件,发送所述差异文件;目标容器,用于接收差异文件,所述差异文件包含应用进程的内存快照和文件系统的更新文件,对所述应用进程内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对所述多个第一备份子文件进行解压缩,生成多个第二备份子文件,基于所述多个第二备份子文件与所述文件系统的更新文件,恢复应用进程。9.根据权利要求8所述的应用扩容系统,其特征在于,包括:云盘,用于接收所述源容器发送的所述差异文件,并将所述差异文件发送到所述目标容器。10.一种应用扩容装置,其特征在于,包括:生成模块,用于对应用进程的内存镜像文件进行备份,生成备份文件,并对所述备份文件进行分片,生成多个备份子文件;生成模块,还用于采用多个线程对所述多个备份子文件进行压缩,生成所述应用进程的内存快照;确定模块,用于获取所述应用进程启动前的文件系统快照和所述应用进程启动后的文件系统快照,将所述应用进程启动前的文件系统快照与所述应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件;发送模块,用于基于所述应用进程的内存快照和所述文件系统的更新文件,生成差异文件,发送所述差异文件,以便目标容器基于所述差异文件恢复所述应用进程。11.一种应用扩容装置,其特征在于,包括:接收模块,用于接收差异文件,所述差异文件包含应用进程的内存快照和文件系统的更新文件;生成模块,用于对所述内存快照的备份文件进行分片,生成多个第一备份子文件,并采用多个线程对所述多个第一备份子文件进行解压缩,生成多个第二备份子文件;恢复模块,用于基于所述多个第二备份子文件与所述文件系统的更新文件,恢复应用进程。12.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的应用扩容方法。13.一种电子设备,其特征在于,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至7中任一项所述的应用扩容方法。
技术总结
本公开提供了一种应用扩容方法、应用扩容装置、应用扩容系统、存储介质和电子设备,涉及计算机技术领域。该应用扩容方法包括:对应用进程的内存镜像文件进行备份,生成备份文件,并对备份文件进行分片,生成多个备份子文件,采用多个线程对多个备份子文件进行压缩,生成应用进程的内存快照,获取应用进程启动前的文件系统快照和应用进程启动后的文件系统快照,将应用进程启动前的文件系统快照与应用进程启动后的文件系统快照进行比对,确定出文件系统的更新文件,基于进程的内存快照和文件系统的更新文件,生成差异文件,发送差异文件,以便目标容器基于差异文件恢复应用进程。本公开可以提高应用扩容的效率。以提高应用扩容的效率。以提高应用扩容的效率。
技术研发人员:李洁 曹龙 桂创华 柳俊中
受保护的技术使用者:北京京东世纪贸易有限公司
技术研发日:2022.03.16
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/