本發(fā)明涉及軟件熱插拔
技術(shù)領(lǐng)域:
,特別涉及一種軟件熱插拔方法及系統(tǒng)。
背景技術(shù):
:軟件熱插拔,是指系統(tǒng)在運(yùn)行時(shí),動(dòng)態(tài)的插入或拔出相應(yīng)功能組件或配置,完成指定任務(wù)的過程而不影響系統(tǒng)整體運(yùn)行的操作。這里所說的軟件熱插拔主要針對軟件系統(tǒng)中相應(yīng)功能組件而言,對于一個(gè)完整的軟件系統(tǒng),可以將其分為若干個(gè)相互獨(dú)立、能夠完成特定子任務(wù)的功能性組件,這種組件就是熱插拔的對象。目前,通常為使用腳本語言的方式實(shí)現(xiàn)對熱插拔對象的熱插拔操作,使用腳本語言的方式在每次對熱插拔對象進(jìn)行功能熱插或熱拔操作時(shí),都需要構(gòu)建語法樹,但在高并發(fā)狀態(tài)下,需要頻繁的進(jìn)行熱插拔操作,而每一次進(jìn)行熱插拔操作都需要構(gòu)建一次語法樹,因此,軟件熱插拔的效率低下。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例的目的在于提供一種軟件熱插拔方法及系統(tǒng),以提高軟件熱插拔的效率。為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種軟件熱插拔方法,應(yīng)用于軟件熱插拔系統(tǒng),所述軟件熱插拔系統(tǒng)包括數(shù)據(jù)同步器、功能裝載器、對象緩存器和功能庫,所述方法包括:所述數(shù)據(jù)同步器監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,所述熱插拔指令中至少包括所述目標(biāo)功能的功能描述;在所述熱插拔指令為熱插指令的情況下,所述數(shù)據(jù)同步器根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器;所確定的功能裝載器對所述功能字節(jié)流進(jìn)行裝載;所述對象緩存器至少對所述功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存;在所述熱插拔指令為熱拔指令的情況下,所述對象緩存器刪除所述功能字節(jié)流的對象以及裝載所述目標(biāo)功能的功能字節(jié)流的功能裝載器的對象。優(yōu)選的,所述功能庫中包括功能的功能描述與功能字節(jié)流的對應(yīng)關(guān)系;所述數(shù)據(jù)同步器根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流,包括:所述數(shù)據(jù)同步器根據(jù)所述功能描述和所述對應(yīng)關(guān)系,確定待拉取的目標(biāo)功能對應(yīng)的功能字節(jié)流;從所述功能庫中拉取所述功能字節(jié)流。優(yōu)選的,所述根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器,包括:根據(jù)所述功能描述,判斷所述目標(biāo)功能是否為全局功能;如果是,將全局功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器;如果否,新建功能裝載器,將所新建的功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器。優(yōu)選的,所述熱插拔指令中還包括所述目標(biāo)功能的版本信息;所述數(shù)據(jù)同步器根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流,包括:所述數(shù)據(jù)同步器根據(jù)所述功能描述和所述版本信息,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流;所述對象緩存器至少對所述功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存,包括:所述對象緩存器對所述功能字節(jié)流的對象、所述目標(biāo)功能的版本信息以及所確定的功能裝載器的對象進(jìn)行緩存。優(yōu)選的,所述軟件熱插拔系統(tǒng)還包括功能選擇路由,所述方法還包括:所述功能選擇路由基于路由策略,根據(jù)所述對象緩存器中緩存的功能字節(jié)流的對象,確定所述裝載后的功能字節(jié)流;運(yùn)行所述功能字節(jié)流,以運(yùn)行所述目標(biāo)功能。為達(dá)到上述目的,本發(fā)明實(shí)施例還公開了一種軟件熱插拔系統(tǒng),所述軟件熱插拔系統(tǒng)包括數(shù)據(jù)同步器、功能裝載器、對象緩存器和功能庫,其中,所述數(shù)據(jù)同步器,用于監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,所述熱插拔指令中至少包括所述目標(biāo)功能的功能描述;在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器;所述功能裝載器,用于對所述功能字節(jié)流進(jìn)行裝載;所述對象緩存器,用于至少對所述功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存;以及在所述熱插拔指令為熱拔指令的情況下,刪除所述功能字節(jié)流的對象以及裝載所述目標(biāo)功能的功能字節(jié)流的功能裝載器的對象。優(yōu)選的,所述功能庫中包括功能的功能描述與功能字節(jié)流的對應(yīng)關(guān)系;所述數(shù)據(jù)同步器,具體用于:監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述和所述對應(yīng)關(guān)系,確定待拉取的目標(biāo)功能對應(yīng)的功能字節(jié)流;從所述功能庫中拉取所述功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器。優(yōu)選的,所述數(shù)據(jù)同步器,具體用于:監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述和所述對應(yīng)關(guān)系,確定待拉取的目標(biāo)功能對應(yīng)的功能字節(jié)流;從所述功能庫中拉取所述功能字節(jié)流;根據(jù)所述功能描述,判斷所述目標(biāo)功能是否為全局功能;如果是,將全局功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器;如果否,新建功能裝載器,將所新建的功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器。優(yōu)選的,所述熱插拔指令中還包括所述目標(biāo)功能的版本信息;所述數(shù)據(jù)同步器,具體用于:監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,所述熱插拔指令中至少包括所述目標(biāo)功能的功能描述;在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述和所述版本信息,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器;所述對象緩存器,具體用于:至少對所述功能字節(jié)流的對象、所述目標(biāo)功能的版本信息以及所確定的功能裝載器的對象進(jìn)行緩存;以及在所述熱插拔指令為熱拔指令的情況下,刪除所述功能字節(jié)流的對象以及裝載所述目標(biāo)功能的功能字節(jié)流的功能裝載器的對象。優(yōu)選的,還包括:功能選擇路由;所述功能選擇路由用于基于路由策略,根據(jù)所述對象緩存器中緩存的功能字節(jié)流的對象,確定所述裝載后的功能字節(jié)流;運(yùn)行所述功能字節(jié)流,以運(yùn)行所述目標(biāo)功能。本發(fā)明實(shí)施例公開了一種軟件熱插拔方法及系統(tǒng),方法包括:數(shù)據(jù)同步器監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令;在所述熱插拔指令為熱插指令的情況下,數(shù)據(jù)同步器根據(jù)功能描述,從功能庫中拉取目標(biāo)功能的功能字節(jié)流;并確定裝載功能字節(jié)流的功能裝載器;所確定的功能裝載器對功能字節(jié)流進(jìn)行裝載;對象緩存器至少對功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存;在熱插拔指令為熱拔指令的情況下,對象緩存器刪除所緩存的對象。應(yīng)用本發(fā)明實(shí)施例,不需要構(gòu)建語法樹,根據(jù)功能描述可從功能庫中直接拉取對應(yīng)的功能字節(jié)流進(jìn)行裝載,并將裝載后的對象緩存到對象緩存器中,通過刪除緩存器中緩存的對象可直接對裝載后的功能字節(jié)流進(jìn)行熱拔操作,提高了軟件熱插拔的效率。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種軟件熱插拔方法的流程示意圖;圖2為本發(fā)明實(shí)施例提供的另一種軟件熱插拔方法的流程示意圖;圖3為本發(fā)明實(shí)施例提供的一種軟件熱插拔系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的另一種軟件熱插拔系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。下面通過具體實(shí)施例,對本發(fā)明進(jìn)行詳細(xì)的說明。圖1為本發(fā)明實(shí)施例提供的一種軟件熱插拔方法的流程示意圖,所述方法優(yōu)先適用于軟件熱插拔系統(tǒng),所述軟件熱插拔系統(tǒng)包括數(shù)據(jù)同步器、功能裝載器、對象緩存器和功能庫,所述方法包括:S101:所述數(shù)據(jù)同步器監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,所述熱插拔指令中至少包括所述目標(biāo)功能的功能描述;本領(lǐng)域技術(shù)人員可以理解的是,軟件熱插拔是指系統(tǒng)在運(yùn)行時(shí),動(dòng)態(tài)的插入或拔出相應(yīng)功能組件或配置,完成指定任務(wù)的過程而不影響系統(tǒng)整體運(yùn)行的操作。這里所說的軟件熱插拔主要針對軟件系統(tǒng)中相應(yīng)功能組件而言,對于一個(gè)完整的軟件系統(tǒng),可以將其分為若干個(gè)相互獨(dú)立、能夠完成特定子任務(wù)的功能性組件,這種組件就是熱插拔的對象。在一個(gè)軟件系統(tǒng)中,通常會有多個(gè)功能模塊,示例性的,在語音聊天軟件“QQ2016”中提供有“皮膚設(shè)置”、“場景秀”、“多彩氣泡”、“界面管理”等多個(gè)功能組件,每一個(gè)功能組件之間是相互獨(dú)立的,這里所說的“皮膚設(shè)置”、“場景秀”、“多彩氣泡”以及“界面管理”均為對應(yīng)功能的描述。不難理解的是,當(dāng)系統(tǒng)配置服務(wù)器集群發(fā)出針對軟件中的目標(biāo)功能的熱插拔指令時(shí),該熱插拔指令將被數(shù)據(jù)同步器監(jiān)聽到,例如,配置服務(wù)器集群發(fā)出熱插拔指令可以為“多彩氣泡”功能的熱插指令,那么數(shù)據(jù)同步器將監(jiān)聽到該熱插指令,當(dāng)然配置服務(wù)器集群發(fā)出的熱插拔指令也可以為“多彩氣泡”功能的熱拔指令,相應(yīng)的,數(shù)據(jù)同步器將監(jiān)聽到的指令為“多彩氣泡”功能的熱拔指令。配置服務(wù)器集群所發(fā)出的熱插拔指令不僅可以是“多彩氣泡”功能的,還可以是軟件中其他任意一種功能的,因此,本發(fā)明實(shí)施例并不對熱插拔指令的具體形式做進(jìn)一步限定。S102:在所述熱插拔指令為熱插指令的情況下,所述數(shù)據(jù)同步器根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流。由上述可知,當(dāng)配置服務(wù)器集群所發(fā)出的熱插拔指令為熱插指令的時(shí)候,數(shù)據(jù)同步器將監(jiān)聽到熱插指令,例如,數(shù)據(jù)同步器監(jiān)聽到的指令為“多彩氣泡”功能的熱插指令,該熱插指令對應(yīng)的功能描述為“多彩氣泡”。數(shù)據(jù)同步器從功能庫中找到“多彩氣泡”對應(yīng)的功能字節(jié)流,本領(lǐng)域技術(shù)人員可以理解的是,功能庫為功能模塊的集合,存儲有各個(gè)功能以及功能的程序代碼,編譯后的程序代碼通常稱為功能字節(jié)流。進(jìn)一步的,所述功能庫中可以包括功能的功能描述與功能字節(jié)流的對應(yīng)關(guān)系;數(shù)據(jù)同步器根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流,可以根據(jù)所述功能描述和所述對應(yīng)關(guān)系,確定待拉取的目標(biāo)功能對應(yīng)的功能字節(jié)流;從所述功能庫中拉取所述功能字節(jié)流。實(shí)際應(yīng)用中,功能庫中可以預(yù)先存儲一個(gè)功能描述與功能字節(jié)流的對應(yīng)關(guān)系,對應(yīng)關(guān)系的形式有很多,示例性的,對應(yīng)關(guān)系的形式可以為表格式,具體的可以如表1所示。表1功能描述功能字節(jié)流QQ2016功能字節(jié)流A皮膚設(shè)置功能字節(jié)流B場景秀功能字節(jié)流C多彩氣泡功能字節(jié)流D界面管理功能字節(jié)流E由上述表1不難得知,功能描述為“QQ2016”功能對應(yīng)的功能字節(jié)流為“功能字節(jié)流A”、功能描述為“皮膚設(shè)置”功能對應(yīng)的功能字節(jié)流為“功能字節(jié)流B”、…、功能描述為“界面管理”功能對應(yīng)的功能字節(jié)流為“功能字節(jié)流E”。為了清楚的描述拉取功能字節(jié)流的過程,本實(shí)施例以功能描述為“QQ2016”為例進(jìn)行說明,由上述表1不難查得功能描述為“QQ2016”的功能對應(yīng)的功能字節(jié)流為“功能字節(jié)流A”,也就是說,數(shù)據(jù)同步器確定出需要進(jìn)行熱插操作的對象就是“功能字節(jié)流A”,即需要從功能庫中拉取的功能字節(jié)流為“功能字節(jié)流A”,由于功能字節(jié)流A是存儲在功能庫中的一個(gè)功能模塊,因此,在數(shù)據(jù)同步器確定出拉取的是功能字節(jié)流A后,便可從功能庫中直接找到功能字節(jié)流A并將功能字節(jié)流A拉取到數(shù)據(jù)同步器中。需要說明的是,對于上述表1以及表1中所列舉的內(nèi)容僅為本發(fā)明實(shí)施例的一種具體事例,對于功能描述與功能字節(jié)流的對應(yīng)關(guān)系的形式以及對應(yīng)關(guān)系的具體內(nèi)容,本申請并不做進(jìn)明確限定。進(jìn)一步的,為了能夠更加方便準(zhǔn)確的對功能字節(jié)流進(jìn)行裝載,熱插拔指令中還包括所述目標(biāo)功能的版本信息;數(shù)據(jù)同步器根據(jù)所述功能描述,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流,可以根據(jù)所述功能描述和所述版本信息,從所述功能庫中拉取所述目標(biāo)功能的功能字節(jié)流。在軟件開發(fā)調(diào)試以及應(yīng)用過程中,會經(jīng)常對功能做一些更新升級,為了區(qū)分新舊功能,通常用不同的版本信息來標(biāo)識不同的功能,例如,版本信息為:8.4.18357.0的“QQ2016”和版本信息為:8.3.18038.0的“QQ2016”,這兩種版本號對應(yīng)于同一個(gè)的功能描述“QQ2016”,但是它們對應(yīng)的功能卻是不同的。如版本信息為:8.3.18038.0的“QQ2016”中沒有“多彩氣泡”的功能,但在版本信息為:8.4.18357.0的“QQ2016”中就添加了“多彩氣泡”的功能。由上可知,同一功能描述可以對應(yīng)有不同版本信息時(shí),不同版本對應(yīng)的功能字節(jié)流也不同,因此,數(shù)據(jù)同步器在從功能庫中拉取功能字節(jié)流時(shí)不僅需要知道功能對應(yīng)的功能描述,還需要知道功能對應(yīng)的版本信息;例如,數(shù)據(jù)同步器監(jiān)聽到的服務(wù)器配置集群所發(fā)出的熱插指令中包含功能描述以及版本信息,其中,功能描述可以為:QQ2016、版本信息可以為:8.4.18357.0,數(shù)據(jù)同步器根據(jù)監(jiān)聽到的功能描述和版本信息從功能庫中拉取對應(yīng)的功能字節(jié)流,這里需要說明的是,當(dāng)熱插拔指令中包括功能的版本信息時(shí),對應(yīng)的在功能庫中預(yù)先存儲的對應(yīng)關(guān)系為功能描述、版本信息和功能字節(jié)流之間的對應(yīng)關(guān)系,示例性的,對應(yīng)關(guān)系的形式可以為表格式,具體的可以如表2所示。表2由上述表2可知,同一個(gè)功能描述可以對應(yīng)有多個(gè)版本信息,每一個(gè)版本信息對應(yīng)一個(gè)功能字節(jié)流,因此,數(shù)據(jù)同步器可以根據(jù)功能描述和版本信息在上述表2中可查找到唯一的功能字節(jié)流。示例性的,數(shù)據(jù)同步器監(jiān)聽到熱插指令中包含功能描述為:QQ2016、版本信息為:8.4.18357.0,根據(jù)“QQ2016”和“8.4.18357.0”可以從表2中查找到對應(yīng)的功能字節(jié)流為“功能字節(jié)流A2”,數(shù)據(jù)同步器確定出拉取的是功能字節(jié)流A2后,便可從功能庫中直接找到功能字節(jié)流A2,并將功能字節(jié)流A2拉取到數(shù)據(jù)同步器中。值得說明的是,上述表1以及表2中所列舉的內(nèi)容僅為本發(fā)明實(shí)施例的一種具體示例,本申請并不對對應(yīng)關(guān)系的形式以及對應(yīng)關(guān)系的具體內(nèi)容做進(jìn)一步的限定。S103:根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器;對于功能裝載器來說,功能裝載器可以理解為一個(gè)安裝工具,可以理解的是,不同的部件需要選用與其匹配的安裝工具進(jìn)行安裝。這里功能裝載器需要裝載的對象為數(shù)據(jù)同步器從功能庫中拉取的功能字節(jié)流,但是不同的功能字節(jié)流需要選用不同的功能裝載器進(jìn)行裝載,因此,在對功能字節(jié)流進(jìn)行裝載之前需要先確定與需要裝載的功能字節(jié)流匹配的功能裝載器。實(shí)際應(yīng)用中,所述根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器,可以根據(jù)所述功能描述,判斷所述目標(biāo)功能是否為全局功能;如果是,將全局功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器;如果否,新建功能裝載器,將所新建的功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器。不同的功能字節(jié)流需要用不同的功能裝載器進(jìn)行裝載,而功能描述是功能類型的唯一的標(biāo)識信息,通過功能字節(jié)流對應(yīng)的功能描述可以確定出該功能字節(jié)流對應(yīng)功能的類型以及所對應(yīng)的功能裝載器。通常情況下,目標(biāo)功能可分為全局功能和非全局功能,或者可以稱為父功能和子功能,相應(yīng)的,功能裝載器也可分為全局功能裝載器和非全局功能裝載器,不難理解的是,全局功能裝載器負(fù)責(zé)裝載全局功能,非全局功能裝載器負(fù)責(zé)裝載非全局功能。全局功能裝載器在計(jì)算機(jī)系統(tǒng)的開發(fā)過程中就有相應(yīng)的配置,因此,全局功能的功能字節(jié)流可以直接用全局功能裝載器進(jìn)行裝載。示例性的,當(dāng)數(shù)據(jù)同步器根據(jù)功能描述“QQ2016”從功能庫中拉取的功能字節(jié)流為QQ2016對應(yīng)的主程序,因?yàn)镼Q為通用計(jì)算機(jī)最為常用的功能,故“QQ2016”是全局功能,可以直接用全局功能裝載器進(jìn)行裝載;當(dāng)數(shù)據(jù)同步器根據(jù)功能描述“多彩氣泡”從功能庫中拉取的功能字節(jié)流為“功能字節(jié)流D”,而“多彩氣泡”功能為“QQ”功能中的一個(gè)功能子模塊,因此“多彩氣泡”功能為非全局功能,這時(shí),需要重新建立一個(gè)功能裝載器。例如,新建一個(gè)子功能裝載器d,新建的子功能裝載器d用于裝載“功能字節(jié)流D”。同樣的,當(dāng)熱插拔指令還包括目標(biāo)功能的版本信息時(shí),因?yàn)楣δ苊枋鍪枪δ茴愋偷奈ㄒ粯?biāo)識,所以熱插拔指令中包不包括版本信息并不影響功能裝載器的確定。示例性的,數(shù)據(jù)同步器監(jiān)聽到熱插指令中包含功能描述為:QQ2016、版本信息為:8.4.18357.0,從表2中查找到對應(yīng)的功能字節(jié)流為“功能字節(jié)流A2”,根據(jù)功能描述QQ2016便可以確定出裝載功能字節(jié)流A2的功能裝載器為全局裝載器。S104:所確定的功能裝載器對所述功能字節(jié)流進(jìn)行裝載;確定出裝載功能字節(jié)流的功能裝載器后,功能裝載器將對功能字節(jié)流進(jìn)行裝載,例如,根據(jù)上述已確定裝載功能字節(jié)流A2所需的功能裝載器為全局功能裝載器,那么,全局功能裝載器將對數(shù)據(jù)同步器中已拉取的功能字節(jié)流A2進(jìn)行裝載,裝載就是對功能的安裝,可以將功能字節(jié)流A2裝載在計(jì)算機(jī)系統(tǒng)中設(shè)置好的內(nèi)存空間中,如設(shè)置的內(nèi)存空間為磁盤F分區(qū),全局功能裝載器對裝載后的功能字節(jié)流A2進(jìn)行實(shí)例化,所謂實(shí)例化就是構(gòu)造對象,就是類創(chuàng)建對象的過程,在本發(fā)明實(shí)施例中,全局裝載器對裝載后的功能字節(jié)流A2進(jìn)行實(shí)例化后得到“功能字節(jié)流A2”對象,表現(xiàn)為在計(jì)算機(jī)操作系統(tǒng)的桌面上出現(xiàn)“QQ2016”的快捷圖標(biāo),通過該快捷圖標(biāo)便可以運(yùn)行已經(jīng)裝載的“QQ2016”,事實(shí)上,實(shí)例化后得到的對象可以理解為裝載后功能字節(jié)流A2的標(biāo)識信息,通過“功能字節(jié)流A2”的對象可以找到對應(yīng)的功能。與全局功能裝載器裝載過程不同的是,在對非全局功能對應(yīng)的功能字節(jié)流進(jìn)行裝載時(shí),功能字節(jié)流需要裝載到其對應(yīng)的上一級功能所裝載的位置下。例如,非全局功能“多彩氣泡”對應(yīng)的功能字節(jié)流D為全局功能“QQ2016”的一個(gè)子功能模塊,因此,在裝載“多彩氣泡”功能對應(yīng)的功能字節(jié)流D時(shí),需要預(yù)先找到全局功能“QQ2016”對應(yīng)功能字節(jié)流A的裝載位置,將功能字節(jié)流D裝載在功能字節(jié)流A的裝載位置下。S105:所述對象緩存器至少對所述功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存;在功能裝載器完成對功能字節(jié)流的裝載之后,需要將安裝后的狀態(tài)緩存到對象緩存器中,裝載后的功能字節(jié)流有一個(gè)標(biāo)識信息,就是上述所說的功能字節(jié)流的對象,完成功能字節(jié)流裝載的功能裝載器也有一個(gè)標(biāo)識信息,這一標(biāo)識信息稱為功能裝載器的對象。示例性的,對象緩存器需要將功能字節(jié)流D的對象和完成對功能字節(jié)流D裝載的功能裝載器d的對象進(jìn)行緩存,對象緩存器就相當(dāng)于是一個(gè)檢索單元,通過對象緩存器中緩存的對象可以運(yùn)行對應(yīng)的裝載后的功能字節(jié)流。進(jìn)一步的,當(dāng)熱插拔指令中還包有述目標(biāo)功能的版本信息時(shí);對象緩存器至少對所述功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存,對所述功能字節(jié)流的對象、所述目標(biāo)功能的版本信息以及所確定的功能裝載器的對象進(jìn)行緩存。不難理解的是,當(dāng)熱插拔指令中還包括有版本信息時(shí),由于每一個(gè)功能字節(jié)流對應(yīng)一個(gè)版本信息,因此,為了能夠準(zhǔn)確的找到裝載后的功能字節(jié)流,對象緩存器還需要將功能字節(jié)流對應(yīng)的版本信息連同功能字節(jié)流的對象和功能裝載器的對象一起進(jìn)行緩存。示例性的,功能裝載器d對版本信息為“8.4.18357.0”的“多彩氣泡”功能對應(yīng)的功能字節(jié)流D0進(jìn)行裝載后,對象緩存器將版本信息“8.4.18357.0”與功能字節(jié)流D0的對象和功能裝載器d的對象一起緩存起來。值得說明的是,對象緩存器緩存的對象以實(shí)際的功能字節(jié)流為準(zhǔn),上述僅為本發(fā)明實(shí)施例的一個(gè)具體示例,并不構(gòu)成對本申請保護(hù)范圍的限定。S106:在所述熱插拔指令為熱拔指令的情況下,所述對象緩存器刪除所述功能字節(jié)流的對象以及裝載所述目標(biāo)功能的功能字節(jié)流的功能裝載器的對象。由上述不難得知,針對每一個(gè)熱插指令,在接收到熱插指令后都需要對熱插指令信息對應(yīng)的目標(biāo)功能進(jìn)行裝載,當(dāng)數(shù)據(jù)同步器監(jiān)聽到已裝載的目標(biāo)功能熱拔指令時(shí),數(shù)據(jù)同步器將使能對象緩存器刪除已緩存的對象,例如,用戶在使用“QQ2016”功能時(shí),感覺“QQ2016”中的“多彩氣泡”功能不好用,現(xiàn)需要移除該功能,這是數(shù)據(jù)同步器監(jiān)聽到已裝載的功能字節(jié)流D對應(yīng)的“多彩氣泡”功能的熱拔指令,數(shù)據(jù)同步器使能對象緩存器,對象緩存器將根據(jù)熱拔指令中包括的功能描述找到緩存的功能字節(jié)流的對象和功能裝載器的對象,之后將二者刪除,釋放緩存。應(yīng)用圖1提供的實(shí)施例,根據(jù)功能描述可從功能庫中直接拉取對應(yīng)的功能字節(jié)流進(jìn)行裝載,并將裝載后的對象緩存到對象緩存器中,通過刪除緩存器中緩存的對象可直接對裝載后的功能字節(jié)流進(jìn)行熱拔操作,提高了軟件熱插拔的效率。圖2為本發(fā)明實(shí)施例提供的另一種軟件熱插拔方法的流程示意圖,在上述圖1所提供的軟件熱插拔方法的基礎(chǔ)上,所述軟件熱插拔系統(tǒng)還包括功能選擇路由,所述方法還包括:S107:所述功能選擇路由基于路由策略,根據(jù)所述對象緩存器中緩存的功能字節(jié)流的對象,確定所述裝載后的功能字節(jié)流;運(yùn)行所述功能字節(jié)流,以運(yùn)行所述目標(biāo)功能。當(dāng)功能字節(jié)流裝載完成之后,通常用戶會運(yùn)行裝載后的功能字節(jié)流,功能選擇路根據(jù)用戶的操作生成特定的路由策略,功能選擇路由器將基于該路由策略,從對象緩存器中找到已緩存的滿足路由策略的功能字節(jié)流的對象,根據(jù)找到的功能字節(jié)流的對象可以唯一找到功能字節(jié)流裝載的內(nèi)存空間,直接訪問并運(yùn)行已經(jīng)裝載的功能字節(jié)流。應(yīng)用圖2提供的實(shí)施例,功能選擇路由可以通過緩存器中緩存的對象直接訪問并運(yùn)行已裝載的功能字節(jié)流,提高了軟件運(yùn)行的效率。本發(fā)明實(shí)施例還提供了一種軟件熱插拔系統(tǒng),如圖3所示,所述軟件熱插拔系統(tǒng)包括:數(shù)據(jù)同步器201、功能裝載器202、對象緩存器203和功能庫204,其中,數(shù)據(jù)同步器201,用于監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,所述熱插拔指令中至少包括所述目標(biāo)功能的功能描述;在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述,從所述功能庫204中拉取所述目標(biāo)功能的功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器;功能裝載器202,用于對所述功能字節(jié)流進(jìn)行裝載;對象緩存器203,用于至少對所述功能字節(jié)流的對象以及所確定的功能裝載器的對象進(jìn)行緩存;以及在所述熱插拔指令為熱拔指令的情況下,刪除所述功能字節(jié)流的對象以及裝載所述目標(biāo)功能的功能字節(jié)流的功能裝載器的對象。實(shí)際應(yīng)用中,數(shù)據(jù)同步器201,具體用于:監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述和所述對應(yīng)關(guān)系,確定待拉取的目標(biāo)功能對應(yīng)的功能字節(jié)流;從所述功能庫204中拉取所述功能字節(jié)流;根據(jù)所述功能描述,判斷所述目標(biāo)功能是否為全局功能;如果是,將全局功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器;如果否,新建功能裝載器,將所新建的功能裝載器確定為裝載所述功能字節(jié)流的功能裝載器。實(shí)際應(yīng)用中,當(dāng)功能庫204中包括功能的功能描述與功能字節(jié)流的對應(yīng)關(guān)系時(shí);所述數(shù)據(jù)同步器201,具體用于:監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述和所述對應(yīng)關(guān)系,確定待拉取的目標(biāo)功能對應(yīng)的功能字節(jié)流;從所述功能庫204中拉取所述功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器。實(shí)際應(yīng)用中,熱插拔指令中還可以包括所述目標(biāo)功能的版本信息,在熱插拔指令中還包括所述目標(biāo)功能的版本信息的情況下;數(shù)據(jù)同步器201,具體用于:監(jiān)聽配置服務(wù)集群發(fā)出的針對軟件中目標(biāo)功能的熱插拔指令,所述熱插拔指令中至少包括所述目標(biāo)功能的功能描述;在所述熱插拔指令為熱插指令的情況下,根據(jù)所述功能描述和所述版本信息,從所述功能庫中204拉取所述目標(biāo)功能的功能字節(jié)流;根據(jù)所述功能描述,確定裝載所述功能字節(jié)流的功能裝載器;對象緩存器203,具體用于:至少對所述功能字節(jié)流的對象、所述目標(biāo)功能的版本信息以及所確定的功能裝載器的對象進(jìn)行緩存;以及在所述熱插拔指令為熱拔指令的情況下,刪除所述功能字節(jié)流的對象以及裝載所述目標(biāo)功能的功能字節(jié)流的功能裝載器的對象。應(yīng)用圖3提供的實(shí)施例,根據(jù)功能描述可從功能庫中直接拉取對應(yīng)的功能字節(jié)流進(jìn)行裝載,并將裝載后的對象緩存到對象緩存器中,通過刪除緩存器中緩存的對象可直接對裝載后的功能字節(jié)流進(jìn)行熱拔操作,提高了軟件熱插拔的效率。圖4為本發(fā)明實(shí)施例提供的另一種軟件熱插拔系統(tǒng)的結(jié)構(gòu)示意圖,在上述圖3所提供的軟件熱插拔系統(tǒng)的基礎(chǔ)上,系統(tǒng)還包括:功能選擇路由205;功能選擇路由205,用于基于路由策略,根據(jù)所述對象緩存器中緩存的功能字節(jié)流的對象,確定所述裝載后的功能字節(jié)流;運(yùn)行所述功能字節(jié)流,以運(yùn)行所述目標(biāo)功能。應(yīng)用圖4提供的實(shí)施例,功能選擇路由可以通過緩存器中緩存的對象直接訪問并運(yùn)行已裝載的功能字節(jié)流,提高了軟件運(yùn)行的效率。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。本說明書中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:ROM/RAM、磁碟、光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。當(dāng)前第1頁1 2 3