具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1及图2,图1为本发明实施例提供的跨应用生命周期的内存快照管理方法的流程示意图;图2为本发明实施例提供的跨应用生命周期的内存快照管理方法的应用场景示意图;该跨应用生命周期的内存快照管理方法应用于集群服务器10的内存管理器11中,该跨应用生命周期的内存快照管理方法通过安装于集群服务器10的内存管理器11中的应用软件进行执行,集群服务器10中还包括多个处理服务器12,其中,集群服务器10构建的多个处理服务器12互为备份,如可以是一个主处理服务器12与任意数量的备处理服务器组合成集群服务器10,则处理服务器12基于相同的算法对相同的消息进行处理,内存管理器11与每一所述处理服务器12之间均建立网络连接以实现数据信息的传输,所述处理服务器12用于运行应用程序;集群服务器10即是用于执行跨应用生命周期的内存快照管理方法以使应用程序稳定运行并为客户提供服务的服务器端,如企业或政府部门所构建的集群服务器,内存管理器11即是用于对内存进行分配及管理的子服务器。如图1所示,该方法包括步骤S110~S160。
S110、若接收到来自任一所述处理服务器的应用内存分配请求,在所述内存管理器的存储空间中分配与所述应用内存分配请求对应的存储单元。
内存管理器中配置有内存,内存即为随机存取存储器(Random Access Memory,RAM),内存管理器的内存中配置有存储空间,存储空间即为内存中的可快照空间,存储空间可用于应用程序的运行信息进行存储;内存中还可配置有其他不可快照空间,不可快照空间可用于数据库接口申请并使用。如处理服务器中应用程序启动时即需生成对应应用内存分配请求并发送至内存管理器,内存管理器可接收任一处理服务器的应用内存分配请求,并对应用内存分配请求分配对应的存储单元,存储空间中包含多个存储单元,存储单元即可用于存储应用程序在处理数据过程中的运行数据。集群服务器中可配置主处理服务器及一个或多个备处理服务器,处理服务器之间基于共识算法对相同的消息进行处理,每一个运行了用户应用的处理服务器,有着各自的应用内存分配器实例。各自处理服务器的内存分配器请求,由各自的内存分配器进行处理;当主处理服务器或备处理服务器接收到指定的业务消息后,则会对对应业务消息进行处理的需求即会产生一个应用内存分配请求,应用内存分配请求可以是应用在初始化过程中需要为该应用运行对内存区域进行初次分配的请求,还可以是应用在处理消息时,根据业务处理流程的需求,需要重新调整所分配的内存区域的请求。在整个集群中,由于 “状态机复制”的容错模型,因此每一个服务器的应用状态应当大致相同。其中,内存管理器根据应用内存分配请求对存储单元进行分配可基于lock inc操作实现,lock inc操作为内存管理器中处理单元(CPU单元)所提供的基于原子操作的一个指令,基于该原子操作指令进行多线程处理时,即可保证对存储单元进行分配的所有操作均是串行进行的。
在一实施例中,如图3所示,步骤S110之后还包括步骤S1101。
S1101、为已被分配的所述存储单元添加数据锁以对所述存储单元进行锁定。
将存储单元分配后,即可为被分配的存储单元添加数据锁,添加数据锁的存储单元即被锁定无法被再次分配。
S120、根据所述对应的存储单元及所述应用内存分配请求生成对应的内存分配信息并存储至预置的管理空间。
可根据所分配的存储单元及应用内存分配请求生成内存分配信息,内存分配信息即为与所分配的存储单元对应的信息,内存分配信息可用于对相应存储单元中所存储的信息进行管理。
在一实施例中,如图4所示,步骤S120包括子步骤S121和S122。
S121、获取所述存储单元中的单元管理信息及所述应用内存分配请求中的请求基础信息进行组合以生成内存分配信息。
存储单元中包含对应的单元管理信息,单元管理信息包括存储单元的单元编码、存储地址及单元可用空间等用于管理存储单元的信息,应用内存分配请求中包含对应的请求基础信息,请求基础信息包含应用标识及请求时间等信息,可对获取到的单元管理信息及请求基础信息并进行组合以生成内存分配信息。
S122、将所述内存分配信息存储至所述管理空间的管理数组中与所述单元管理信息对应的单元格。
管理空间中配置有管理数组,管理数组为一个用于存储单元管理信息的二维数组,管理数组由多个单元格组成,每一单元格与对应的一个单元编码相对应,则可获取与内存分配信息中单元编码相匹配的一个单元格,并将所生成的单元管理信息输入至与单元编码相匹配的单元格中进行存储。
S130、根据预置的快照周期采集与所述管理空间中每一内存分配信息对应应用程序的运行数据并输入所述存储空间中对应的存储单元进行存储。
根据快照周期对管理空间中每一内存分配信息对应的应用程序的运行数据进行周期性采集,并将每一应用程序对应的运行数据分别输入存储空间中对应存储单元进行存储。其中,快照周期即为对应用程序中运行数据进行采集的周期信息,快照周期中配置有周期时间,如周期时间可以是5秒,则每隔5秒对每一内存分配信息对应的应用程序中的运行数据进行一次采集。
在一实施例中,如图5所示,步骤S130包括子步骤S131、S132和S133。
S131、若到达采集时间点,根据所述管理空间的管理数组中存储的内存分配信息确定与每一所述内存分配信息对应的数据采集锚点;所述采集时间点为与上一采集时间点之间间隔所述快照周期中周期时间的时间点。
到达采集时间点,即可根据管理数组中存储的内存分配信息确定对应的数据采集锚点,采集时间点即为与上一采集时间点间隔周期时间的时间点。数据采集锚点即为对每一内存分配信息中应用程序各项数据进行采集的锚点,锚点可以是应用的与数据或消息处理进度相关的一个位置信息,对每一应用程序需要采集对应的一项或多项数据,可根据内存分配信息中应用标识确定对应的一个或多个项目标识,将项目标识与对应内存分配信息中的处理服务器地址进行组合,以生成与该内存分配信息对应的数据采集锚点。
例如,某一内存分配信息中处理服务器地址为:115.**.132.44:801;与该内存分配信息中应用标识对应的项目标识为key1、key4和key9,则可对应生成三个锚点:115.**.132.44:801_ key1、115.**.132.44:801_ key4及115.**.132.44:801_ key9作为与该内存分配信息对应的数据采集锚点。
S132、根据所述数据采集锚点对每一所述内存分配信息对应应用程序中当前运行的数据进行采集,得到与每一所述内存分配信息对应的运行数据。
根据每一内存分配信息对应的数据采集锚点对对应应用程序中当前运行的数据进行采集,得到包含一项数据或多项数据的运行数据。一个内存分配信息对应一个应用程序,则根据每一应用程序对应的数据采集锚点可分别采集得到每一应用程序对应的运行数据。
S133、根据每一所述内存分配信息的运行数据分别对所述存储空间中与每一所述内存分配信息对应存储单元中所存储的数据进行更新。
根据内存分配信息中的存储地址确定对应的存储单元,并将内存分配信息对应的运行数据存储至相应存储单元中,若存储单元中已存储有数据,则根据运行数据对存储单元中已存储的数据进行更新,则此时存储单元内存储有对应应用程序最新的一组运行数据。
S140、实时检测与每一所述处理服务器中所运行应用程序的运行状态是否出现异常。
对处理服务器中运行的应用程序进行实时检测,以判断当前运行的应用程序的运行状态是否出现异常,如可获取应用程序的状态码,通过状态码是否与预置的异常状态码相匹配,以判断应用程序的运行状态是否出现异常。
S150、若判断得到任一所述应用程序的运行状态出现异常,根据预存的应用框架数据表对与异常应用程序对应的存储单元进行数据解析,以得到与所述异常应用程序对应的应用运行解析数据。
若判断任一应用程序的运行状态出现异常,出现异常的应用程序可称为异常应用程序,内存管理器中配置有应用框架数据表,应用框架数据表中包含与每一应用程序对应的应用框架信息,应用框架信息即为对应用程序基本框架、数据类型进行描述的信息,根据应用框架数据表即可对异常应用程序对应存储单元中所存储的运行数据进行数据解析,从而得到对应的应用运行解析数据。
在一实施例中,如图6所示,步骤S150包括子步骤S151和S152。
S151、从所述应用框架数据表中获取与所述异常应用程序对应的应用框架信息。
由于从应用程序中获取的运行信息为不包含特定结构、特定格式的数据信息,如从运行信息为二进制表示的数据信息,为对所获取到的运行数据进行恢复处理,需要对运行信息进行解析。可根据异常应用程序的应用标识从应用框架数据表中获取与该应用标识相匹配的应用框架信息。
S152、根据所述应用框架信息对所述存储空间与所述异常应用程序对应存储单元中所存储的运行数据进行数据结构解析,得到与所述异常应用程序对应的应用运行解析数据。
根据异常应用程序的单元地址从对应存储单元中获取所存储的运行数据,并根据获取到的应用框架信息对运行数据进行数据结构解析,具体的,可根据应用框架信息中的应用程序基本框架对运行数据进行结构划分得到多个数据段,并根据应用框架信息中的数据类型分别对每一数据段进行数据解析,也即是将以二进制表示的数据转换为对应数据类型(如数字类型、字母类型、汉字类型等)进行表示的数据,从而获取到每一数据段对应的解析数据得到应用运行解析数据。
S160、根据所述管理空间中与所述异常应用程序对应的内存分配信息将所述应用运行解析数据恢复至任一其它未出现异常的处理服务器继续进行处理。
根据管理空间中与异常应用程序对应的内存分配信息将所得到的应用运行解析数据恢复至任一其它未出现异常的处理服务器,则该处理服务器可在获取应用运行解析数据继续进行处理,也即是对最新一次采集并保存的运行数据继续进行处理,提高对数据进行处理的效率。也即是当前应用程序发生了崩溃等异常问题,因此未出现异常的处理服务器可以将其它出现异常的处理服务器对应的内存快照信息复制过来,进行加载后继续进行处理,这一过程也即实现了跨应用生命周期的数据处理,此处的应用程序生命周期,指的是一个应用程序从开始运行到结束运行的整个过程。
在一实施例中,如图7所示,步骤S160包括子步骤S161和S162。
S161、从所述管理空间与所述异常应用程序对应单元格中所存储的内存分配信息中获取与所述异常应用程序对应的恢复配置信息;
可从管理空间中获取与异常应用程序对应单元格中所存储的内存分配信息,并从对应内存分配信息中提取与异常应用程序对应的恢复配置信息,恢复配置信息中包括内存分配信息中处理服务器地址、应用标识等配置信息。
S162、将所述应用运行解析数据发送至任一其它未出现异常的处理服务器,以使所述未出现异常的处理服务中的应用程序继续处理所述应用运行解析数据。
可根据恢复配置信息将应用运行解析数据发送至任一其它未出现异常的处理服务器,未出现异常的处理服务器即可对应用运行解析数据进行处理,也即实现了对最新一次采集并保存的运行数据继续进行处理。
在一实施例中,如图8所示,步骤S160之后还包括步骤S1601和S1602。
S1601、若接收到来自任一所述处理服务器的应用结束运行信息,获取所述管理空间的管理数组中与所述应用结束运行信息对应的内存分配信息作为目标内存分配信息。
若接收到任一处理服务器发送的应用结束运行信息,则获取管理数组中与应用结束运行信息对应的内存分配信息作为目标内存分配信息。
S1602、删除所述存储空间中与所述目标内存分配信息对应的存储单元所添加的数据锁并清空所述存储单元中已存储的数据信息。
根据目标内存分配信息中单元地址确定存储空间中与应用结束运行信息对应的存储单元,删除应用结束运行信息对应存储单元中所添加的数据锁,并清空该存储单元中已存储的数据信息。通过这一处理过程,即可对已加锁的存储单元进行解锁,并释放存储单元中的存储资源,之后其它应用程序可再次使用已解锁且已释放存储资源的存储单元。
在本发明实施例所提供的跨应用生命周期的内存快照管理方法中,在内存管理器的存储空间中为接收到的应用内存分配请求分配对应的存储单元并生成对应的内存分配信息存储至管理空间,根据快照周期对管理空间中每一内存分配信息对应应用程序的运行数据进行周期性采集并存储至对应存储单元中,实时检测应用程序运行状态是否出现异常,若出现异常则根据应用框架数据表对异常应用程序对应的存储单元进行数据解析得到应用运行解析数据后根据对应的内存分配信息恢复至其它处理服务器继续进行处理。通过上述方法,可为不同应用分配存储单元以单独存储每一应用的运行数据,根据所生成的内存分配信息对应用运行解析数据进行恢复处理,可高效获取内存中的快照数据并恢复运行,大幅提高了对内存快照数据进行管理的效率。
本发明实施例还提供一种跨应用生命周期的内存快照管理装置,该跨应用生命周期的内存快照管理装置可配置于集群服务器的内存管理器中,该跨应用生命周期的内存快照管理装置用于执行前述的跨应用生命周期的内存快照管理方法的任一实施例。具体地,请参阅图9,图9为本发明实施例提供的跨应用生命周期的内存快照管理装置的示意性框图。
如图9所示,跨应用生命周期的内存快照管理装置100包括存储单元分配单元110、内存分配信息存储单元120、运行数据存储单元130、运行状态异常检测单元140、应用运行解析数据获取单元150和应用运行解析数据恢复单元160。
存储单元分配单元110,用于若接收到来自任一所述处理服务器的应用内存分配请求,在所述内存管理器的存储空间中分配与所述应用内存分配请求对应的存储单元。
在一具体实施例中,所述跨应用生命周期的内存快照管理装置100还包括子单元:数据锁添加单元,用于为已被分配的所述存储单元添加数据锁以对所述存储单元进行锁定。
内存分配信息存储单元120,用于根据所述存储单元及所述应用内存分配请求生成对应的内存分配信息并存储至预置的管理空间。
在一具体实施例中,所述内存分配信息存储单元120包括子单元:内存分配信息生成单元,用于获取所述存储单元中的单元管理信息及所述应用内存分配请求中的请求基础信息进行组合以生成内存分配信息;存储单元,用于将所述内存分配信息存储至所述管理空间的管理数组中与所述单元管理信息对应的单元格。
运行数据存储单元130,用于根据预置的快照周期采集与所述管理空间中每一内存分配信息对应应用程序的运行数据并输入所述存储空间中对应的存储单元进行存储。
在一具体实施例中,所述运行数据存储单元130包括子单元:数据采集锚点确定单元,用于若到达采集时间点,根据所述管理空间的管理数组中存储的内存分配信息确定与每一所述内存分配信息对应的数据采集锚点;所述采集时间点为与上一采集时间点之间间隔所述快照周期中周期时间的时间点;运行数据采集单元,用于根据所述数据采集锚点对每一所述内存分配信息对应应用程序中当前运行的数据进行采集,得到与每一所述内存分配信息对应的运行数据;存储数据更新单元,用于根据每一所述内存分配信息的运行数据分别对所述存储空间中与每一所述内存分配信息对应存储单元中所存储的数据进行更新。
运行状态异常检测单元140,用于实时检测与每一所述处理服务器中所运行应用程序的运行状态是否出现异常。
应用运行解析数据获取单元150,用于若判断得到任一所述应用程序的运行状态出现异常,根据预存的应用框架数据表对与异常应用程序对应的存储单元进行数据解析,以得到与所述异常应用程序对应的应用运行解析数据。
在一具体实施例中,所述应用运行解析数据获取单元150包括子单元:应用框架信息获取单元,用于从所述应用框架数据表中获取与所述异常应用程序对应的应用框架信息;运行数据解析单元,用于根据所述应用框架信息对所述存储空间与所述异常应用程序对应存储单元中所存储的运行数据进行数据结构解析,得到与所述异常应用程序对应的应用运行解析数据。
应用运行解析数据恢复单元160,用于根据所述管理空间中与所述异常应用程序对应的内存分配信息将所述应用运行解析数据恢复至任一其它未出现异常的处理服务器继续进行处理。
在一具体实施例中,所述应用运行解析数据恢复单元160包括子单元:恢复配置信息获取单元,用于从所述管理空间与所述异常应用程序对应单元格中所存储的内存分配信息中获取与所述异常应用程序对应的恢复配置信息;应用运行解析数据发送单元,用于将所述应用运行解析数据发送至任一其它未出现异常的处理服务器,以使所述未出现异常的处理服务中的应用程序继续处理所述应用运行解析数据。
在一具体实施例中,所述跨应用生命周期的内存快照管理装置100还包括子单元:目标内存分配信息获取单元,用于若接收到来自任一所述处理服务器的应用结束运行信息,获取所述管理空间的管理数组中与所述应用结束运行信息对应的内存分配信息作为目标内存分配信息;数据锁删除单元,用于删除所述存储空间中与所述目标内存分配信息对应的存储单元所添加的数据锁并清空所述存储单元中已存储的数据信息。
在本发明实施例所提供的跨应用生命周期的内存快照管理装置应用上述跨应用生命周期的内存快照管理方法,在内存管理器的存储空间中为接收到的应用内存分配请求分配对应的存储单元并生成对应的内存分配信息存储至管理空间,根据快照周期对管理空间中每一内存分配信息对应应用程序的运行数据进行周期性采集并存储至对应存储单元中,实时检测应用程序运行状态是否出现异常,若出现异常则根据应用框架数据表对异常应用程序对应的存储单元进行数据解析得到应用运行解析数据后根据对应的内存分配信息恢复至其它处理服务器继续进行处理。通过上述方法,可为不同应用分配存储单元以单独存储每一应用的运行数据,根据所生成的内存分配信息对应用运行解析数据进行恢复处理,可高效获取内存中的快照数据并恢复运行,大幅提高了对内存快照数据进行管理的效率。
上述跨应用生命周期的内存快照管理装置可以实现为计算机程序的形式,该计算机程序可以在如图10所示的计算机设备上运行。
请参阅图10,图10是本发明实施例提供的计算机设备的示意性框图。该计算机设备可以是用于执行跨应用生命周期的内存快照管理方法以使应用程序稳定运行并为客户提供服务的集群服务器10。
参阅图10,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
该存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行跨应用生命周期的内存快照管理方法,其中,存储介质503可以为易失性的存储介质或非易失性的存储介质。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行跨应用生命周期的内存快照管理方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图10中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现上述的跨应用生命周期的内存快照管理方法中对应的功能。
本领域技术人员可以理解,图10中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其它实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图10所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元 (CentralProcessing Unit,CPU),该处理器502还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路 (Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为易失性或非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现上述的跨应用生命周期的内存快照管理方法中所包含的步骤。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备 ( 可以是个人计算机,服务器,或者网络设备等 ) 执行本发明各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U 盘、移动硬盘、只读存储器 (ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。