CN110750313A - 一种中间件的热加载方法、装置、电子设备及存储介质 - Google Patents

一种中间件的热加载方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110750313A
CN110750313A CN201911001468.1A CN201911001468A CN110750313A CN 110750313 A CN110750313 A CN 110750313A CN 201911001468 A CN201911001468 A CN 201911001468A CN 110750313 A CN110750313 A CN 110750313A
Authority
CN
China
Prior art keywords
configuration
file
changed
configuration item
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911001468.1A
Other languages
English (en)
Other versions
CN110750313B (zh
Inventor
燕馨瑞
胡林森
汪国辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201911001468.1A priority Critical patent/CN110750313B/zh
Publication of CN110750313A publication Critical patent/CN110750313A/zh
Application granted granted Critical
Publication of CN110750313B publication Critical patent/CN110750313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种中间件的热加载方法、装置、电子设备及存储介质,涉及热加载领域。具体实现方案为:当中间件的配置文件发生变更时,分别获取工作进程以及服务进程发生变更的配置项;将工作进程发生变更的配置项写入到第一隐藏文件中;将服务进程发生变更的配置项写入到第二隐藏文件中;当通过工作进程判断出第一隐藏文件发生更变时,将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,将服务进程发变更的配置项更新到内存中。采用本申请的技术方案,当工作进程和服务进程热加载成功时,主进程无需重新建立新的工作进程和新的服务进程,这样可以提高业务稳定性,有效地降低内存峰值。

Description

一种中间件的热加载方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机应用技术领域,进一步涉及热加载技术,尤其是一种中间件的热加载方法、装置、电子设备及存储介质。
背景技术
AR分布式DBProxy(以下简称Menu)是一款MySQL中间件服务,遵从MySQL通信协议,提供了读写分离、负载均衡、权限控制等强大的功能。Menu是一个多进程模型,包括1个主进程,1个工作进程和1个服务进程;其中,主进程负责配置中间件的热加载以及工作进程和服务进程的存活判断;工作进程负责针对中间件所有的业务请求,服务进程负责中间件的权限认证相关工作。
当Menu的配置文件发生变更时,目前的Menu的热加载方式为:通过主进程感知到配置文件发生变更,将该配置文件加载到内存;即主进程简单判断配置文件是否发生变更;如配置文件发生变更,则通过主进程重新建立新的工作进程和新的服务进程,再杀死老的工作进程和老的服务进程。由此可见,现有的热加载方式比较暴力,主要存在问题如下:1)配置文件发生变更后,旧的工作进程被杀死,因此旧的工作进程中正在处理的所有请求都会中断,业务会感知到连接断开,造成请求失败,影响服务稳定性,同时也影响DBA的一些运维操作。2)内存开销较大。某个时刻会同时存在主进程、新的工作进程、新的服务进程、旧的工作进程、旧的服务进程,这五个进程同时占用内存;如果集群规模较大,配置文件加载后会占用较大的内存,新老进程同时运行,会占用正常运行态2倍以上的内存。如果PCS线上出现Menu与Mysql同机部署时,Menu热加载占用较多内存,导致Mysql出现无法获取内存,假死的情况。
发明内容
有鉴于此,本申请提出实施例提供一种中间件的热加载方法、装置、电子设备及存储介质,当工作进程和服务进程热加载成功时,主进程无需重新建立新的工作进程和新的服务进程,这样可以提高业务稳定性,有效地降低内存峰值。
第一方面,本申请实施例提供了一种中间件的热加载方法,所述方法包括:
当通过主进程判断出中间件的配置文件发生变更时,通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到所述工作进程发生变更的配置项以及所述服务进程发生变更的配置项;
若所述工作进程支持所述工作进程发生变更的配置项,通过所述主进程将所述工作进程发生变更的配置项写入到第一隐藏文件中;若所述服务进程支持所述服务进程发生变更的配置项,通过所述主进程将所述服务进程发生变更的配置项写入到第二隐藏文件中;
当通过工作进程判断出所述第一隐藏文件发生更变时,通过所述工作进程将所述工作进程发生变更的配置项更新到内存中;当通过所述服务进程判断出所述第二隐藏文件发生变更时,通过所述服务进程将所述服务进程发变更的配置项更新到所述内存中。
上述申请中的一个实施例具有如下优点或有益效果:当中间件的配置文件发生变更时,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中;然后工作进程可以将与其对应的发生变更的配置项更新到内存中;服务进程也可以将其对应的发生变更的配置项更新到内存中。这样主进程无需建立新的工作进程和新的服务进程,可以提高业务稳定性,有效地降低内存峰值。
在上述实施例中,所述方法还包括:
通过所述工作进程将所述工作进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号;通过所述服务进程将所述服务进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号。
上述申请中的一个实施例具有如下优点或有益效果:工作进程的配置版本文件的版本号需要与中间件的配置文件的版本号保持一致;服务进程的配置版本文件的版本号也需要与中间件的配置文件的版本号保持一致。因此,当工作进程和服务进程完成热加载之后,可以通过工作进程将工作进程的配置版本文件中的版本号设置为与中间件的配置文件相同的版本号;通过服务进程将服务进程的配置版本文件中的版本号设置为与中间件的配置文件相同的版本号。
在上述实施例中,所述方法还包括:
当通过所述主进程判断出所述工作进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述工作进程热加载成功;当通过所述主进程判断出所述服务进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述服务进程热加载成功。
上述申请中的一个实施例具有如下优点或有益效果:本申请可以通过识别配置版本文件的版本号,即可判断出工作进程和服务进程是否加载成功。若工作进程的配置版本文件已设置为与中间件的配置文件相同的版本号,则判定工作进程热加载成功;若服务进程的配置版本文件已设置为与中间件的配置文件相同的版本号,则判定服务进程热加载成功。
在上述实施例中,所述方法还包括:
当通过所述主进程判断出所述工作进程加载成功时,将热加载成功的工作进程作为目标工作进程;当通过所述主进程判断出所述服务进程热加载成功时,将热加载成功的服务进程作为目标服务进程;
当通过所述主进程判断出所述工作进程加载失败时,将热加载失败的工作进程作为所述目标工作进程;当通过所述主进程判断出所述服务进程加载失败时,将热加载失败的服务进程作为所述目标服务进程。
上述申请中的一个实施例具有如下优点或有益效果:本申请可以根据热加载的结果确定目标工作进程和目标服务进程。当工作进程和服务进程都热加载成功时,将热加载成功的工作进程和热加载成功的服务进程分别作为目标工作进程和目标服务进程;当工作进程和服务进程热加载失败时,将热加载失败的工作进程和热加载失败的服务进程分别作为目标工作进程和目标服务进程。
在上述实施例中,在通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比之前,所述方法还包括:
通过所述主进程分别获取所述工作进程发生变更的配置项的大小和所述服务进程发生变更的配置项的大小;
当所述工作进程发生变更的配置项的大小小于预设阈值并且所述服务进程发生变更的配置项的大小小于所述预设阈值时,执行通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。
上述申请中的一个实施例具有如下优点或有益效果:本申请可以预先判断工作进程发生变更的配置项的大小和服务进程发生变更的配置项的大小;若工作进程发生变更的配置项的大小小于预设阈值并且服务进程发生变更的配置项的大小小于预设阈值,才会执行通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作;若工作进程发生变更的配置项的大小大于等于预设阈值,或者服务进程发生变更的配置项的大小大于等于预设阈值,则不会执行通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。
第二方面,本申请还提供了一种中间件的热加载装置,所述装置包括:包括:获取模块、写入模块和更新模块;其中,
所述获取模块,用于当通过主进程判断出中间件的配置文件发生变更时,通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到所述工作进程发生变更的配置项以及所述服务进程发生变更的配置项;
所述写入模块,用于若所述工作进程支持所述工作进程发生变更的配置项,通过所述主进程将所述工作进程发生变更的配置项写入到第一隐藏文件中;若所述服务进程支持所述服务进程发生变更的配置项,通过所述主进程将所述服务进程发生变更的配置项写入到第二隐藏文件中;
所述更新模块,用于当通过工作进程判断出所述第一隐藏文件发生更变时,通过所述工作进程将所述工作进程发生变更的配置项更新到内存中;当通过所述服务进程判断出所述第二隐藏文件发生变更时,通过所述服务进程将所述服务进程发变更的配置项更新到所述内存中。
在上述实施例中,所述装置还包括:设置模块,用于通过所述工作进程将所述工作进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号;通过所述服务进程将所述服务进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号。
在上述实施例中,所述装置还包括:判定模块,用于当通过所述主进程判断出所述工作进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述工作进程热加载成功;当通过所述主进程判断出所述服务进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述服务进程热加载成功。
在上述实施例中,所述判定模块,还用于当通过所述主进程判断出所述工作进程加载成功时,将热加载成功的工作进程作为目标工作进程;当通过所述主进程判断出所述服务进程热加载成功时,将热加载成功的服务进程作为目标服务进程;当通过所述主进程判断出所述工作进程加载失败时,将热加载失败的工作进程作为所述目标工作进程;当通过所述主进程判断出所述服务进程加载失败时,将热加载失败的服务进程作为所述目标服务进程。
在上述实施例中,所述获取模块,还用于通过所述主进程分别获取所述工作进程发生变更的配置项的大小和所述服务进程发生变更的配置项的大小;当所述工作进程发生变更的配置项的大小小于预设阈值并且所述服务进程发生变更的配置项的大小小于所述预设阈值时,执行通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。
第三方面,本申请实施例提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请任意实施例所述的中间件的热加载方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请任意实施例所述的中间件的热加载方法。
上述申请中的一个实施例具有如下优点或有益效果:本申请提出的中间件的热加载方法、装置、电子设备及存储介质,当通过主进程判断出中间件的配置文件发生变更时,通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项;若工作进程支持工作进程发生变更的配置项,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;若服务进程支持服务进程发生变更的配置项,通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中;当通过工作进程判断出第一隐藏文件发生更变时,通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,通过服务进程将服务进程发变更的配置项更新到内存中。也就是说,本申请可以先通过主进程对工作进程和服务进程进行热加载,当工作进程和服务进程分别热加载成功时,主进程不需要建立新的工作进程和新的服务进程。因为本申请采用了通过主进程对工作进程和服务进程分别进行热加载的方法,克服了现有技术中由于主进程直接建立新的工作进程和新的服务进程,从而造成业务不稳定和内存峰值高的缺陷,采用本申请提供的技术方案,当工作进程和服务进程热加载成功时,主进程无需建立新的工作进程和新的服务进程,这样可以提高业务稳定性,有效地降低内存峰值;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的中间件的热加载方法的第一流程示意图;
图2是本申请实施例提供的中间件的热加载方法的第二流程示意图;
图3是本申请实施例提供的中间件的热加载方法的第三流程示意图;
图4是本申请实施例提供的工作进程和服务进程分别热加载成功的流程示意图;
图5是本申请实施例提供的工作进程热加载失败服务进程热加载成功的流程示意图;
图6是本申请实施例提供的中间件的热加载装置的第一结构示意图;
图7是本申请实施例提供的中间件的热加载装置的第二结构示意图
图8是用来实现本申请实施例的中间件的热加载方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
实施例一
图1是本申请实施例提供的中间件的热加载方法的第一流程示意图,该方法可以由中间件的热加载装置或者电子设备来执行,该装置或者电子设备可以由软件和/或硬件的方式实现,该装置或者电子设备可以集成在任何具有网络通信功能的智能设备中。如图1所示,中间件的热加载方法可以包括以下步骤:
S101、当通过主进程判断出中间件的配置文件发生变更时,通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项。
在本申请的具体实施例中,当通过主进程判断出中间件的配置文件发生变更时,电子设备可以通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项。具体地,电子设备可以通过主进程轮询中间件的配置文件是否发生变更,例如,中间件的配置文件的大小是否发生变更,当通过主进程判断出中间件的配置文件发生变更时,电子设备可以将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项;此外,电子设备还可以将通过主进程将中间件的配置文件中的各个配置项与服务进程的配置文件中的各个配置项进行对比,获取到服务进程发生变更的配置项。这里的工作进程和服务进程是两个相互独立的进程,因此,工作进程发生变更的配置项和服务进程发生变更的配置项也是相互独立的,两者可以相同也可以不同。
S102、若工作进程支持工作进程发生变更的配置项,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;若服务进程支持服务进程发生变更的配置项,通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中。
在本申请的具体实施例中,若工作进程支持工作进程发生变更的配置项,电子设备可以通过主进程将工作进程发生变更的配置项写入到第一隐藏文件.diff.conf.work中;若服务进程支持服务进程发生变更的配置项,电子设备可以通过主进程将服务进程发生变更的配置项写入到第二隐藏文件.diff.conf.bns中。具体地,由于工作进程对于一些路由信息是不支持热加载的,因此,本步骤需要判断工作进程是否支持工作进程发生变更的配置项;此外,由于服务进程对于一些路由信息也是不支持热加载的,因此,本步骤也需要判断服务进程是否支持服务进程发生变更的配置项。若工作进程支持工作进程发生变更的配置项,电子设备可以通过主进程将工作进程发生变更的配置项写入到第一隐藏文件.diff.conf.work中;若服务进程支持服务进程发生变更的配置项,电子设备可以通过主进程将服务进程发生变更的配置项写入到第二隐藏文件.diff.conf.bns中。若工作进程不支持工作进程发生变更的配置项,则电子设备可以将该工作进程作为目标工作进程。
S103、当通过工作进程判断出第一隐藏文件发生更变时,通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,通过服务进程将服务进程发变更的配置项更新到内存中。
在本申请的具体实施例中,当通过工作进程判断出第一隐藏文件.diff.conf.work发生更变时,电子设备可以通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件.diff.conf.bns发生变更时,电子设备可以通过服务进程将服务进程发变更的配置项更新到内存中。例如,当通过工作进程判断出第一隐藏文件.diff.conf.work中的某个配置项由配置项1更变为配置项1'时,电子设备可以通过工作进程将1'更新到内存中;当通过服务进程判断出第二隐藏文件.diff.conf.bns中的某个配置项由配置项2变更为配置项2'时,电子设备可以通过服务进程将配置项2'更新到内存中。
本申请实施例提出的中间件的热加载方法,当通过主进程判断出中间件的配置文件发生变更时,通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项;若工作进程支持工作进程发生变更的配置项,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;若服务进程支持服务进程发生变更的配置项,通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中;当通过工作进程判断出第一隐藏文件发生更变时,通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,通过服务进程将服务进程发变更的配置项更新到内存中。也就是说,本申请可以先通过主进程对工作进程和服务进程进行热加载,当工作进程和服务进程分别热加载成功时,主进程不需要建立新的工作进程和新的服务进程。因为本申请采用了通过主进程对工作进程和服务进程分别进行热加载的方法,克服了现有技术中由于主进程直接建立新的工作进程和新的服务进程,从而造成业务不稳定和内存峰值高的缺陷,采用本申请提供的技术方案,当工作进程和服务进程热加载成功时,主进程无需建立新的工作进程和新的服务进程,这样可以提高业务稳定性,有效地降低内存峰值;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例二
图2是本申请实施例提供的中间件的热加载方法的第二流程示意图。如图2所示,中间件的热加载方法可以包括以下步骤:
S201、当通过主进程判断出中间件的配置文件发生变更时,通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项。
在本申请的具体实施例中,当通过主进程判断出中间件的配置文件发生变更时,电子设备可以通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项。具体地,电子设备可以通过主进程轮询中间件的配置文件是否发生变更,例如,中间件的配置文件的大小是否发生变更,当通过主进程判断出中间件的配置文件发生变更时,电子设备可以将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项;此外,电子设备还可以将通过主进程将中间件的配置文件中的各个配置项与服务进程的配置文件中的各个配置项进行对比,获取到服务进程发生变更的配置项。
S202、若工作进程支持工作进程发生变更的配置项,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;若服务进程支持服务进程发生变更的配置项,通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中。
在本申请的具体实施例中,若工作进程支持工作进程发生变更的配置项,电子设备可以通过主进程将工作进程发生变更的配置项写入到第一隐藏文件.diff.conf.work中;若服务进程支持服务进程发生变更的配置项,电子设备可以通过主进程将服务进程发生变更的配置项写入到第二隐藏文件.diff.conf.bns中。具体地,由于工作进程对于一些路由信息是不支持热加载的,因此,本步骤需要判断工作进程是否支持工作进程发生变更的配置项;此外,由于服务进程对于一些路由信息也是不支持热加载的,因此,本步骤也需要判断服务进程是否支持服务进程发生变更的配置项。
S203、当通过工作进程判断出第一隐藏文件发生更变时,通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,通过服务进程将服务进程发变更的配置项更新到内存中。
在本申请的具体实施例中,当通过工作进程判断出第一隐藏文件.diff.conf.work发生更变时,电子设备可以通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件.diff.conf.bns发生变更时,电子设备可以通过服务进程将服务进程发变更的配置项更新到内存中。
S204、通过工作进程将工作进程的配置版本文件中的版本号设置为与中间件的配置文件相同的版本号;通过服务进程将服务进程的配置版本文件中的版本号设置为与中间件的配置文件相同的版本号。
在本申请的具体实施例中,电子设备可以通过工作进程将工作进程的配置版本文件.conf_version.in.work_memory中的版本号设置为与中间件的配置文件相同的版本号;通过服务进程将服务进程的配置版本文件.conf_version.in.bns_memory中的版本号设置为与中间件的配置文件相同的版本号。例如,当中间件的配置文件的版本号由版本号1变更为版本号2时,在本步骤中,电子设备可以将通过工作进程将工作进程的配置版本文件.conf_version.in.work_memory中的版本号(版本号1)设置为与中间件的配置文件相同的版本号(版本号2);通过服务进程将服务进程的配置版本文件.conf_version.in.bns_memory中的版本号(版本号1)设置为与中间件的配置文件相同的版本号(版本号2)。
S205、当通过主进程判断出工作进程的配置版本文件已设置为与中间件的配置文件相同的版本号时,则判定工作进程热加载成功;当通过主进程判断出服务进程的配置版本文件已设置为与中间件的配置文件相同的版本号时,则判定服务进程热加载成功。
在本申请的具体实施例中,当通过主进程判断出工作进程的配置版本文件已设置为与中间件的配置文件相同的版本号时,则电子设备可以判定工作进程热加载成功;当通过主进程判断出服务进程的配置版本文件已设置为与中间件的配置文件相同的版本号时,则电子设备可以判定服务进程热加载成功。例如,假设中间件的配置文件的版本号由版本号1变更为版本号2时,在本步骤中,当通过主进程判断出工作进程的配置版本文件.conf_version.in.work_memory已设置为版本号2时,则电子设备可以判定工作进程热加载成功。当通过主进程判断出服务进程的配置版本文件.conf_version.in.bns_memory已设置为版本号2时,则电子设备可以判定服务进程热加载成功。
较佳地,在本申请的具体实施例中,当通过主进程判断出工作进程加载成功时,电子设备可以将热加载成功的工作进程作为目标工作进程;当通过主进程判断出服务进程热加载成功时,电子设备可以将热加载成功的服务进程作为目标服务进程;当通过主进程判断出工作进程加载失败时,电子设备可以将热加载失败的工作进程作为目标工作进程;当通过主进程判断出服务进程加载失败时,电子设备可以将热加载失败的服务进程作为目标服务进程。
较佳地,在本申请的具体实施例中,电子设备在通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比之前,还可以先通过主进程分别获取工作进程发生变更的配置项的大小和服务进程发生变更的配置项的大小;当工作进程发生变更的配置项的大小小于预设阈值并且服务进程发生变更的配置项的大小小于该预设阈值时,电子设备再执行通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。具体地,这里的预设阈值可以是16M。
图3是本申请实施例提供的中间件的热加载方法的第三流程示意图。如图3所示,本申请提出的中间件热加载方法包括以下5个步骤:1)主进程轮询中间件的配置文件是否发生变更,如果有变更则主进程将该配置文件加载进内存,主进程将该配置文件与工作进程的旧版的配置文件中的各个配置项做对比,并判断工作进程是否支持变更的配置项的热加载,对于一些路由信息,是不支持热加载的,则会直接报错返回,不继续下一步;同时,主进程将该配置文件与服务进程的旧版的配置文件中的各个配置项做对比,并判断服务进程是否支持变更的配置项的热加载,对于不支持热加载的,则直接报错返回,不继续下一步。2)主进程将中间件的配置文件与工作进程的旧版的配置文件的对比结果(发生变更的工作进程的配置项)写到本地的第一隐藏文件.diff.conf.work中;主进程将中间件的配置文件与服务进程的旧版的配置文件的对比结果(发生变更的服务进程的配置项)写到本地的第二隐藏文件.diff.conf.bns中。3)工作进程每间隔第一预设时间(这里的第一预设时间在1秒内),去查看diff.conf.work文件是否有变更,如果有变更,则将变更的工作进程的配置项更新到内存中;服务进程每间隔第二预设时间(这里的第二预设时间可以是get_ip_list_interval分钟,get_ip_list_interval可在配置文件中设置和修改),去查看.diff.conf.bns文件是否有变更,如果有变更,则将变更的服务进程的配置项更新到内存中。4)如果工作进程成功加载.diff.conf.work文件,则更新工作进程的配置版本文件(第一配置版本文件).conf_version.in.work_memory的内容,即将工作进程的配置版本文件中的版本号设置为与该配置文件相同的版本号;如果服务进程成功加载.diff.conf.bns文件,则更新服务进程的配置版本文件(第二配置版本文件).conf_version.in.bns_memory的内容,即将服务进程的配置版本文件中的版本号设置为与该配置文件相同的版本号;5)主进程轮询工作进程和服务进程的配置版本文件是否更新,考虑到加载大表需要较长时间,最长轮询时间为:工作进程:2s,服务进程:get_ip_list_interval+2s;如果在规定时间内,工作进程的配置版本号成功变更,则判定工作进程热加载成功,主进程更新内存中工作进程的配置文件;若在规定时间内,工作进程的配置版本号没有变更,则判定工作进程热加载失败,主进程内存中工作进程的配置文件保持不变;同理,如果在规定时间内,服务进程得配置版本号成功变更,则判定服务进程热加载成功,主进程更新内存中服务进程的配置文件;若在规定时间内,服务进程的配置版本号没有更新,则判定服务进程热加载失败,主进程内存中服务进程的配置文件保持不变。
图4是本申请实施例提供的工作进程和服务进程分别热加载成功的流程示意图。如图4所示,本申请中工作进程和服务进程分别热加载成功的流程包括以下5个步骤:1)主进程轮询中间件的配置文件是否发生变更,假设中间件的配置文件由版本1变更为版本2,主进程将该配置文件加载进内存,主进程将该配置文件与工作进程的旧版的配置文件中的各个配置项做对比,并判断工作进程是否支持变更的配置项的热加载,对于一些路由信息,是不支持热加载的,则会直接报错返回,不继续下一步;同时,主进程将该配置文件与服务进程的旧版的配置文件中的各个配置项做对比,并判断服务进程是否支持变更的配置项的热加载,对于不支持热加载的,则直接报错返回,不继续下一步。2)主进程将中间件的配置文件与工作进程的旧版的配置文件的对比结果(发生变更的工作进程的配置项)写到本地的第一隐藏文件.diff.conf.work中;主进程将中间件的配置文件与服务进程的旧版的配置文件的对比结果(发生变更的服务进程的配置项)写到本地的第二隐藏文件.diff.conf.bns中。3)工作进程每间隔第一预设时间(这里的第一预设时间在1秒内),去查看diff.conf.work文件是否有变更,如果有变更,则将变更的工作进程的配置项更新到内存中;服务进程每间隔第二预设时间(这里的第二预设时间可以是get_ip_list_interval分钟,get_ip_list_interval可在配置文件中设置和修改),去查看.diff.conf.bns文件是否有变更,如果有变更,则将变更的服务进程的配置项更新到内存中。4)如果工作进程成功加载.diff.conf.work文件,则更新工作进程的配置版本文件(第一配置版本文件).conf_version.in.work_memory的内容,即将工作进程的配置版本文件中的版本号设置为版本号2;如果服务进程成功加载.diff.conf.bns文件,则更新服务进程的配置版本文件(第二配置版本文件).conf_version.in.bns_memory的内容,即将服务进程的配置版本文件中的版本号设置版本号2。5)主进程轮询工作进程和服务进程的配置版本文件是否更新,考虑到加载大表需要较长时间,最长轮询时间为:工作进程:2s,服务进程:get_ip_list_interval+2s;如果在规定时间内,工作进程的配置版本号变更为版本号2,则判定工作进程热加载成功,主进程更新内存中工作进程的配置文件;同理,如果在规定时间内,服务进程得配置版本号变更为版本号2,则判定服务进程热加载成功,主进程更新内存中服务进程的配置文件。
图5是本申请实施例提供的工作进程热加载失败服务进程热加载成功的流程示意图。如图5所示,本申请中工作进程热加载失败服务进程热记载成功的流程包括以下5个步骤:1)主进程轮询中间件的配置文件是否发生变更,假设中间件的配置文件由版本2变更为版本3,主进程将中间件的配置文件加载进内存,主进程将中间件的配置文件与工作进程的旧版的配置文件中的各个配置项做对比,并判断工作进程是否支持变更的配置项的热加载,对于一些路由信息,是不支持热加载的,则会直接报错返回,不继续下一步;同时,主进程将该配置文件与服务进程的旧版的配置文件中的各个配置项做对比,并判断服务进程是否支持变更的配置项的热加载,对于不支持热加载的,则直接报错返回,不继续下一步。2)主进程将中间件的配置文件与工作进程的旧版的配置文件的对比结果(发生变更的工作进程的配置项)写到本地的第一隐藏文件.diff.conf.work中;主进程将中间件的配置文件与服务进程的旧版的配置文件的对比结果(发生变更的服务进程的配置项)写到本地的第二隐藏文件.diff.conf.bns中。3)工作进程每间隔第一预设时间(这里的第一预设时间在1秒内),去查看diff.conf.work文件是否有变更,如果有变更,则将变更的工作进程的配置项更新到内存中;服务进程每间隔第二预设时间(这里的第二预设时间可以是get_ip_list_interval分钟,get_ip_list_interval可在配置文件中设置和修改),去查看.diff.conf.bns文件是否有变更,如果有变更,则将变更的服务进程的配置项更新到内存中。4)如果工作进程加载.diff.conf.work文件失败,则将工作进程的配置版本文件(第一版本配置文件).conf_version.in.work_memory的内容保持不变(版本号2);如果服务进程成功加载.diff.conf.bns文件,则更新服务进程的配置版本文件(第二版本配置文件).conf_version.in.bns_memory的内容,即将服务进程的配置版本文件中的版本号设置为版本号3。5)主进程轮询工作进程和服务进程的配置版本文件是否更新,考虑到加载大表需要较长时间,最长轮询时间为:工作进程:2s,服务进程:get_ip_list_interval+2s;如果在规定时间内,由于工作进程的配置版本号未发生改变,则判定工作进程热加载失败;同理,如果在规定时间内,服务进程得配置版本号变更为版本号3,则判定服务进程热加载成功,主进程更新内存中服务进程的配置文件。
在分布式中间件服务中,Menu作为业务数据库流量的入口,是每一个业务的请求都会流经的模块,因此Menu的稳定性会直接影响到业务的服务稳定性,上线热加载后,当Menu配置文件发生变更时,不再重启工作进程,损失业务流量,而是以平滑的方式加载配置到内存中,业务无感知,可大大提高线上服务可用性,稳定性。由于本申请提出的热加载方案不再建立新的工作进程和业务进程,因此不存在主进程、新的工作进程、新的服务进程、旧的工作进程、旧的服务进程同时占内存的情况,Menu占用内存峰值降低百分之50。在配置文件大小不同时,本申请提供的热加载方法与现有技术中的热加载方法相比,Menu内存占用如下述表1:
配置文件大小 本申请内存占用 现有技术内存占用
4M 516M 709M
7.4M 691M 1.26G
11M 946M 1.57G
22M 1.67G 3.07G
43M 3.15G 6.03G
表1
本申请实施例提出的中间件的热加载方法,当通过主进程判断出中间件的配置文件发生变更时,通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项;若工作进程支持工作进程发生变更的配置项,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;若服务进程支持服务进程发生变更的配置项,通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中;当通过工作进程判断出第一隐藏文件发生更变时,通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,通过服务进程将服务进程发变更的配置项更新到内存中。也就是说,本申请可以先通过主进程对工作进程和服务进程进行热加载,当工作进程和服务进程分别热加载成功时,主进程不需要建立新的工作进程和新的服务进程。因为本申请采用了通过主进程对工作进程和服务进程分别进行热加载的方法,克服了现有技术中由于主进程直接建立新的工作进程和新的服务进程,从而造成业务不稳定和内存峰值高的缺陷,采用本申请提供的技术方案,当工作进程和服务进程热加载成功时,主进程无需建立新的工作进程和新的服务进程,这样可以提高业务稳定性,有效地降低内存峰值;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例三
图6是本申请实施例提供的中间件的热加载装置的第一结构示意图。如图6所示,所述装置包括:获取模块601、写入模块602和更新模块603;其中,
所述获取模块601,用于当通过主进程判断出中间件的配置文件发生变更时,通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到所述工作进程发生变更的配置项以及所述服务进程发生变更的配置项;
所述写入模块602,用于若所述工作进程支持所述工作进程发生变更的配置项,通过所述主进程将所述工作进程发生变更的配置项写入到第一隐藏文件中;若所述服务进程支持所述服务进程发生变更的配置项,通过所述主进程将所述服务进程发生变更的配置项写入到第二隐藏文件中;
所述更新模块603,用于当通过工作进程判断出所述第一隐藏文件发生更变时,通过所述工作进程将所述工作进程发生变更的配置项更新到内存中;当通过所述服务进程判断出所述第二隐藏文件发生变更时,通过所述服务进程将所述服务进程发变更的配置项更新到所述内存中。
图7是本申请实施例提供的中间件的热加载装置的第二结构示意图。如图7所示,所述装置还包括:设置模块604,用于通过所述工作进程将所述工作进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号;通过所述服务进程将所述服务进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号。
进一步的,所述装置还包括:判定模块605,用于当通过所述主进程判断出所述工作进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述工作进程热加载成功;当通过所述主进程判断出所述服务进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述服务进程热加载成功。
进一步的,所述判定模块605,还用于当通过所述主进程判断出所述工作进程加载成功时,将热加载成功的工作进程作为目标工作进程;当通过所述主进程判断出所述服务进程热加载成功时,将热加载成功的服务进程作为目标服务进程;当通过所述主进程判断出所述工作进程加载失败时,将热加载失败的工作进程作为所述目标工作进程;当通过所述主进程判断出所述服务进程加载失败时,将热加载失败的服务进程作为所述目标服务进程。
进一步的,所述获取模块601,还用于通过所述主进程分别获取所述工作进程发生变更的配置项的大小和所述服务进程发生变更的配置项的大小;当所述工作进程发生变更的配置项的大小小于预设阈值并且所述服务进程发生变更的配置项的大小小于所述预设阈值时,执行通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。
上述中间件的热加载装置可执行本申请任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请任意实施例提供的中间件的热加载方法。
实施例四
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图8所示,是根据本申请实施例的中间件的热加载方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图8所示,该电子设备包括:一个或多个处理器801、存储器802,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图8中以一个处理器801为例。
存储器802即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的中间件的热加载方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的中间件的热加载方法。
存储器802作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的中间件的热加载方法对应的程序指令/模块(例如,附图6所示的获取模块601、写入模块602、更新模块603)。处理器801通过运行存储在存储器802中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的中间件的热加载方法。
存储器802可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据中间件的热加载方法的电子设备的使用所创建的数据等。此外,存储器802可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器802可选包括相对于处理器801远程设置的存储器,这些远程存储器可以通过网络连接至中间件的热加载方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
中间件的热加载方法的电子设备还可以包括:输入装置803和输出装置804。处理器801、存储器802、输入装置803和输出装置804可以通过总线或者其他方式连接,图8中以通过总线连接为例。
输入装置803可接收输入的数字或字符信息,以及产生与中间件的热加载方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置804可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,当通过主进程判断出中间件的配置文件发生变更时,通过主进程分别将中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到工作进程发生变更的配置项以及服务进程发生变更的配置项;若工作进程支持工作进程发生变更的配置项,通过主进程将工作进程发生变更的配置项写入到第一隐藏文件中;若服务进程支持服务进程发生变更的配置项,通过主进程将服务进程发生变更的配置项写入到第二隐藏文件中;当通过工作进程判断出第一隐藏文件发生更变时,通过工作进程将工作进程发生变更的配置项更新到内存中;当通过服务进程判断出第二隐藏文件发生变更时,通过服务进程将服务进程发变更的配置项更新到内存中。也就是说,本申请可以先通过主进程对工作进程和服务进程进行热加载,当工作进程和服务进程分别热加载成功时,主进程不需要建立新的工作进程和新的服务进程。因为本申请采用了通过主进程对工作进程和服务进程分别进行热加载的方法,克服了现有技术中由于主进程直接建立新的工作进程和新的服务进程,从而造成业务不稳定和内存峰值高的缺陷,采用本申请提供的技术方案,当工作进程和服务进程热加载成功时,主进程无需建立新的工作进程和新的服务进程,这样可以提高业务稳定性,有效地降低内存峰值;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (12)

1.一种中间件的热加载方法,其特征在于,所述方法包括:
当通过主进程判断出中间件的配置文件发生变更时,通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到所述工作进程发生变更的配置项以及所述服务进程发生变更的配置项;
若所述工作进程支持所述工作进程发生变更的配置项,通过所述主进程将所述工作进程发生变更的配置项写入到第一隐藏文件中;若所述服务进程支持所述服务进程发生变更的配置项,通过所述主进程将所述服务进程发生变更的配置项写入到第二隐藏文件中;
当通过工作进程判断出所述第一隐藏文件发生更变时,通过所述工作进程将所述工作进程发生变更的配置项更新到内存中;当通过所述服务进程判断出所述第二隐藏文件发生变更时,通过所述服务进程将所述服务进程发变更的配置项更新到所述内存中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述工作进程将所述工作进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号;通过所述服务进程将所述服务进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当通过所述主进程判断出所述工作进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述工作进程热加载成功;当通过所述主进程判断出所述服务进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述服务进程热加载成功。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当通过所述主进程判断出所述工作进程加载成功时,将热加载成功的工作进程作为目标工作进程;当通过所述主进程判断出所述服务进程热加载成功时,将热加载成功的服务进程作为目标服务进程;
当通过所述主进程判断出所述工作进程加载失败时,将热加载失败的工作进程作为所述目标工作进程;当通过所述主进程判断出所述服务进程加载失败时,将热加载失败的服务进程作为所述目标服务进程。
5.根据权利要求1所述的方法,其特征在于,在通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比之前,所述方法还包括:
通过所述主进程分别获取所述工作进程发生变更的配置项的大小和所述服务进程发生变更的配置项的大小;
当所述工作进程发生变更的配置项的大小小于预设阈值并且所述服务进程发生变更的配置项的大小小于所述预设阈值时,执行通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。
6.一种中间件的热加载的装置,其特征在于,所述装置包括:获取模块、写入模块和更新模块;其中,
所述获取模块,用于当通过主进程判断出中间件的配置文件发生变更时,通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比,获取到所述工作进程发生变更的配置项以及所述服务进程发生变更的配置项;
所述写入模块,用于若所述工作进程支持所述工作进程发生变更的配置项,通过所述主进程将所述工作进程发生变更的配置项写入到第一隐藏文件中;若所述服务进程支持所述服务进程发生变更的配置项,通过所述主进程将所述服务进程发生变更的配置项写入到第二隐藏文件中;
所述更新模块,用于当通过工作进程判断出所述第一隐藏文件发生更变时,通过所述工作进程将所述工作进程发生变更的配置项更新到内存中;当通过所述服务进程判断出所述第二隐藏文件发生变更时,通过所述服务进程将所述服务进程发变更的配置项更新到所述内存中。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:设置模块,用于通过所述工作进程将所述工作进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号;通过所述服务进程将所述服务进程的配置版本文件中的版本号设置为与所述中间件的配置文件相同的版本号。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:判定模块,用于当通过所述主进程判断出所述工作进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述工作进程热加载成功;当通过所述主进程判断出所述服务进程的配置版本文件已设置为与所述中间件的配置文件相同的版本号时,则判定所述服务进程热加载成功。
9.根据权利要求8所述的装置,其特征在于,所述判定模块,还用于当通过所述主进程判断出所述工作进程加载成功时,将热加载成功的工作进程作为目标工作进程;当通过所述主进程判断出所述服务进程热加载成功时,将热加载成功的服务进程作为目标服务进程;当通过所述主进程判断出所述工作进程加载失败时,将热加载失败的工作进程作为所述目标工作进程;当通过所述主进程判断出所述服务进程加载失败时,将热加载失败的服务进程作为所述目标服务进程。
10.根据权利要求6所述的装置,其特征在于,所述获取模块,还用于通过所述主进程分别获取所述工作进程发生变更的配置项的大小和所述服务进程发生变更的配置项的大小;当所述工作进程发生变更的配置项的大小小于预设阈值并且所述服务进程发生变更的配置项的大小小于所述预设阈值时,执行通过所述主进程分别将所述中间件的配置文件中的各个配置项与工作进程的配置文件中的各个配置项和服务进程的配置文件中的各个配置项进行对比的操作。
11.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-5中任一项所述的方法。
CN201911001468.1A 2019-10-21 2019-10-21 一种中间件的热加载方法、装置、电子设备及存储介质 Active CN110750313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911001468.1A CN110750313B (zh) 2019-10-21 2019-10-21 一种中间件的热加载方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911001468.1A CN110750313B (zh) 2019-10-21 2019-10-21 一种中间件的热加载方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110750313A true CN110750313A (zh) 2020-02-04
CN110750313B CN110750313B (zh) 2023-07-25

Family

ID=69279162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911001468.1A Active CN110750313B (zh) 2019-10-21 2019-10-21 一种中间件的热加载方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110750313B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473098A (zh) * 2021-08-20 2021-10-01 海信电子科技(武汉)有限公司 显示设备及显示方法

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0721016A (ja) * 1993-06-30 1995-01-24 Fujitsu Ltd プログラム変更状態検出方法及びプログラム変更状態検出装置
CA2247498A1 (en) * 1996-02-29 1997-09-04 Intermind Corporation An automated communications system and method for transferring informations between databases in order to control and process communications
EP1178402A1 (en) * 2000-08-03 2002-02-06 Hsing Tech Enterprises Co., Ltd. Method and apparatus for actively updating program file(s) of a client computer
US7130870B1 (en) * 2000-05-20 2006-10-31 Ciena Corporation Method for upgrading embedded configuration databases
US20090187595A1 (en) * 2008-01-18 2009-07-23 International Business Machines Corporation Managing configuration items
CN103064711A (zh) * 2012-12-27 2013-04-24 北京思特奇信息技术股份有限公司 一种基于Spread分布式应用系统的热加载方法
CN105893063A (zh) * 2016-06-13 2016-08-24 积成电子股份有限公司 一种基于xml格式配置文件的应用程序界面及其构建方法
CN106909411A (zh) * 2015-12-23 2017-06-30 中国移动通信集团江苏有限公司 一种文件更新方法及装置
CN108052664A (zh) * 2017-12-29 2018-05-18 北京小度信息科技有限公司 数据库存储集群的数据迁移方法和装置
CN108197139A (zh) * 2017-11-22 2018-06-22 链家网(北京)科技有限公司 一种同步更新配置项的处理方法及终端
CN108932338A (zh) * 2018-07-11 2018-12-04 北京百度网讯科技有限公司 数据更新方法、装置、设备和介质
CN110019517A (zh) * 2017-11-14 2019-07-16 顺丰科技有限公司 一种数据库中间件动态配置方法、系统、设备、存储介质
CN110019005A (zh) * 2017-09-29 2019-07-16 北京嘀嘀无限科技发展有限公司 文件更新方法、装置、计算机设备和可读存储介质
CN110300153A (zh) * 2019-05-27 2019-10-01 北京百度网讯科技有限公司 与MySQL建立链接的方法、装置、代理服务器及存储介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0721016A (ja) * 1993-06-30 1995-01-24 Fujitsu Ltd プログラム変更状態検出方法及びプログラム変更状態検出装置
CA2247498A1 (en) * 1996-02-29 1997-09-04 Intermind Corporation An automated communications system and method for transferring informations between databases in order to control and process communications
US7130870B1 (en) * 2000-05-20 2006-10-31 Ciena Corporation Method for upgrading embedded configuration databases
EP1178402A1 (en) * 2000-08-03 2002-02-06 Hsing Tech Enterprises Co., Ltd. Method and apparatus for actively updating program file(s) of a client computer
US20090187595A1 (en) * 2008-01-18 2009-07-23 International Business Machines Corporation Managing configuration items
CN103064711A (zh) * 2012-12-27 2013-04-24 北京思特奇信息技术股份有限公司 一种基于Spread分布式应用系统的热加载方法
CN106909411A (zh) * 2015-12-23 2017-06-30 中国移动通信集团江苏有限公司 一种文件更新方法及装置
CN105893063A (zh) * 2016-06-13 2016-08-24 积成电子股份有限公司 一种基于xml格式配置文件的应用程序界面及其构建方法
CN110019005A (zh) * 2017-09-29 2019-07-16 北京嘀嘀无限科技发展有限公司 文件更新方法、装置、计算机设备和可读存储介质
CN110019517A (zh) * 2017-11-14 2019-07-16 顺丰科技有限公司 一种数据库中间件动态配置方法、系统、设备、存储介质
CN108197139A (zh) * 2017-11-22 2018-06-22 链家网(北京)科技有限公司 一种同步更新配置项的处理方法及终端
CN108052664A (zh) * 2017-12-29 2018-05-18 北京小度信息科技有限公司 数据库存储集群的数据迁移方法和装置
CN108932338A (zh) * 2018-07-11 2018-12-04 北京百度网讯科技有限公司 数据更新方法、装置、设备和介质
CN110300153A (zh) * 2019-05-27 2019-10-01 北京百度网讯科技有限公司 与MySQL建立链接的方法、装置、代理服务器及存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
K. AMIRI; SANGHYUN PARK; R. TEWARI; S. PADMANABHAN: "DBProxy: a dynamic data cache for web applications", 《PROCEEDINGS 19TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING》 *
YEIM-KUAN CHANG; YU-REN LIN; YI-WEI TING: "Caching personalized and database-related dynamic Web pages", 《2006 INTERNATIONAL WORKSHOP ON NETWORKING, ARCHITECTURE, AND STORAGES (IWNAS"06)》 *
宋怀明,焦丽梅,孙凝晖: "一种数据库中间件的配置服务的研究和实现", 《小型微型计算机系统》 *
方吉良: "基于OMQ的数据库代理系统研究与应用", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *
许剑颖: "数据库访问中间件在异构资源整合中的应用——以图书情报领域为例", 《宁夏农林科技》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473098A (zh) * 2021-08-20 2021-10-01 海信电子科技(武汉)有限公司 显示设备及显示方法
CN113473098B (zh) * 2021-08-20 2023-03-24 Vidaa(荷兰)国际控股有限公司 显示设备及显示方法

Also Published As

Publication number Publication date
CN110750313B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN111045985B (zh) 文件存储处理方法、服务器、电子设备及存储介质
CN111258609A (zh) Kubernetes集群的升级方法、装置、电子设备和介质
CN111770169A (zh) 设备固件升级的方法、装置、设备以及存储介质
CN111586128A (zh) 小程序数据的获取方法、装置、设备以及存储介质
US11397634B1 (en) Detecting datacenter mass outage with near real-time/offline using ML models
CN111506401A (zh) 自动驾驶仿真任务调度方法、装置、电子设备及存储介质
CN111737361B (zh) 区块链处理方法、装置、设备和存储介质
CN112540914A (zh) 单元测试的执行方法、执行装置、服务器和存储介质
CN110598059B (zh) 数据库操作方法及装置
CN111770154A (zh) 服务检测方法、装置、设备以及存储介质
CN111831752A (zh) 分布式数据库的空间整理方法、装置、设备以及存储介质
CN111782341A (zh) 用于管理集群的方法和装置
CN111966471B (zh) 访问方法、装置、电子设备及计算机存储介质
CN110750313B (zh) 一种中间件的热加载方法、装置、电子设备及存储介质
CN110659184B (zh) 健康状态检查方法、装置及系统
CN111708940A (zh) 问题处理方法、装置、电子设备和存储介质
CN112069137A (zh) 生成信息的方法、装置、电子设备及计算机可读存储介质
CN111782357A (zh) 标签控制方法及装置、电子设备和可读存储介质
CN111597192B (zh) 数据库的切换控制方法、装置及电子设备
CN113655906A (zh) 折叠屏控制方法和装置
US10852899B2 (en) Non-transitory computer-readable storage medium, and terminal device
CN111639116A (zh) 数据访问连接会话保护方法以及装置
CN111835857B (zh) 用于访问数据的方法和装置
CN112346512A (zh) 时间同步方法和装置
CN111258954B (zh) 数据迁移方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant