基于智能指针的动态配置更新方法及系统、服务器及介质
技术领域
本发明涉及配置更新技术领域,尤其涉及一种基于智能指针的动态配置更新方法及系统、服务器及介质。
背景技术
配置文件在互联网的服务器中有广泛的应用,使用配置文件可以在不需要修改服务器代码的情况下,通过更新配置文件来更新服务器的功能。例如某个服务器提供排行榜前十名排名上升触发全站广播的功能,现在需要将功能更新为前三名排名上升触发广播,则可以将广播的排名写入配置文件,通过修改配置文件实现更新广播排名的功能。目前服务器加载配置文件并更新服务器配置通常采用重启服务器加载配置或在服务器的主线程中加载配置文件,这两种方式都存在一个共同的问题,就是服务器在加载配置的过程中无法对外提供能力,假如加载配置耗时5s,则这5s以内服务器都无法正常使用,这对于互联网服务器来说是无法接受的。
发明内容
有鉴于此,本发明提供了一种能够使服务器在配置信息更新的过程中仍然正常工作,并保证配置信息更新前后任务获取的配置信息一致性的动态配置更新方法及系统、服务器及介质。
本发明实施例的第一方面,提供了一种基于智能指针的动态配置更新方法,所述基于智能指针的动态配置更新方法包括如下步骤:
创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;
创建最新智能指针,指向当前最新的配置信息的内存地址;
判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数。
本发明实施例的第二方面,提供了一种基于智能指针的动态配置更新系统,所述基于智能指针的动态配置更新系统包括如下功能模块:
初始指针创建模块,用于创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;
最新指针创建模块,用于创建最新智能指针,指向当前最新的配置信息的内存地址;
动态配置更新模块,用于判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数。
本发明实施例的第三方面,提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述基于智能指针的动态配置更新方法的步骤。
本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述基于智能指针的动态配置更新方法的步骤。
本发明所述基于智能指针的动态配置更新方法,其通过创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;同时创建最新智能指针,指向当前最新的配置信息的内存地址;然后判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数;从而通过智能指针和引用计数相结合的策略,实现服务器配置信息的动态更新,且使服务器在配置信息更新的过程中仍然正常工作,并保证配置信息更新前后任务获取的配置信息的一致性,同时通过引用计数机制保证了过期的配置信息能够得到有效地清除,不至于造成大量的内存泄露。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于智能指针的动态配置更新方法的流程框图;
图2为图1中步骤S3的分流程框图;
图3为本发明实施例提供的基于智能指针的动态配置更新方法的具体操作图;
图4为本发明实施例提供的基于智能指针的动态配置更新系统的功能模块框图;
图5为本发明实施例提供的动态配置更新模块的功能单元框图;
图6为本发明实施例提供的服务器的结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
智能指针的作用是管理一个指针,其作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。
在引用计数中,每一个对象负责维护对象所有引用的计数值。当一个新的引用指向对象时,引用计数器就递增,当去掉一个引用时,引用计数就递减。当引用计数到零时,该对象就将释放占有的资源。
结合上述智能指针及引用计数的应用原理,本发明实施例提供一种基于智能指针的动态配置更新方法,如图1所示,所述基于智能指针的动态配置更新方法包括如下步骤:
S1、创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址。
假设初始时配置信息a在服务器中存储的内存地址107,则创建一个初始智能指针105指向内存地址107,所述初始智能指针105的作用是维护一个引用计数,用于标记该配置信息被多少个任务所使用。当有新任务使用初始智能指针105指向的配置信息a时,该初始智能指针105的引用计数加1,当新任务使用完该初始智能指针105指向的配置信息a后,该初始智能指针105的引用计数减1。设初始智能指针105为更新前的初始智能指针。
当配置信息a需要更新时,在服务器中创建一个新的内存地址作为更新后配置信息的初始内存地址,用于存储更新后的配置信息,同时创建一个更新后的初始智能指针指向更新后配置信息的初始内存地址。即当需要对配置信息a进行更新时,则需要再在服务器中创建一个内存地址108存储更新后的配置信息b,并创建一个初始智能指针106指向内存地址108,设初始智能指针106为更新后的初始智能指针。
当引用计数为0时,表明不存在任务使用该配置信息,则可以删除该配置文件的内存地址,通过这种引用计数的机制可以防止内存泄露,保证配置信息在没有被使用后能够有效地删除掉。
S2、创建最新智能指针,指向当前最新的配置信息的内存地址;
创建一个指向当前最新的配置信息的内存地址的最新智能指针104,在未进行更新之前,最新智能指针104同样指向内存地址107,在最新智能指针104指向初始智能指针105指向的初始内存地址时,所述初始智能指针105的引用计数加1。任务获取配置信息时,实际获取的是最新智能指针104指向的最新配置信息。
当最新智能指针由指向更新前配置信息的初始内存地址切换至指向更新后配置信息的初始内存地址,则更新前的初始智能指针的引用计数减1,更新后的初始智能指针的引用计数减1。
S3、判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数。
具体的,如图2所示,所述步骤S3还包括以下分步骤:
S31、当配置信息还未进行更新时,最新智能指针指向更新前配置信息的初始内存地址,新任务获取更新前的配置信息,更新前的初始智能指针的引用计数加1;
S32、当配置信息处于更新过程中时,最新智能指针指向更新前配置信息的初始内存地址,新任务仍然获取更新前的配置信息,更新前的初始智能指针的引用计数加1;
S33、当配置信息完成更新后,最新智能指针指向更新后配置信息的初始内存地址,则更新后的初始智能指针的引用计数加1,新任务获取更新后的配置信息,更新前的初始智能指针的引用计数减1,且更新后的初始智能指针的引用计数再次加1。
即如图3所示,当配置信息还未进行更新时,最新智能指针104指向更新前配置信息的初始内存地址107,新任务获取更新前的配置信息a,更新前的初始智能指针105的引用计数加1;当有任务101获取了配置信息a,则更新前的初始智能指针105的引用计数为2(1个是任务101获取,1个是最新智能指针104获取);当配置信息处于更新过程中,且有新的任务102获取配置信息时,由于此时配置信息还在更新过程中,没有完成实际的更新操作,所以任务102仍然获取的是配置信息a,更新前的初始智能指针105的引用计数增加到3;如果此时任务101已经完成了,则更新前的初始智能指针105的引用计数减1。当配置信息更新完成时,将最新智能指针104指向的内存地址从内存地址107切换为内存地址108,配置信息由a更新为b,此时更新前的初始智能指针105的引用计数减1,而更新后的初始智能指针106的引用计数加1。当新的任务103获取配置信息时,由于此时配置信息已经更新完成,所以获取的是最新的配置信息b,此时更新后的初始智能指针106的引用计数再次加1,即当配置信息更新完成,最新智能指针104由指向更新前配置信息的初始内存地址变更为指向更新后配置信息的初始内存地址,会使更新后的初始智能指针106的引用计数加1,而如果此时又有新任务引用更新后配置信息时,又会使更新后的初始智能指针106的引用计数再次加1,则更新后的初始智能指针106的引用计数增加到2。初始智能指针106当任务102完成之后,配置信息a不再被任何任务所使用,此时更新前的初始智能指针105的引用计数减少到0,触发智能指针的删除机制,将服务器的配置信息a删除,释放配置信息a所占用的内存地址107。至此,通过智能指针和引用计数的结合,完成了配置信息的动态更新操作。
本发明所述基于智能指针的动态配置更新方法,其通过创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;同时创建最新智能指针,指向当前最新的配置信息的内存地址;然后判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数;从而通过智能指针和引用计数相结合的策略,实现服务器配置信息的动态更新,且使服务器在配置信息更新的过程中仍然正常工作,并保证配置信息更新前后任务获取的配置信息的一致性,同时通过引用计数机制保证了过期的配置信息能够得到有效地清除,不至于造成大量的内存泄露。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上面主要描述了一种基于智能指针的动态配置更新方法,下面将对一种基于智能指针的动态配置更新系统进行详细描述。
图4示出了本发明实施例提供一种基于智能指针的动态配置更新系统的一个实施例结构图。如图4所示,所述一种基于智能指针的动态配置更新系统,所述基于智能指针的动态配置更新系统包括如下功能模块:
初始指针创建模块10,用于创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;
最新指针创建模块20,用于创建最新智能指针,指向当前最新的配置信息的内存地址;
动态配置更新模块30,用于判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数。
其中,如图5所示,所述动态配置更新模块30还包括以下功能单元:
未更新状态单元31,用于当配置信息还未进行更新时,最新智能指针指向更新前配置信息的初始内存地址,新任务获取更新前的配置信息,更新前的初始智能指针的引用计数加1;
更新中状态单元32,用于当配置信息处于更新过程中时,最新智能指针指向更新前配置信息的初始内存地址,新任务仍然获取更新前的配置信息,更新前的初始智能指针的引用计数加1;
更新后状态单元33,用于当配置信息完成更新后,最新智能指针指向更新后配置信息的初始内存地址,新任务获取更新后的配置信息,更新前的初始智能指针的引用计数减1,更新后的初始智能指针的引用计数加2。
本发明所述基于智能指针的动态配置更新系统,其通过初始指针创建模块10创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;同时通过最新指针创建模块20创建最新智能指针,指向当前最新的配置信息的内存地址;然后通过动态配置更新模块30判断配置信息的更新状态,根据判断结果切换最新智能指针的指向,并相应调整更新前初始智能指针以及更新后初始智能指针的引用计数;从而通过智能指针和引用计数相结合的策略,实现服务器配置信息的动态更新,且使服务器在配置信息更新的过程中仍然正常工作,并保证配置信息更新前后任务获取的配置信息的一致性,同时通过引用计数机制保证了过期的配置信息能够得到有效地清除,不至于造成大量的内存泄露。
图6是本发明一实施例提供的基于智能指针的动态配置更新的服务器结构的示意图。所述服务器,为提供计算服务器的设备,通常指具有较高计算能力,通过网络提供给多个用户使用的计算机。如图6所示,该实施例的服务器4包括:存储器41、处理器42以及系统总线43,所述存储器41包括存储其上的可运行的程序411,本领域技术人员可以理解,图6中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对终端设备的各个构成部件进行具体的介绍:
存储器41可用于存储软件程序以及模块,处理器42通过运行存储在存储器41的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在存储器41上包含基于智能指针的动态配置更新方法的可运行程序411,所述可运行程序411可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器41中,并由处理器42执行,以完成通知的传递并获取通知实现过程,所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序411在所述服务器4中的执行过程。例如,所述计算机程序411可以被分割为获取模块、比对模块、拼接模块和发送模块。
处理器42是服务器的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器41内的软件程序和/或模块,以及调用存储在存储器41内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器42可包括一个或多个处理单元;优选的,处理器42可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器42中。
系统总线43是用来连接计算机内部各功能部件,可以传送数据信息、地址信息、控制信息,其种类可以是例如PCI总线、ISA总线、VESA总线等。处理器42的指令通过总线传递至存储器41,存储器41反馈数据给处理器42,系统总线43负责处理器42与存储器41之间的数据、指令交互。当然系统总线43还可以接入其他设备,例如网络接口、显示设备等。
所述服务器应至少包括CPU、芯片组、内存、磁盘系统等,其他构成部件在此不再赘述。
在本发明实施例中,该终端所包括的处理器42执行的可运行程序具体为:一种基于智能指针的动态配置更新方法,所述基于智能指针的动态配置更新方法包括如下步骤:
创建更新前的初始智能指针以及更新后的初始智能指针,分别指向更新前配置信息的初始内存地址和更新后配置信息的初始内存地址;
创建最新智能指针,指向当前最新的配置信息的内存地址;
判断配置信息的更新状态,当配置信息还未进行更新时,最新智能指针指向更新前配置信息的初始内存地址,新任务获取更新前的配置信息,更新前的初始智能指针的引用计数加1;
当配置信息处于更新过程中时,最新智能指针指向更新前配置信息的初始内存地址,新任务仍然获取更新前的配置信息,更新前的初始智能指针的引用计数加1;
当配置信息完成更新后,最新智能指针指向更新后配置信息的初始内存地址,新任务获取更新后的配置信息,更新前的初始智能指针的引用计数减1,更新后的初始智能指针的引用计数加2。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。