CN106406928A - 一种软件热插拔方法及系统 - Google Patents

一种软件热插拔方法及系统 Download PDF

Info

Publication number
CN106406928A
CN106406928A CN201610719652.XA CN201610719652A CN106406928A CN 106406928 A CN106406928 A CN 106406928A CN 201610719652 A CN201610719652 A CN 201610719652A CN 106406928 A CN106406928 A CN 106406928A
Authority
CN
China
Prior art keywords
function
loader
hot
instruction
throttling
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
CN201610719652.XA
Other languages
English (en)
Other versions
CN106406928B (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 QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century 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 QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201610719652.XA priority Critical patent/CN106406928B/zh
Publication of CN106406928A publication Critical patent/CN106406928A/zh
Application granted granted Critical
Publication of CN106406928B publication Critical patent/CN106406928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/44594Unloading

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

一种软件热插拔方法及系统
技术领域
本发明涉及软件热插拔技术领域,特别涉及一种软件热插拔方法及系统。
背景技术
软件热插拔,是指系统在运行时,动态的插入或拔出相应功能组件或配置,完成指定任务的过程而不影响系统整体运行的操作。这里所说的软件热插拔主要针对软件系统中相应功能组件而言,对于一个完整的软件系统,可以将其分为若干个相互独立、能够完成特定子任务的功能性组件,这种组件就是热插拔的对象。
目前,通常为使用脚本语言的方式实现对热插拔对象的热插拔操作,使用脚本语言的方式在每次对热插拔对象进行功能热插或热拔操作时,都需要构建语法树,但在高并发状态下,需要频繁的进行热插拔操作,而每一次进行热插拔操作都需要构建一次语法树,因此,软件热插拔的效率低下。
发明内容
本发明实施例的目的在于提供一种软件热插拔方法及系统,以提高软件热插拔的效率。
为达到上述目的,本发明实施例公开了一种软件热插拔方法,应用于软件热插拔系统,所述软件热插拔系统包括数据同步器、功能装载器、对象缓存器和功能库,所述方法包括:
所述数据同步器监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;
在所述热插拔指令为热插指令的情况下,所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流;
根据所述功能描述,确定装载所述功能字节流的功能装载器;
所确定的功能装载器对所述功能字节流进行装载;
所述对象缓存器至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存;
在所述热插拔指令为热拔指令的情况下,所述对象缓存器删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
优选的,所述功能库中包括功能的功能描述与功能字节流的对应关系;
所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流,包括:
所述数据同步器根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;
从所述功能库中拉取所述功能字节流。
优选的,所述根据所述功能描述,确定装载所述功能字节流的功能装载器,包括:
根据所述功能描述,判断所述目标功能是否为全局功能;
如果是,将全局功能装载器确定为装载所述功能字节流的功能装载器;
如果否,新建功能装载器,将所新建的功能装载器确定为装载所述功能字节流的功能装载器。
优选的,所述热插拔指令中还包括所述目标功能的版本信息;
所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流,包括:
所述数据同步器根据所述功能描述和所述版本信息,从所述功能库中拉取所述目标功能的功能字节流;
所述对象缓存器至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存,包括:
所述对象缓存器对所述功能字节流的对象、所述目标功能的版本信息以及所确定的功能装载器的对象进行缓存。
优选的,所述软件热插拔系统还包括功能选择路由,所述方法还包括:
所述功能选择路由基于路由策略,根据所述对象缓存器中缓存的功能字节流的对象,确定所述装载后的功能字节流;运行所述功能字节流,以运行所述目标功能。
为达到上述目的,本发明实施例还公开了一种软件热插拔系统,所述软件热插拔系统包括数据同步器、功能装载器、对象缓存器和功能库,其中,
所述数据同步器,用于监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;在所述热插拔指令为热插指令的情况下,根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器;
所述功能装载器,用于对所述功能字节流进行装载;
所述对象缓存器,用于至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存;以及在所述热插拔指令为热拔指令的情况下,删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
优选的,所述功能库中包括功能的功能描述与功能字节流的对应关系;
所述数据同步器,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库中拉取所述功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器。
优选的,所述数据同步器,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库中拉取所述功能字节流;根据所述功能描述,判断所述目标功能是否为全局功能;如果是,将全局功能装载器确定为装载所述功能字节流的功能装载器;如果否,新建功能装载器,将所新建的功能装载器确定为装载所述功能字节流的功能装载器。
优选的,所述热插拔指令中还包括所述目标功能的版本信息;
所述数据同步器,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述版本信息,从所述功能库中拉取所述目标功能的功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器;
所述对象缓存器,具体用于:
至少对所述功能字节流的对象、所述目标功能的版本信息以及所确定的功能装载器的对象进行缓存;以及在所述热插拔指令为热拔指令的情况下,删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
优选的,还包括:功能选择路由;
所述功能选择路由用于基于路由策略,根据所述对象缓存器中缓存的功能字节流的对象,确定所述装载后的功能字节流;运行所述功能字节流,以运行所述目标功能。
本发明实施例公开了一种软件热插拔方法及系统,方法包括:数据同步器监听配置服务集群发出的针对软件中目标功能的热插拔指令;在所述热插拔指令为热插指令的情况下,数据同步器根据功能描述,从功能库中拉取目标功能的功能字节流;并确定装载功能字节流的功能装载器;所确定的功能装载器对功能字节流进行装载;对象缓存器至少对功能字节流的对象以及所确定的功能装载器的对象进行缓存;在热插拔指令为热拔指令的情况下,对象缓存器删除所缓存的对象。
应用本发明实施例,不需要构建语法树,根据功能描述可从功能库中直接拉取对应的功能字节流进行装载,并将装载后的对象缓存到对象缓存器中,通过删除缓存器中缓存的对象可直接对装载后的功能字节流进行热拔操作,提高了软件热插拔的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种软件热插拔方法的流程示意图;
图2为本发明实施例提供的另一种软件热插拔方法的流程示意图;
图3为本发明实施例提供的一种软件热插拔系统的结构示意图;
图4为本发明实施例提供的另一种软件热插拔系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体实施例,对本发明进行详细的说明。
图1为本发明实施例提供的一种软件热插拔方法的流程示意图,所述方法优先适用于软件热插拔系统,所述软件热插拔系统包括数据同步器、功能装载器、对象缓存器和功能库,所述方法包括:
S101:所述数据同步器监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;
本领域技术人员可以理解的是,软件热插拔是指系统在运行时,动态的插入或拔出相应功能组件或配置,完成指定任务的过程而不影响系统整体运行的操作。这里所说的软件热插拔主要针对软件系统中相应功能组件而言,对于一个完整的软件系统,可以将其分为若干个相互独立、能够完成特定子任务的功能性组件,这种组件就是热插拔的对象。
在一个软件系统中,通常会有多个功能模块,示例性的,在语音聊天软件“QQ2016”中提供有“皮肤设置”、“场景秀”、“多彩气泡”、“界面管理”等多个功能组件,每一个功能组件之间是相互独立的,这里所说的“皮肤设置”、“场景秀”、“多彩气泡”以及“界面管理”均为对应功能的描述。
不难理解的是,当系统配置服务器集群发出针对软件中的目标功能的热插拔指令时,该热插拔指令将被数据同步器监听到,例如,配置服务器集群发出热插拔指令可以为“多彩气泡”功能的热插指令,那么数据同步器将监听到该热插指令,当然配置服务器集群发出的热插拔指令也可以为“多彩气泡”功能的热拔指令,相应的,数据同步器将监听到的指令为“多彩气泡”功能的热拔指令。配置服务器集群所发出的热插拔指令不仅可以是“多彩气泡”功能的,还可以是软件中其他任意一种功能的,因此,本发明实施例并不对热插拔指令的具体形式做进一步限定。
S102:在所述热插拔指令为热插指令的情况下,所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流。
由上述可知,当配置服务器集群所发出的热插拔指令为热插指令的时候,数据同步器将监听到热插指令,例如,数据同步器监听到的指令为“多彩气泡”功能的热插指令,该热插指令对应的功能描述为“多彩气泡”。数据同步器从功能库中找到“多彩气泡”对应的功能字节流,本领域技术人员可以理解的是,功能库为功能模块的集合,存储有各个功能以及功能的程序代码,编译后的程序代码通常称为功能字节流。
进一步的,所述功能库中可以包括功能的功能描述与功能字节流的对应关系;
数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流,可以根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库中拉取所述功能字节流。
实际应用中,功能库中可以预先存储一个功能描述与功能字节流的对应关系,对应关系的形式有很多,示例性的,对应关系的形式可以为表格式,具体的可以如表1所示。
表1
功能描述 功能字节流
QQ 2016 功能字节流A
皮肤设置 功能字节流B
场景秀 功能字节流C
多彩气泡 功能字节流D
界面管理 功能字节流E
由上述表1不难得知,功能描述为“QQ 2016”功能对应的功能字节流为“功能字节流A”、功能描述为“皮肤设置”功能对应的功能字节流为“功能字节流B”、…、功能描述为“界面管理”功能对应的功能字节流为“功能字节流E”。
为了清楚的描述拉取功能字节流的过程,本实施例以功能描述为“QQ 2016”为例进行说明,由上述表1不难查得功能描述为“QQ 2016”的功能对应的功能字节流为“功能字节流A”,也就是说,数据同步器确定出需要进行热插操作的对象就是“功能字节流A”,即需要从功能库中拉取的功能字节流为“功能字节流A”,由于功能字节流A是存储在功能库中的一个功能模块,因此,在数据同步器确定出拉取的是功能字节流A后,便可从功能库中直接找到功能字节流A并将功能字节流A拉取到数据同步器中。
需要说明的是,对于上述表1以及表1中所列举的内容仅为本发明实施例的一种具体事例,对于功能描述与功能字节流的对应关系的形式以及对应关系的具体内容,本申请并不做进明确限定。
进一步的,为了能够更加方便准确的对功能字节流进行装载,热插拔指令中还包括所述目标功能的版本信息;数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流,可以根据所述功能描述和所述版本信息,从所述功能库中拉取所述目标功能的功能字节流。
在软件开发调试以及应用过程中,会经常对功能做一些更新升级,为了区分新旧功能,通常用不同的版本信息来标识不同的功能,例如,版本信息为:8.4.18357.0的“QQ2016”和版本信息为:8.3.18038.0的“QQ 2016”,这两种版本号对应于同一个的功能描述“QQ 2016”,但是它们对应的功能却是不同的。如版本信息为:8.3.18038.0的“QQ 2016”中没有“多彩气泡”的功能,但在版本信息为:8.4.18357.0的“QQ 2016”中就添加了“多彩气泡”的功能。
由上可知,同一功能描述可以对应有不同版本信息时,不同版本对应的功能字节流也不同,因此,数据同步器在从功能库中拉取功能字节流时不仅需要知道功能对应的功能描述,还需要知道功能对应的版本信息;例如,数据同步器监听到的服务器配置集群所发出的热插指令中包含功能描述以及版本信息,其中,功能描述可以为:QQ 2016、版本信息可以为:8.4.18357.0,数据同步器根据监听到的功能描述和版本信息从功能库中拉取对应的功能字节流,这里需要说明的是,当热插拔指令中包括功能的版本信息时,对应的在功能库中预先存储的对应关系为功能描述、版本信息和功能字节流之间的对应关系,示例性的,对应关系的形式可以为表格式,具体的可以如表2所示。
表2
由上述表2可知,同一个功能描述可以对应有多个版本信息,每一个版本信息对应一个功能字节流,因此,数据同步器可以根据功能描述和版本信息在上述表2中可查找到唯一的功能字节流。示例性的,数据同步器监听到热插指令中包含功能描述为:QQ 2016、版本信息为:8.4.18357.0,根据“QQ 2016”和“8.4.18357.0”可以从表2中查找到对应的功能字节流为“功能字节流A2”,数据同步器确定出拉取的是功能字节流A2后,便可从功能库中直接找到功能字节流A2,并将功能字节流A2拉取到数据同步器中。
值得说明的是,上述表1以及表2中所列举的内容仅为本发明实施例的一种具体示例,本申请并不对对应关系的形式以及对应关系的具体内容做进一步的限定。
S103:根据所述功能描述,确定装载所述功能字节流的功能装载器;
对于功能装载器来说,功能装载器可以理解为一个安装工具,可以理解的是,不同的部件需要选用与其匹配的安装工具进行安装。
这里功能装载器需要装载的对象为数据同步器从功能库中拉取的功能字节流,但是不同的功能字节流需要选用不同的功能装载器进行装载,因此,在对功能字节流进行装载之前需要先确定与需要装载的功能字节流匹配的功能装载器。
实际应用中,所述根据所述功能描述,确定装载所述功能字节流的功能装载器,可以根据所述功能描述,判断所述目标功能是否为全局功能;
如果是,将全局功能装载器确定为装载所述功能字节流的功能装载器;
如果否,新建功能装载器,将所新建的功能装载器确定为装载所述功能字节流的功能装载器。
不同的功能字节流需要用不同的功能装载器进行装载,而功能描述是功能类型的唯一的标识信息,通过功能字节流对应的功能描述可以确定出该功能字节流对应功能的类型以及所对应的功能装载器。
通常情况下,目标功能可分为全局功能和非全局功能,或者可以称为父功能和子功能,相应的,功能装载器也可分为全局功能装载器和非全局功能装载器,不难理解的是,全局功能装载器负责装载全局功能,非全局功能装载器负责装载非全局功能。全局功能装载器在计算机系统的开发过程中就有相应的配置,因此,全局功能的功能字节流可以直接用全局功能装载器进行装载。
示例性的,当数据同步器根据功能描述“QQ 2016”从功能库中拉取的功能字节流为QQ 2016对应的主程序,因为QQ为通用计算机最为常用的功能,故“QQ 2016”是全局功能,可以直接用全局功能装载器进行装载;当数据同步器根据功能描述“多彩气泡”从功能库中拉取的功能字节流为“功能字节流D”,而“多彩气泡”功能为“QQ”功能中的一个功能子模块,因此“多彩气泡”功能为非全局功能,这时,需要重新建立一个功能装载器。例如,新建一个子功能装载器d,新建的子功能装载器d用于装载“功能字节流D”。
同样的,当热插拔指令还包括目标功能的版本信息时,因为功能描述是功能类型的唯一标识,所以热插拔指令中包不包括版本信息并不影响功能装载器的确定。示例性的,数据同步器监听到热插指令中包含功能描述为:QQ 2016、版本信息为:8.4.18357.0,从表2中查找到对应的功能字节流为“功能字节流A2”,根据功能描述QQ 2016便可以确定出装载功能字节流A2的功能装载器为全局装载器。
S104:所确定的功能装载器对所述功能字节流进行装载;
确定出装载功能字节流的功能装载器后,功能装载器将对功能字节流进行装载,例如,根据上述已确定装载功能字节流A2所需的功能装载器为全局功能装载器,那么,全局功能装载器将对数据同步器中已拉取的功能字节流A2进行装载,装载就是对功能的安装,可以将功能字节流A2装载在计算机系统中设置好的内存空间中,如设置的内存空间为磁盘F分区,全局功能装载器对装载后的功能字节流A2进行实例化,所谓实例化就是构造对象,就是类创建对象的过程,在本发明实施例中,全局装载器对装载后的功能字节流A2进行实例化后得到“功能字节流A2”对象,表现为在计算机操作系统的桌面上出现“QQ 2016”的快捷图标,通过该快捷图标便可以运行已经装载的“QQ 2016”,事实上,实例化后得到的对象可以理解为装载后功能字节流A2的标识信息,通过“功能字节流A2”的对象可以找到对应的功能。
与全局功能装载器装载过程不同的是,在对非全局功能对应的功能字节流进行装载时,功能字节流需要装载到其对应的上一级功能所装载的位置下。例如,非全局功能“多彩气泡”对应的功能字节流D为全局功能“QQ 2016”的一个子功能模块,因此,在装载“多彩气泡”功能对应的功能字节流D时,需要预先找到全局功能“QQ 2016”对应功能字节流A的装载位置,将功能字节流D装载在功能字节流A的装载位置下。
S105:所述对象缓存器至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存;
在功能装载器完成对功能字节流的装载之后,需要将安装后的状态缓存到对象缓存器中,装载后的功能字节流有一个标识信息,就是上述所说的功能字节流的对象,完成功能字节流装载的功能装载器也有一个标识信息,这一标识信息称为功能装载器的对象。示例性的,对象缓存器需要将功能字节流D的对象和完成对功能字节流D装载的功能装载器d的对象进行缓存,对象缓存器就相当于是一个检索单元,通过对象缓存器中缓存的对象可以运行对应的装载后的功能字节流。
进一步的,当热插拔指令中还包有述目标功能的版本信息时;
对象缓存器至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存,对所述功能字节流的对象、所述目标功能的版本信息以及所确定的功能装载器的对象进行缓存。
不难理解的是,当热插拔指令中还包括有版本信息时,由于每一个功能字节流对应一个版本信息,因此,为了能够准确的找到装载后的功能字节流,对象缓存器还需要将功能字节流对应的版本信息连同功能字节流的对象和功能装载器的对象一起进行缓存。
示例性的,功能装载器d对版本信息为“8.4.18357.0”的“多彩气泡”功能对应的功能字节流D0进行装载后,对象缓存器将版本信息“8.4.18357.0”与功能字节流D0的对象和功能装载器d的对象一起缓存起来。
值得说明的是,对象缓存器缓存的对象以实际的功能字节流为准,上述仅为本发明实施例的一个具体示例,并不构成对本申请保护范围的限定。
S106:在所述热插拔指令为热拔指令的情况下,所述对象缓存器删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
由上述不难得知,针对每一个热插指令,在接收到热插指令后都需要对热插指令信息对应的目标功能进行装载,当数据同步器监听到已装载的目标功能热拔指令时,数据同步器将使能对象缓存器删除已缓存的对象,例如,用户在使用“QQ 2016”功能时,感觉“QQ2016”中的“多彩气泡”功能不好用,现需要移除该功能,这是数据同步器监听到已装载的功能字节流D对应的“多彩气泡”功能的热拔指令,数据同步器使能对象缓存器,对象缓存器将根据热拔指令中包括的功能描述找到缓存的功能字节流的对象和功能装载器的对象,之后将二者删除,释放缓存。
应用图1提供的实施例,根据功能描述可从功能库中直接拉取对应的功能字节流进行装载,并将装载后的对象缓存到对象缓存器中,通过删除缓存器中缓存的对象可直接对装载后的功能字节流进行热拔操作,提高了软件热插拔的效率。
图2为本发明实施例提供的另一种软件热插拔方法的流程示意图,在上述图1所提供的软件热插拔方法的基础上,所述软件热插拔系统还包括功能选择路由,所述方法还包括:
S107:所述功能选择路由基于路由策略,根据所述对象缓存器中缓存的功能字节流的对象,确定所述装载后的功能字节流;运行所述功能字节流,以运行所述目标功能。
当功能字节流装载完成之后,通常用户会运行装载后的功能字节流,功能选择路根据用户的操作生成特定的路由策略,功能选择路由器将基于该路由策略,从对象缓存器中找到已缓存的满足路由策略的功能字节流的对象,根据找到的功能字节流的对象可以唯一找到功能字节流装载的内存空间,直接访问并运行已经装载的功能字节流。
应用图2提供的实施例,功能选择路由可以通过缓存器中缓存的对象直接访问并运行已装载的功能字节流,提高了软件运行的效率。
本发明实施例还提供了一种软件热插拔系统,如图3所示,所述软件热插拔系统包括:数据同步器201、功能装载器202、对象缓存器203和功能库204,其中,
数据同步器201,用于监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;在所述热插拔指令为热插指令的情况下,根据所述功能描述,从所述功能库204中拉取所述目标功能的功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器;
功能装载器202,用于对所述功能字节流进行装载;
对象缓存器203,用于至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存;以及在所述热插拔指令为热拔指令的情况下,删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
实际应用中,数据同步器201,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库204中拉取所述功能字节流;根据所述功能描述,判断所述目标功能是否为全局功能;如果是,将全局功能装载器确定为装载所述功能字节流的功能装载器;如果否,新建功能装载器,将所新建的功能装载器确定为装载所述功能字节流的功能装载器。
实际应用中,当功能库204中包括功能的功能描述与功能字节流的对应关系时;
所述数据同步器201,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库204中拉取所述功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器。
实际应用中,热插拔指令中还可以包括所述目标功能的版本信息,在热插拔指令中还包括所述目标功能的版本信息的情况下;
数据同步器201,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述版本信息,从所述功能库中204拉取所述目标功能的功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器;
对象缓存器203,具体用于:
至少对所述功能字节流的对象、所述目标功能的版本信息以及所确定的功能装载器的对象进行缓存;以及在所述热插拔指令为热拔指令的情况下,删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
应用图3提供的实施例,根据功能描述可从功能库中直接拉取对应的功能字节流进行装载,并将装载后的对象缓存到对象缓存器中,通过删除缓存器中缓存的对象可直接对装载后的功能字节流进行热拔操作,提高了软件热插拔的效率。
图4为本发明实施例提供的另一种软件热插拔系统的结构示意图,在上述图3所提供的软件热插拔系统的基础上,系统还包括:功能选择路由205;
功能选择路由205,用于基于路由策略,根据所述对象缓存器中缓存的功能字节流的对象,确定所述装载后的功能字节流;运行所述功能字节流,以运行所述目标功能。
应用图4提供的实施例,功能选择路由可以通过缓存器中缓存的对象直接访问并运行已装载的功能字节流,提高了软件运行的效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种软件热插拔方法,其特征在于,应用于软件热插拔系统,所述软件热插拔系统包括数据同步器、功能装载器、对象缓存器和功能库,所述方法包括:
所述数据同步器监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;
在所述热插拔指令为热插指令的情况下,所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流;
根据所述功能描述,确定装载所述功能字节流的功能装载器;
所确定的功能装载器对所述功能字节流进行装载;
所述对象缓存器至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存;
在所述热插拔指令为热拔指令的情况下,所述对象缓存器删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
2.根据权利要求1所述的方法,其特征在于,所述功能库中包括功能的功能描述与功能字节流的对应关系;
所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流,包括:
所述数据同步器根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;
从所述功能库中拉取所述功能字节流。
3.根据权利要求1所述的方法,其特征在于,所述根据所述功能描述,确定装载所述功能字节流的功能装载器,包括:
根据所述功能描述,判断所述目标功能是否为全局功能;
如果是,将全局功能装载器确定为装载所述功能字节流的功能装载器;
如果否,新建功能装载器,将所新建的功能装载器确定为装载所述功能字节流的功能装载器。
4.根据权利要求1所述的方法,其特征在于,所述热插拔指令中还包括所述目标功能的版本信息;
所述数据同步器根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流,包括:
所述数据同步器根据所述功能描述和所述版本信息,从所述功能库中拉取所述目标功能的功能字节流;
所述对象缓存器至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存,包括:
所述对象缓存器对所述功能字节流的对象、所述目标功能的版本信息以及所确定的功能装载器的对象进行缓存。
5.根据权利要求1所述的方法,其特征在于,所述软件热插拔系统还包括功能选择路由,所述方法还包括:
所述功能选择路由基于路由策略,根据所述对象缓存器中缓存的功能字节流的对象,确定所述装载后的功能字节流;运行所述功能字节流,以运行所述目标功能。
6.一种软件热插拔系统,其特征在于,所述软件热插拔系统包括数据同步器、功能装载器、对象缓存器和功能库,其中,
所述数据同步器,用于监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;在所述热插拔指令为热插指令的情况下,根据所述功能描述,从所述功能库中拉取所述目标功能的功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器;
所述功能装载器,用于对所述功能字节流进行装载;
所述对象缓存器,用于至少对所述功能字节流的对象以及所确定的功能装载器的对象进行缓存;以及在所述热插拔指令为热拔指令的情况下,删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
7.根据权利要求6所述的系统,其特征在于,所述功能库中包括功能的功能描述与功能字节流的对应关系;
所述数据同步器,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库中拉取所述功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器。
8.根据权利要求6所述的系统,其特征在于,所述数据同步器,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述对应关系,确定待拉取的目标功能对应的功能字节流;从所述功能库中拉取所述功能字节流;根据所述功能描述,判断所述目标功能是否为全局功能;如果是,将全局功能装载器确定为装载所述功能字节流的功能装载器;如果否,新建功能装载器,将所新建的功能装载器确定为装载所述功能字节流的功能装载器。
9.根据权利要求6所述的系统,其特征在于,所述热插拔指令中还包括所述目标功能的版本信息;
所述数据同步器,具体用于:
监听配置服务集群发出的针对软件中目标功能的热插拔指令,所述热插拔指令中至少包括所述目标功能的功能描述;在所述热插拔指令为热插指令的情况下,根据所述功能描述和所述版本信息,从所述功能库中拉取所述目标功能的功能字节流;根据所述功能描述,确定装载所述功能字节流的功能装载器;
所述对象缓存器,具体用于:
至少对所述功能字节流的对象、所述目标功能的版本信息以及所确定的功能装载器的对象进行缓存;以及在所述热插拔指令为热拔指令的情况下,删除所述功能字节流的对象以及装载所述目标功能的功能字节流的功能装载器的对象。
10.根据权利要求6所述的系统,其特征在于,还包括:功能选择路由;
所述功能选择路由用于基于路由策略,根据所述对象缓存器中缓存的功能字节流的对象,确定所述装载后的功能字节流;运行所述功能字节流,以运行所述目标功能。
CN201610719652.XA 2016-08-24 2016-08-24 一种软件热插拔方法及系统 Active CN106406928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610719652.XA CN106406928B (zh) 2016-08-24 2016-08-24 一种软件热插拔方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610719652.XA CN106406928B (zh) 2016-08-24 2016-08-24 一种软件热插拔方法及系统

Publications (2)

Publication Number Publication Date
CN106406928A true CN106406928A (zh) 2017-02-15
CN106406928B CN106406928B (zh) 2019-08-09

Family

ID=58005273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610719652.XA Active CN106406928B (zh) 2016-08-24 2016-08-24 一种软件热插拔方法及系统

Country Status (1)

Country Link
CN (1) CN106406928B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6629315B1 (en) * 2000-08-10 2003-09-30 International Business Machines Corporation Method, computer program product, and system for dynamically refreshing software modules within an actively running computer system
CN101102219A (zh) * 2007-07-30 2008-01-09 华为技术有限公司 软件升级系统以及软件升级方法
CN101126987A (zh) * 2006-08-15 2008-02-20 阿尔卡特朗讯公司 流处理系统中的软件替换
CN101520792A (zh) * 2008-12-17 2009-09-02 康佳集团股份有限公司 一种自动挂载与识别系统文件的方法及其系统
CN102725730A (zh) * 2009-12-18 2012-10-10 赛丹思科大学 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统
CN102971708A (zh) * 2010-10-19 2013-03-13 英派尔科技开发有限公司 多线程程序的低功率执行
CN104267985A (zh) * 2014-09-23 2015-01-07 杭州华三通信技术有限公司 一种软件加载方法和设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6629315B1 (en) * 2000-08-10 2003-09-30 International Business Machines Corporation Method, computer program product, and system for dynamically refreshing software modules within an actively running computer system
CN101126987A (zh) * 2006-08-15 2008-02-20 阿尔卡特朗讯公司 流处理系统中的软件替换
CN101102219A (zh) * 2007-07-30 2008-01-09 华为技术有限公司 软件升级系统以及软件升级方法
CN101520792A (zh) * 2008-12-17 2009-09-02 康佳集团股份有限公司 一种自动挂载与识别系统文件的方法及其系统
CN102725730A (zh) * 2009-12-18 2012-10-10 赛丹思科大学 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统
CN102971708A (zh) * 2010-10-19 2013-03-13 英派尔科技开发有限公司 多线程程序的低功率执行
CN104267985A (zh) * 2014-09-23 2015-01-07 杭州华三通信技术有限公司 一种软件加载方法和设备

Also Published As

Publication number Publication date
CN106406928B (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
US7464016B2 (en) Hot plug and hot pull system simulation
US10873512B2 (en) Methods for managing self-healing cloud infrastructure and applications
US7184942B2 (en) Verifying the configuration of a virtual network
CN103106138B (zh) 测试用例与测试脚本同步的方法及装置
CN110673941B (zh) 多机房中微服务的迁移方法、电子设备及存储介质
JP2005301993A (ja) コマンドバインディングを実行するためのデータバインディング機構のアプリケーション
US20100162203A1 (en) Project management device and method for architecture modeling tool of application software on autosar and computer readable recording medium therefor
CN106406986A (zh) 一种资源共享方法及装置
EP2328301A1 (en) Method and apparatus for managing the authority in workflow component based on authority component
CN106095483A (zh) 服务的自动化部署方法及装置
CN106484464A (zh) 调谐器芯片驱动方法和电子设备
CN112035216A (zh) 一种Kubernetes集群网络和OpenStack网络的打通方法
CN104517067A (zh) 访问数据的方法、装置及系统
CN106990974A (zh) 一种app应用更新方法、装置及电子设备
CN107562382A (zh) 一种基于定时任务的磁盘自动动态扩容方法及系统
CN106294033A (zh) 一种多机房缓存同步功能的测试方法及装置
CN106406928A (zh) 一种软件热插拔方法及系统
US11977559B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
CN110413311A (zh) 系统配置方法及服务器
CN108055159A (zh) 一种集群节点操作同步方法及装置
US8739088B1 (en) Using constraints wtihin a high-level modeling system for circuit design
CN103544354B (zh) 基于网络的并行计算机动态仿真方法和装置
CN103455641B (zh) 交叉多次检索的系统和方法
CN106126285A (zh) 一种软件升级方法及终端
CN101211276A (zh) 用于处理业务过程中的中断的方法和系统

Legal Events

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