專(zhuān)利名稱(chēng):在軟件運(yùn)行的同時(shí)更新軟件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及軟件發(fā)行,尤其涉及動(dòng)態(tài)地更新軟件使得在軟件運(yùn)行的同時(shí)添加新的特征或更正軟件中的錯(cuò)誤。
背景技術(shù):
在諸如公司等大企業(yè)中,計(jì)算資源是通過(guò)企業(yè)擁有的計(jì)算機(jī)系統(tǒng)網(wǎng)絡(luò)來(lái)互相連接的,它們滿(mǎn)足了企業(yè)的各種計(jì)算需求。該網(wǎng)絡(luò)能夠跨越不同的地理位置。企業(yè)的內(nèi)部用戶(hù)(雇員)和外部用戶(hù)(顧客)要求企業(yè)的計(jì)算資源是高度可用同時(shí)也是高度安全的。在現(xiàn)實(shí)中,有時(shí)這兩個(gè)要求互相抵觸。例如,為了使計(jì)算資源安全,計(jì)算資源必須經(jīng)常被暫停來(lái)安裝安全補(bǔ)丁。另一方面,為了使計(jì)算資源以持續(xù)的頻率可容易地使用,計(jì)算資源應(yīng)該很少被暫停。圖1詳細(xì)地示出了這些和其它問(wèn)題。
企業(yè)網(wǎng)絡(luò)100包括客戶(hù)機(jī)102,它是用戶(hù)可以通過(guò)其來(lái)訪問(wèn)經(jīng)由網(wǎng)絡(luò)104互連的共享的計(jì)算資源的計(jì)算機(jī)。企業(yè)網(wǎng)絡(luò)100的這些計(jì)算資源是由諸如服務(wù)器A106等一個(gè)或多個(gè)服務(wù)器提供的,在服務(wù)器A106上運(yùn)行在線(xiàn)服務(wù)。為了使服務(wù)器A106上運(yùn)行的在線(xiàn)服務(wù)更安全,企業(yè)通常根據(jù)策略指定管理員110來(lái)使用安全修補(bǔ)為在線(xiàn)服務(wù)的已報(bào)告或已發(fā)現(xiàn)的易受攻擊性打補(bǔ)丁。這樣的補(bǔ)丁是通過(guò)在運(yùn)行在擔(dān)當(dāng)測(cè)試機(jī)的服務(wù)器B108上的在線(xiàn)服務(wù)(經(jīng)更新的服務(wù))的副本上安裝并應(yīng)用補(bǔ)丁來(lái)實(shí)現(xiàn)的。管理員110根據(jù)企業(yè)的計(jì)算策略來(lái)驗(yàn)證并確認(rèn)經(jīng)更新的服務(wù),以確保一旦被使用,經(jīng)更新的服務(wù)不太可能引起問(wèn)題。在其上測(cè)試經(jīng)更新的服務(wù)的服務(wù)器B108是在物理上與在其上向客戶(hù)機(jī)102提供在線(xiàn)服務(wù)的服務(wù)器A106不同的機(jī)器。當(dāng)經(jīng)更新的服務(wù)通過(guò)服務(wù)器B108上的測(cè)試后,管理員110通過(guò)將服務(wù)器A106暫停一段時(shí)間來(lái)部署該補(bǔ)丁,在這段時(shí)間內(nèi)在線(xiàn)服務(wù)不再對(duì)客戶(hù)機(jī)102可用。然后,將該補(bǔ)丁應(yīng)用于在線(xiàn)服務(wù),隨后服務(wù)器A106恢復(fù)以再次向客戶(hù)機(jī)102提供服務(wù)。
將服務(wù)器A106暫停以安裝補(bǔ)丁的問(wèn)題是,在服務(wù)器A106被暫停的時(shí)刻服務(wù)上下文丟失,并保持不活躍。服務(wù)器上下文是在其中客戶(hù)機(jī)102已經(jīng)向運(yùn)行在服務(wù)器A106上的在線(xiàn)服務(wù)提供了請(qǐng)求或某種信息的狀態(tài)。存在客戶(hù)機(jī)102期望該在線(xiàn)服務(wù)會(huì)服務(wù)該請(qǐng)求或提供某些與所提供的信息相關(guān)的計(jì)算。當(dāng)在線(xiàn)服務(wù)被暫停時(shí),這樣的服務(wù)器上下文被破壞。當(dāng)服務(wù)器A106以打過(guò)補(bǔ)丁的在線(xiàn)服務(wù)再次恢復(fù)時(shí),服務(wù)器A106不太可能記起客戶(hù)機(jī)102先前提供過(guò)什么,因?yàn)楸姸喾?wù)不持久性地存儲(chǔ)服務(wù)上下文,或者由服務(wù)器A106重啟所引起的延遲對(duì)客戶(hù)機(jī)102太長(zhǎng),以至于不能接受。例如,客戶(hù)機(jī)102可能剛在服務(wù)器A106被暫停前向在線(xiàn)服務(wù)發(fā)送了搜索查詢(xún)。當(dāng)在線(xiàn)服務(wù)使用補(bǔ)丁再次活躍時(shí),在線(xiàn)服務(wù)不會(huì)提供對(duì)先前的查詢(xún)的任何響應(yīng),因此會(huì)困擾客戶(hù)機(jī)102。另一種雖然昂貴的解決方案是,在基于群集的服務(wù)器平臺(tái)上運(yùn)行該在線(xiàn)服務(wù),通過(guò)添加附加處理能力來(lái)做出服務(wù)器106的鏡像將冗余構(gòu)建到服務(wù)器中,但是這樣不僅提高了獲得設(shè)備的成本,也提高了操作該設(shè)備的成本。
如果沒(méi)有對(duì)滿(mǎn)足高度安全的軟件的增長(zhǎng)需求且同時(shí)使得該高度安全的軟件對(duì)用戶(hù)高度可使用的問(wèn)題的解決方案,用戶(hù)可能最終不再相信企業(yè)網(wǎng)絡(luò)100會(huì)提供所想要的計(jì)算體驗(yàn),使得市場(chǎng)上對(duì)企業(yè)網(wǎng)絡(luò)100的需求漸弱。由此,需要一種用于動(dòng)態(tài)更新軟件同時(shí)避免或減少與現(xiàn)有系統(tǒng)相關(guān)聯(lián)的前述或其它問(wèn)題的系統(tǒng)、方法和計(jì)算機(jī)可讀介質(zhì)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供一種用于動(dòng)態(tài)更新軟件的系統(tǒng)、方法和計(jì)算機(jī)可讀介質(zhì)。本發(fā)明的系統(tǒng)形式包括擔(dān)當(dāng)用于服務(wù)客戶(hù)機(jī)的請(qǐng)求的服務(wù)器的計(jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)系統(tǒng)包括一個(gè)在計(jì)算機(jī)系統(tǒng)上執(zhí)行用于服務(wù)客戶(hù)機(jī)請(qǐng)求的軟件,該軟件能夠接收由客戶(hù)機(jī)提供的上下文。該計(jì)算機(jī)系統(tǒng)還包括使用該軟件的新的版本更新的該軟件的實(shí)例。該軟件的實(shí)例與計(jì)算機(jī)上的軟件同時(shí)執(zhí)行,以允許執(zhí)行測(cè)試,在測(cè)試之后,軟件實(shí)例執(zhí)行且軟件終止,而沒(méi)有丟失由客戶(hù)機(jī)提供的上下文。
根據(jù)本發(fā)明的其它方面,本發(fā)明的另一種系統(tǒng)形式包括用于控制從一種服務(wù)模式到另一種服務(wù)模式的轉(zhuǎn)移的軟件(在計(jì)算機(jī)系統(tǒng)中執(zhí)行)。該軟件包括用于服務(wù)客戶(hù)機(jī)請(qǐng)求的服務(wù)。該服務(wù)包括多種模式中允許服務(wù)獲取轉(zhuǎn)交鎖并導(dǎo)出服務(wù)狀態(tài)的一種模式。該軟件包括用于通過(guò)調(diào)用與一特定模式相關(guān)聯(lián)的一個(gè)所分配的回叫例程使服務(wù)進(jìn)入該特定模式的服務(wù)控制管理器。一個(gè)特定模式包括允許服務(wù)獲取轉(zhuǎn)交鎖并導(dǎo)出服務(wù)狀態(tài)的可定制模式。
根據(jù)本方面的其它方面,本發(fā)明的計(jì)算機(jī)可讀介質(zhì)形式包括其上存儲(chǔ)有數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),該數(shù)據(jù)結(jié)構(gòu)由計(jì)算系統(tǒng)使用來(lái)導(dǎo)出服務(wù)狀態(tài)。該數(shù)據(jù)結(jié)構(gòu)包括指示涉及在服務(wù)客戶(hù)機(jī)時(shí)由服務(wù)生成的內(nèi)部上下文的信息的服務(wù)內(nèi)部上下文標(biāo)簽。該數(shù)據(jù)結(jié)構(gòu)還包括指示涉及客戶(hù)機(jī)在其執(zhí)行服務(wù)的請(qǐng)求中提供的外部上下文的信息的客戶(hù)機(jī)外部上下文標(biāo)簽。
根據(jù)本發(fā)明的其它方面,一種在計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)的方法包括接收對(duì)在運(yùn)行在計(jì)算機(jī)系統(tǒng)上的第一客操作系統(tǒng)上運(yùn)行的第一服務(wù)的更新,該第一服務(wù)執(zhí)行客戶(hù)機(jī)的請(qǐng)求。該方法還包括執(zhí)行第一服務(wù)的狀態(tài)轉(zhuǎn)交來(lái)產(chǎn)生包含第一服務(wù)狀態(tài)的文件。該文件被導(dǎo)出至在運(yùn)行在計(jì)算機(jī)系統(tǒng)上的第二客操作系統(tǒng)上運(yùn)行的第一服務(wù)的實(shí)例。該方法還包括由所接收的更新所更新的第一服務(wù)的實(shí)例執(zhí)行來(lái)服務(wù)客戶(hù)機(jī)的請(qǐng)求,以及終止第一服務(wù)而不丟失由客戶(hù)機(jī)向第一服務(wù)提供的上下文。
當(dāng)結(jié)合附圖參考下述具體實(shí)施方式
,會(huì)更容易地理解和更好地理解本發(fā)明的前述方面和多個(gè)伴隨的優(yōu)點(diǎn),附圖中圖1是示出常規(guī)企業(yè)網(wǎng)絡(luò)系統(tǒng)的框圖,它顯示了在軟件運(yùn)行的同時(shí)對(duì)軟件打補(bǔ)丁的各種問(wèn)題;圖2是示出其中當(dāng)軟件正在被執(zhí)行的同時(shí)被更新的示例性系統(tǒng)的框圖;圖3A是根據(jù)本發(fā)明的一個(gè)實(shí)施例,示出允許執(zhí)行多個(gè)操作系統(tǒng)以支持當(dāng)執(zhí)行服務(wù)時(shí)對(duì)服務(wù)的副本的更新的系統(tǒng)部件的框圖;圖3B是根據(jù)本發(fā)明的一個(gè)實(shí)施例,示出用于控制服務(wù)的系統(tǒng)部件的框圖;圖3C是根據(jù)本發(fā)明的一個(gè)實(shí)施例,示出包含狀態(tài)信息的可定制的、基于標(biāo)簽的文件的示例的文本圖;以及圖4A-4H是示出用于在服務(wù)運(yùn)行的同時(shí)更新該服務(wù)的方法的過(guò)程圖。
具體實(shí)施例方式
為了避免為更新軟件或數(shù)據(jù)結(jié)構(gòu)而長(zhǎng)時(shí)間停止對(duì)客戶(hù)機(jī)請(qǐng)求的服務(wù),本發(fā)明的各實(shí)施例更新軟件的實(shí)例或數(shù)據(jù)結(jié)構(gòu)的實(shí)例而不是更新原始軟件或數(shù)據(jù)結(jié)構(gòu)。這允許原始軟件或數(shù)據(jù)結(jié)構(gòu)不間斷地服務(wù)客戶(hù)機(jī)的請(qǐng)求。當(dāng)軟件的經(jīng)更新,本發(fā)明的各實(shí)施例允許原始軟件或數(shù)據(jù)結(jié)構(gòu)暫停片刻以將其狀態(tài)導(dǎo)出至經(jīng)更新的實(shí)例。該經(jīng)更新的實(shí)例開(kāi)始服務(wù)客戶(hù)機(jī)請(qǐng)求而不丟失上下文,同時(shí)終止原始軟件或數(shù)據(jù)結(jié)構(gòu)的更多操作。術(shù)語(yǔ)“軟件”指的是,對(duì)運(yùn)行在應(yīng)用程序模式的服務(wù)、運(yùn)行在特許模式的服務(wù)、或運(yùn)行在應(yīng)用程序模式或特許模式的服務(wù)的一部分(例如,代碼片段)的包括。
圖2示出了其中當(dāng)服務(wù)運(yùn)行時(shí)可動(dòng)態(tài)更新服務(wù)的系統(tǒng)200。系統(tǒng)200包括通過(guò)網(wǎng)絡(luò)204與服務(wù)器206通信的客戶(hù)機(jī)202??蛻?hù)機(jī)202和服務(wù)器206一起構(gòu)成了稱(chēng)為客戶(hù)機(jī)/服務(wù)器體系結(jié)構(gòu)的一類(lèi)計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)。由客戶(hù)機(jī)202和服務(wù)器206構(gòu)成的客戶(hù)機(jī)/服務(wù)器體系結(jié)構(gòu)是這樣一種裝置,它使用有爭(zhēng)議的智能,將服務(wù)器206和個(gè)別的客戶(hù)機(jī)202都視為智能的、可編程的設(shè)備,從而充分利用兩者的完全的計(jì)算能力。這是通過(guò)將諸如搜索過(guò)程等計(jì)算任務(wù)的處理分在兩個(gè)不同的組件即“前端”客戶(hù)機(jī)202和“后端”服務(wù)器206之間來(lái)完成的??蛻?hù)機(jī)202本身是完整的獨(dú)立的個(gè)人計(jì)算機(jī)(與在較早的體系結(jié)構(gòu)中找到的“無(wú)聲”終端對(duì)比),它向其用戶(hù)提供用于啟動(dòng)計(jì)算機(jī)任務(wù)的一套完整的能力和特征。服務(wù)器206可以是另一臺(tái)個(gè)人計(jì)算機(jī)、小型機(jī)或大型機(jī),它通過(guò)分時(shí)環(huán)境中提供由小型機(jī)和大型機(jī)所提供的傳統(tǒng)優(yōu)點(diǎn),諸如數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)管理、客戶(hù)機(jī)之間的信息共享、復(fù)雜的網(wǎng)絡(luò)管理、安全特征,并服務(wù)由諸如客戶(hù)機(jī)202等客戶(hù)機(jī)所請(qǐng)求的各種計(jì)算機(jī)任務(wù),來(lái)增強(qiáng)客戶(hù)機(jī)202。
網(wǎng)絡(luò)204是由通信設(shè)備連接的一組計(jì)算機(jī)和相關(guān)聯(lián)的設(shè)備。網(wǎng)絡(luò)204可以涉及諸如同軸電纜或其它電纜等永久連接,或通過(guò)電話(huà)或其它通信鏈路做出的暫時(shí)連接。網(wǎng)絡(luò)204可以與包含少量計(jì)算機(jī)、打印機(jī)和其它設(shè)備的LAN(局域網(wǎng))一樣小,或者它可以包含分布在巨大的地理區(qū)域上的許多小型或大型計(jì)算機(jī)(WAN,即廣域網(wǎng))。WAN的一個(gè)示例性實(shí)現(xiàn)是因特網(wǎng),因特網(wǎng)是使用TCP/IP協(xié)議套件來(lái)互相通信的遍及全世界的網(wǎng)絡(luò)和網(wǎng)關(guān)的集合。因特網(wǎng)的中心是主節(jié)點(diǎn)或主機(jī)計(jì)算機(jī)之間的高速數(shù)據(jù)通信線(xiàn)的主干,這些主節(jié)點(diǎn)或主機(jī)計(jì)算機(jī)包括上千臺(tái)商業(yè)、政府、教育或路由數(shù)據(jù)和消息的其它計(jì)算機(jī)系統(tǒng)。因?yàn)闆](méi)有單個(gè)計(jì)算機(jī)或網(wǎng)絡(luò)控制整個(gè)因特網(wǎng),所以一個(gè)或多個(gè)因特網(wǎng)節(jié)點(diǎn)可以離線(xiàn)而不危及因特網(wǎng)或?qū)е乱蛱鼐W(wǎng)上的通信停止。
使用本發(fā)明的各實(shí)施例,在線(xiàn)服務(wù)可被實(shí)際地更新以創(chuàng)建一經(jīng)更新的服務(wù)而不需暫停服務(wù)器206,從而允許該在線(xiàn)服務(wù)不間斷地繼續(xù)向客戶(hù)機(jī)202提供服務(wù)。管理員208可以在該在線(xiàn)服務(wù)繼續(xù)執(zhí)行由客戶(hù)機(jī)202請(qǐng)求的計(jì)算任務(wù)的同時(shí),測(cè)試該經(jīng)更新的服務(wù)。當(dāng)管理員208確信如果使用該經(jīng)更新的服務(wù),不太可能引起系統(tǒng)200的問(wèn)題,管理員208可以在該在線(xiàn)服務(wù)被卸載時(shí)使經(jīng)更新的服務(wù)開(kāi)始服務(wù)客戶(hù)機(jī)202的請(qǐng)求,而客戶(hù)機(jī)202不會(huì)意識(shí)到已經(jīng)存在改變。本發(fā)明的各實(shí)施例允許由該在線(xiàn)服務(wù)存儲(chǔ)的狀態(tài)被無(wú)縫地傳輸給經(jīng)更新的服務(wù),而不丟失客戶(hù)機(jī)202所依賴(lài)的上下文使用本發(fā)明的各實(shí)施例的實(shí)際更新能力,管理員208創(chuàng)建在操作系統(tǒng)的實(shí)例上運(yùn)行的在線(xiàn)服務(wù)的新實(shí)例,該新實(shí)例本身與該在線(xiàn)服務(wù)和在其上運(yùn)行在線(xiàn)服務(wù)的操作系統(tǒng)并行地運(yùn)行。管理員208安裝更新,并向在線(xiàn)服務(wù)的實(shí)例應(yīng)用該更新(經(jīng)更新的服務(wù))。管理員208然后測(cè)試,且如果測(cè)試成功,那么管理員208確定可以在系統(tǒng)200中使用該經(jīng)更新的服務(wù)。管理員208然后使在線(xiàn)服務(wù)執(zhí)行至該在線(xiàn)服務(wù)實(shí)例的上下文轉(zhuǎn)交。當(dāng)完成上下文轉(zhuǎn)交后,恰好在上下文轉(zhuǎn)交前停止使用在線(xiàn)服務(wù)的那一點(diǎn)上,經(jīng)更新的服務(wù)開(kāi)始執(zhí)行。
圖3A詳細(xì)示出了在其上可以運(yùn)行在線(xiàn)服務(wù)和經(jīng)更新的服務(wù)的服務(wù)器206。服務(wù)器206包括硬件302,它是服務(wù)器206的物理組件,包括中央處理器(未示出)和存儲(chǔ)器,以及諸如打印機(jī)、調(diào)制解調(diào)器和輸入設(shè)備等外圍設(shè)備。運(yùn)行在硬件302之上的是控制前述硬件資源的分配和使用的主機(jī)操作系統(tǒng)304,這些硬件資源諸如中央處理器時(shí)間、存儲(chǔ)器、磁盤(pán)空間和外圍設(shè)備。主機(jī)操作系統(tǒng)304是客操作系統(tǒng)和其它應(yīng)用程序所依賴(lài)的核心軟件。在主機(jī)操作系統(tǒng)304上運(yùn)行的是虛擬服務(wù)器306,它提供管理虛擬機(jī)310A、310B的虛擬化服務(wù),并提供軟件基礎(chǔ)架構(gòu)用于硬件仿真。
虛擬機(jī)310A、310B包括擔(dān)當(dāng)每一虛擬機(jī)310A、310B的虛擬硬件的各組虛擬化設(shè)備。第一和第二客操作系統(tǒng)運(yùn)行在虛擬機(jī)310A、310B上,而沒(méi)有完全認(rèn)識(shí)到各種指令和通信是由虛擬服務(wù)器306仿真的,這些指令和通信最終會(huì)被轉(zhuǎn)換成由硬件302執(zhí)行的正確的硬件指令。虛擬服務(wù)器306本質(zhì)上是較佳地在主機(jī)操作系統(tǒng)304的特許模式中運(yùn)行的多線(xiàn)程服務(wù),每一虛擬機(jī)310A、310B在其自己的執(zhí)行線(xiàn)程中執(zhí)行。盡管主機(jī)操作系統(tǒng)304提供中央處理單元資源和時(shí)間及設(shè)備驅(qū)動(dòng)程序的調(diào)度,并提供對(duì)硬件302的訪問(wèn),然而虛擬服務(wù)器306維護(hù)創(chuàng)建可在其上執(zhí)行客操作系統(tǒng)的不同機(jī)器的幻影(虛擬機(jī)310A、310B)的軟件基礎(chǔ)架構(gòu)。
在線(xiàn)服務(wù)312A在第一客操作系統(tǒng)上執(zhí)行,而第一客操作系統(tǒng)進(jìn)而運(yùn)行在虛擬機(jī)310A上。已經(jīng)被更新的在線(xiàn)服務(wù)的實(shí)例是經(jīng)更新的服務(wù)312B,它運(yùn)行在第二客操作系統(tǒng)上,第二客操作系統(tǒng)進(jìn)而運(yùn)行在虛擬機(jī)310B上。使用虛擬化技術(shù),管理員208可以在在線(xiàn)服務(wù)312A所依賴(lài)以與客戶(hù)機(jī)202通信的同一硬件302上測(cè)試該經(jīng)更新的服務(wù)312B。本發(fā)明的各實(shí)施例允許在線(xiàn)服務(wù)312A的狀態(tài)(包含內(nèi)部上下文和外部上下文)由第一客操作系統(tǒng)捕捉,并將該狀態(tài)通過(guò)虛擬機(jī)310A、310B之間合適的進(jìn)程間通信工具(例如,管道或隊(duì)列)傳輸?shù)降诙筒僮飨到y(tǒng)。然后將經(jīng)更新的服務(wù)312B的狀態(tài)設(shè)置為該在線(xiàn)服務(wù)的設(shè)備,使得當(dāng)在線(xiàn)服務(wù)312A終止執(zhí)行且經(jīng)更新的服務(wù)312B開(kāi)始執(zhí)行時(shí),不會(huì)丟失上下文。
圖3B示出了對(duì)服務(wù)控制管理器316的使用,以管理服務(wù)318可能所處的各種模式,諸如安裝模式、開(kāi)啟模式、暫停模式、停止模式、卸載模式等。與每一模式相關(guān)聯(lián)的是可以由服務(wù)控制管理器316調(diào)用的可分配回叫例程。當(dāng)服務(wù)控制管理器316使用回叫例程之一調(diào)用服務(wù)之后,服務(wù)318進(jìn)入每一模式。服務(wù)控制管理器316可以由控制臺(tái)314或自動(dòng)化腳本(未示出)以及其它合適的控制機(jī)制來(lái)控制。示出了與服務(wù)318相關(guān)聯(lián)的回叫例程的一部分,諸如ONPAUSE()例程318A、ONHANDOFF()例程318B、以及ONSTOP()例程318C。例如,當(dāng)服務(wù)控制管理器316調(diào)用ONPAUSE()例程318A時(shí),服務(wù)318進(jìn)入暫停狀態(tài)(中止從客戶(hù)機(jī)202處接收更多的請(qǐng)求),其中執(zhí)行由ONPAUSE()例程318A所指定的各條指令。
在一個(gè)實(shí)施例中,如果服務(wù)控制管理器316可以調(diào)用自定義命令,其中任一任意的回叫例程可以與該自定義命令相關(guān)聯(lián),那么ONHANDOFF()例程318B可以與該自定義命令相關(guān)聯(lián),以擴(kuò)展服務(wù)318的各種模式來(lái)包括轉(zhuǎn)交模式。當(dāng)服務(wù)318進(jìn)入轉(zhuǎn)交模式后,與ONHANDOFF()例程318B相關(guān)的指令可以被執(zhí)行,來(lái)導(dǎo)出第一服務(wù)312A的狀態(tài),以導(dǎo)入到經(jīng)更新的服務(wù)312B中。在另一實(shí)施例中,如果一個(gè)新的轉(zhuǎn)交狀態(tài)可以成為諸如服務(wù)318等服務(wù)的一部分,那么ONHANDOFF()例程318B可以與該模式相關(guān)聯(lián),而不是使用自定義命令。較佳地,在該特定示例中,當(dāng)做好從在線(xiàn)服務(wù)312A到經(jīng)更新的服務(wù)312B的切換準(zhǔn)備時(shí),ONHANDOFF()例程318B中的一條指令使服務(wù)暫停以避免對(duì)來(lái)自客戶(hù)機(jī)202的另外的請(qǐng)求的接收。
圖3C示出了包含要在上述轉(zhuǎn)交模式中導(dǎo)出到經(jīng)更新的服務(wù)312B的在線(xiàn)服務(wù)312A的狀態(tài)的文件。該文件可以用任何合適的語(yǔ)言來(lái)書(shū)寫(xiě)。一種合適的語(yǔ)言包括可定制的、基于標(biāo)簽的語(yǔ)言,諸如可擴(kuò)展標(biāo)記語(yǔ)言(XML)??紤]導(dǎo)致產(chǎn)生圖3C示出的文件的下述示例。在線(xiàn)服務(wù)312A在端口5452上監(jiān)聽(tīng)來(lái)自客戶(hù)機(jī)202的請(qǐng)求;客戶(hù)機(jī)202向在線(xiàn)服務(wù)312A發(fā)送字符串(“hello world”)。在線(xiàn)服務(wù)312A存儲(chǔ)該串、當(dāng)前的時(shí)間標(biāo)記(是12:53)、客戶(hù)機(jī)IP地址(是16.12.10.10)以及客戶(hù)機(jī)端口5452,作為客戶(hù)機(jī)外部上下文。在在線(xiàn)服務(wù)312A內(nèi)部,一工作者線(xiàn)程每隔35秒醒來(lái),以調(diào)查客戶(hù)機(jī)上下文列表。如果一客戶(hù)機(jī)上下文已經(jīng)存儲(chǔ)了長(zhǎng)于預(yù)定的時(shí)間量,那么工作者線(xiàn)程使用先前由客戶(hù)機(jī)向在線(xiàn)服務(wù)312A提供的串“helloworld”向客戶(hù)機(jī)202發(fā)送一個(gè)數(shù)據(jù)包。
在線(xiàn)312A的內(nèi)部上下文和客戶(hù)機(jī)的外部上下文都可以被導(dǎo)出至圖3C所示的文件中。該文件包括起始標(biāo)簽<SERVICE_INTERNAL_CONTEXT>320A以及其成對(duì)的結(jié)束標(biāo)簽</SERVICE_INTERNAL_CONTEXT>320B。在標(biāo)簽320A、320B內(nèi)包含的是標(biāo)簽<WORKER_THREAD_SLEEP_TIME>322A以及其成對(duì)的結(jié)束標(biāo)簽</WORKER_THREAD_SLEEP_TIME>322B。在324行上標(biāo)出數(shù)值“35”,來(lái)指示工作者線(xiàn)程的睡眠時(shí)間。該文件還包括起始標(biāo)簽<CLIENT_EXTERNAL_CONTEXT>326A以及其成對(duì)的結(jié)束標(biāo)簽</CLIENT_EXTERNAL_CONTEXT>326B。在標(biāo)簽326A、326B之間嵌套的是另一個(gè)起始標(biāo)簽<CONTEXT>328A以及其成對(duì)的結(jié)束標(biāo)簽</CONTEXT>328B。包含在標(biāo)簽328A、328B之間是行330處的標(biāo)簽<IP>以及其成對(duì)的結(jié)束標(biāo)簽</IP>。在標(biāo)簽<IP>以及其成對(duì)的結(jié)束標(biāo)簽</IP>之間包含IP地址16.12.10.10。行332在標(biāo)簽<PORT>以及其成對(duì)的結(jié)束標(biāo)簽</PORT>之間表示了端口號(hào)5452。時(shí)間“12:53”在行334處標(biāo)簽<TIMESTAMP>以及其成對(duì)的結(jié)束標(biāo)簽</TIMESTAMP>之間被捕捉。行336包含標(biāo)簽<STRING>以及其成對(duì)的結(jié)束標(biāo)簽</STRING>之間包含的由客戶(hù)機(jī)202提供的串“hello world”。應(yīng)當(dāng)理解與上述文件相關(guān)聯(lián)的細(xì)節(jié),因?yàn)樵撐募怀尸F(xiàn)來(lái)示出捕捉服務(wù)的內(nèi)部和外部上下文兩者的概念,而不意味著將服務(wù)狀態(tài)的捕捉限制或約束于圖3C中所示的特定類(lèi)型的信息。
圖4A-4H示出用于在服務(wù)運(yùn)行的同時(shí)動(dòng)態(tài)地更新該服務(wù)的方法400。為清楚起見(jiàn),以下對(duì)方法400的描述參考了結(jié)合系統(tǒng)200示出的各種元件,諸如客戶(hù)機(jī)202和服務(wù)器206(圖2);硬件302、主機(jī)操作系統(tǒng)304、虛擬服務(wù)器306、虛擬機(jī)310A、310B、在線(xiàn)服務(wù)312A、以及經(jīng)更新的服務(wù)312B(圖3A);以及在圖3C中所示的可定制的、基于標(biāo)簽的文件。從開(kāi)始框開(kāi)始,方法400前進(jìn)至在延續(xù)終端(“終端A”)和退出終端(“終端B”)之間定義的一組方法步驟402。該組方法步驟402描述了接收對(duì)諸如在線(xiàn)服務(wù)312A等運(yùn)行在客操作系統(tǒng)上的第一服務(wù)的更新。
在以下幾個(gè)步驟中,討論了虛擬化技術(shù)的啟動(dòng),以允許本發(fā)明的各實(shí)施例執(zhí)行。從終端A(圖4B),方法400啟動(dòng)了主機(jī)操作系統(tǒng)304。見(jiàn)框408。在框410處,該方法啟動(dòng)了運(yùn)行在主機(jī)操作系統(tǒng)304中的虛擬服務(wù)器306。方法400前進(jìn)至框412處,在那里該方法啟動(dòng)了諸如虛擬機(jī)310A的第一虛擬機(jī),以及為該第一虛擬機(jī)所特有的第一組虛擬化設(shè)備。方法400啟動(dòng)運(yùn)行在第一虛擬機(jī)中的第一客操作系統(tǒng)。見(jiàn)框414。在框416處,該方法啟動(dòng)了諸如在線(xiàn)服務(wù)312A等運(yùn)行在第一客操作系統(tǒng)上的第一服務(wù),以向諸如客戶(hù)機(jī)202等客戶(hù)機(jī)提供服務(wù)。在框418處,該客戶(hù)機(jī)向第一服務(wù)發(fā)送外部上下文(諸如,請(qǐng)求或與請(qǐng)求相關(guān)的信息)。方法400然后在另一延續(xù)終端(“終端A1”)上繼續(xù)。
從終端A1(圖4C),方法400前進(jìn)至框420處,在那里諸如在線(xiàn)服務(wù)312A等第一服務(wù)將一個(gè)客戶(hù)機(jī)的外部上下文與另一客戶(hù)機(jī)的外部上下文分開(kāi)存儲(chǔ)。見(jiàn)圖3C的標(biāo)簽328A、328B的內(nèi)容。下一步,第一服務(wù)生成并存儲(chǔ)與服務(wù)客戶(hù)機(jī)相關(guān)的內(nèi)部上下文。見(jiàn)框422。也可參見(jiàn)標(biāo)簽320A、320B的內(nèi)容。在框424處,接收對(duì)第一服務(wù)的更新的可用性的通知。方法400然后前進(jìn)至框426處,在那里它啟動(dòng)諸如虛擬機(jī)310B等第二虛擬機(jī),以及為該第二虛擬機(jī)所特有的第二組虛擬化設(shè)備。該方法啟動(dòng)運(yùn)行在第二虛擬機(jī)中的第二客操作系統(tǒng)。見(jiàn)框428。在框430處,該方法安裝更新,并運(yùn)行第一服務(wù)的經(jīng)更新的副本(第二服務(wù),諸如經(jīng)更新的服務(wù)312B)。(較佳地,該第二服務(wù)與第一服務(wù)同時(shí)執(zhí)行。)方法400然后在另一延續(xù)終端(“終端A2”)上繼續(xù)。
從終端A2(圖4D),方法400前進(jìn)至框432處,在那里諸如由管理員208測(cè)試運(yùn)行在第二客操作系統(tǒng)上的第二服務(wù)。在判定框434,執(zhí)行測(cè)試以確定是否準(zhǔn)備好使用該第二服務(wù)。如果在判定框434處的測(cè)試的答案為否,那么方法400循環(huán)回至框432處,在那里重復(fù)上述處理步驟。如果在判定框434處的測(cè)試答案為是,那么方法400繼續(xù)至退出終端B。
從退出終端B(圖4A),方法400前進(jìn)至在延續(xù)終端(“終端C”)和退出終端(“終端D”)之間定義的一組方法步驟404。該組方法步驟404使第一服務(wù)執(zhí)行到第一服務(wù)實(shí)例(是第二服務(wù)或經(jīng)更新的服務(wù)312B)的狀態(tài)轉(zhuǎn)交。從終端C(圖4D),方法400前進(jìn)至框436處,那里它使第一設(shè)備進(jìn)入轉(zhuǎn)交模式。該方法使第一服務(wù)暫停接收任何更多的客戶(hù)機(jī)請(qǐng)求或外部上下文。見(jiàn)框438。(一個(gè)示例性方法是使服務(wù)控制管理器316調(diào)用ONPAUSE()例程318A。)方法400然后在另一延續(xù)終端(“終端C1”)上繼續(xù)。
從終端C1(圖4E),該方法為第一服務(wù)獲取為轉(zhuǎn)交鎖,它是全局鎖,以確保在轉(zhuǎn)交過(guò)程中不會(huì)改變其模式。見(jiàn)框440。在框442處,該方法找到將要移交給第二服務(wù)的每一客戶(hù)機(jī)的外部上下文。較佳地,該方法應(yīng)該找到需要被導(dǎo)出到第二服務(wù)的任何客戶(hù)機(jī)外部上下文。方法400前進(jìn)至框444處,那里它找到將被移交給第二服務(wù)的第一服務(wù)的內(nèi)部上下文。在某些情況下,它可以包括諸如多個(gè)工作者線(xiàn)程、內(nèi)部隊(duì)列以及服務(wù)管理器數(shù)據(jù)結(jié)構(gòu)等內(nèi)部細(xì)節(jié)。該方法向可定制的、基于標(biāo)簽的文件輸出外部上下文和內(nèi)部上下文(總稱(chēng)為狀態(tài))。見(jiàn)框446。(僅出于說(shuō)明性的目的,在圖3C中示出的文件是一個(gè)示例。)下一步,在框448處,該方法改變第一服務(wù)的連網(wǎng)堆棧,以將第一服務(wù)上的現(xiàn)有網(wǎng)絡(luò)連接映射至第二服務(wù)。(較佳地,包括虛擬服務(wù)器306和虛擬機(jī)310A、310B的虛擬化設(shè)備展示了應(yīng)用程序編程接口以重映射現(xiàn)有的網(wǎng)絡(luò)連接。)方法400然后在另一延續(xù)終端(“終端C2”)上繼續(xù)。
從終端C2(圖4F),方法400前進(jìn)至框450處,在那里第一服務(wù)的監(jiān)聽(tīng)端口被重定向至第二服務(wù)的監(jiān)聽(tīng)端口,以使第二服務(wù)能夠從客戶(hù)機(jī)處接收請(qǐng)求。經(jīng)由諸如管道或隊(duì)列等進(jìn)程間通信,第一服務(wù)請(qǐng)求諸如服務(wù)控制管理器316等運(yùn)行在第二客操作系統(tǒng)上的服務(wù)控制管理器來(lái)刷新第二服務(wù)的狀態(tài)。見(jiàn)框452。(較佳地,這能夠通過(guò)調(diào)用第二服務(wù)的ONSTOP()例程318C來(lái)完成。)下一步,在框454處,第一服務(wù)請(qǐng)求運(yùn)行在第二客操作系統(tǒng)上的服務(wù)控制管理器來(lái)使第二服務(wù)切換至上下文接收模式。方法400然后前進(jìn)至框456處,在那里第一服務(wù)將包含第一服務(wù)狀態(tài)的可定制的、基于標(biāo)簽的文件遞交給第二服務(wù)。方法400然后前進(jìn)至另一延續(xù)終端(“終端C3”)。
從終端C3(圖4G),第二服務(wù)接收到該可定制的、基于標(biāo)簽的文件,并將其自身初始化至由該可定制的、基于標(biāo)簽的文件所指定的狀態(tài)。見(jiàn)框460。(較佳地,第二服務(wù)在較低網(wǎng)絡(luò)層初始化各種數(shù)據(jù)結(jié)構(gòu),以有效地初始化綁定在網(wǎng)絡(luò)接口上的網(wǎng)絡(luò)協(xié)議。)在判定框462,執(zhí)行測(cè)試以確定第二服務(wù)是否已經(jīng)完成了初始化。如果對(duì)判定框462的測(cè)試答案為否,那么方法400循環(huán)回框460處,在那里重復(fù)上述處理步驟。否則,對(duì)判定框462的測(cè)試答案為是,且第二服務(wù)通知第一服務(wù)初始化成功。見(jiàn)框464。下一步,在框466處,第一服務(wù)向第二服務(wù)發(fā)送一個(gè)消息來(lái)開(kāi)始操作。方法400然后前進(jìn)至另一延續(xù)終端(“終端C4”)。
從終端C4(圖4H),方法400前進(jìn)至判定框468處,在那里執(zhí)行測(cè)試來(lái)確定是否確認(rèn)了第二服務(wù)。如果對(duì)判定框468的測(cè)試答案為否,那么方法400循環(huán)直到答案為是。如果對(duì)判定框468的測(cè)試答案為是,那么第一服務(wù)指示對(duì)第一服務(wù)的更新成功。見(jiàn)框470。在框472處,第一服務(wù)釋放轉(zhuǎn)交鎖。方法400然后使第一服務(wù)停止更多的執(zhí)行,以為卸載作準(zhǔn)備。見(jiàn)框474。(較佳地,該方法使服務(wù)控制管理器316調(diào)用ONSTOP()例程318C和用于卸載第一服務(wù)的另一例程。)然后卸載第一服務(wù)。見(jiàn)框476。然后方法400在退出終端D處繼續(xù)。
從終端D(圖4A),方法400前進(jìn)至在延續(xù)終端(“終端E”)和另一延續(xù)終端(“終端F”)之間定義的一組方法步驟406。該組方法步驟406允許使用更新修改的第一服務(wù)的實(shí)例(第二服務(wù),即經(jīng)更新的服務(wù)312B)執(zhí)行并服務(wù)第一服務(wù)的客戶(hù)機(jī)。方法400然后終止執(zhí)行。
盡管示出和描述了本發(fā)明的較佳的實(shí)例,但可以理解,可以在其中進(jìn)行各種修改,而不背離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種擔(dān)當(dāng)用于服務(wù)客戶(hù)機(jī)的請(qǐng)求的服務(wù)器的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括一個(gè)在所述計(jì)算機(jī)系統(tǒng)上運(yùn)行的軟件,用于服務(wù)客戶(hù)機(jī)的請(qǐng)求,所述軟件能夠接收由所述客戶(hù)機(jī)提供的上下文;以及所述軟件的一個(gè)實(shí)例,它已經(jīng)使用所述軟件的新版本更新,所述軟件的實(shí)例在所述計(jì)算機(jī)系統(tǒng)上與所述軟件同時(shí)運(yùn)行,以允執(zhí)行測(cè)試,在測(cè)試后,所述軟件的實(shí)例執(zhí)行而所述軟件終止,而不丟失由所述客戶(hù)機(jī)提供的上下文。
2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述軟件是運(yùn)行在第一客操作系統(tǒng)上的,而所述軟件的實(shí)例是運(yùn)行在第二客操作系統(tǒng)上的。
3.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述第一客操作系統(tǒng)是運(yùn)行在第一虛擬機(jī)上的,而所述第二客操作系統(tǒng)是運(yùn)行在第二虛擬機(jī)上的。
4.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述第一客操作系統(tǒng)和第二客操作系統(tǒng)是由提供硬件仿真的虛擬服務(wù)器管理的。
5.如權(quán)利要求4所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述虛擬服務(wù)器作為直接與硬件通信的主機(jī)操作系統(tǒng)中的服務(wù)運(yùn)行。
6.一種在計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件,用于控制從一個(gè)服務(wù)模式到另一服務(wù)模式的轉(zhuǎn)移,包括用于服務(wù)客戶(hù)機(jī)請(qǐng)求的服務(wù),所述服務(wù)包括多種模式中允許所述服務(wù)獲取轉(zhuǎn)交鎖并導(dǎo)出所述服務(wù)的狀態(tài)的一種模式;以及服務(wù)控制管理器,用于通過(guò)調(diào)用與一特定模式相關(guān)聯(lián)的所分配的回叫例程使所述服務(wù)進(jìn)入所述特定模式,一特定的模式包括允許所述服務(wù)獲取所述轉(zhuǎn)交鎖并導(dǎo)出所述服務(wù)的狀態(tài)的可定制模式。
7.如權(quán)利要求6所述的軟件,其特征在于,還包括接收所述服務(wù)的狀態(tài)的服務(wù)的實(shí)例,所述服務(wù)的實(shí)例由所述服務(wù)的新版本更新,以添加新的特征或更正所述服務(wù)中的錯(cuò)誤。
8.如權(quán)利要求7所述的軟件,其特征在于,所述模式包括暫停模式,其中所述服務(wù)中止從所述客戶(hù)機(jī)處接收更多的請(qǐng)求。
9.如權(quán)利要求8所述的軟件,其特征在于,所述模式包括開(kāi)始開(kāi)始模式和停止模式,其中所述服務(wù)由所述服務(wù)控制管理器開(kāi)始和停止。
10.如權(quán)利要求9所述的軟件,其特征在于,所述模式包括安裝模式和卸載模式,其中所述服務(wù)由所述服務(wù)控制管理器安裝和卸載。
11.一種其上存儲(chǔ)由計(jì)算機(jī)系統(tǒng)使用來(lái)導(dǎo)出服務(wù)狀態(tài)的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)包括一服務(wù)內(nèi)部上下文標(biāo)簽,它指示涉及所述服務(wù)在服務(wù)客戶(hù)機(jī)過(guò)程中生成的內(nèi)部上下文的信息;以及一客戶(hù)機(jī)外部上下文標(biāo)簽,它指示涉及由所述客戶(hù)機(jī)在其執(zhí)行服務(wù)的請(qǐng)求中提供的外部上下文的信息。
12.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)是由可定制的、基于標(biāo)簽的語(yǔ)言形成的。
13.一種在計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)的方法,所述方法包括接收對(duì)運(yùn)行在第一客操作系統(tǒng)上的第一服務(wù)的請(qǐng)求,所述第一客操作系統(tǒng)運(yùn)行在所述計(jì)算機(jī)系統(tǒng),所述第一服務(wù)執(zhí)行客戶(hù)機(jī)的請(qǐng)求;由所述第一服務(wù)執(zhí)行狀態(tài)轉(zhuǎn)交,以產(chǎn)生包含所述第一服務(wù)的狀態(tài)的文件,所述文件被導(dǎo)出至運(yùn)行在第二客操作系統(tǒng)上的所述第一服務(wù)的實(shí)例,所述第二客操作系統(tǒng)運(yùn)行在所述計(jì)算機(jī)系統(tǒng)上;以及由用所接收的更新來(lái)更新的所述第一服務(wù)的實(shí)例執(zhí)行,以服務(wù)客戶(hù)機(jī)的請(qǐng)求并終止所述第一服務(wù),而不丟失所述客戶(hù)機(jī)向所述第一服務(wù)提供的上下文。
14.如權(quán)利要求13所述的方法,其特征在于,還包括在執(zhí)行所述狀態(tài)轉(zhuǎn)交的動(dòng)作之前測(cè)試具有更新的所述第一服務(wù)的實(shí)例。
15.如權(quán)利要求14所述的方法,其特征在于,還包括在所述測(cè)試動(dòng)作之后,但在執(zhí)行所述狀態(tài)轉(zhuǎn)交的動(dòng)作之前,使所述第一服務(wù)進(jìn)入轉(zhuǎn)交模式。
16.如權(quán)利要求15所述的方法,其特征在于,還包括暫停所述第一服務(wù)以防止所述第一服務(wù)從客戶(hù)機(jī)處接收更多的請(qǐng)求。
17.如權(quán)利要求16所述的方法,其特征在于,還包括獲取轉(zhuǎn)交鎖,以防止對(duì)所述第一服務(wù)狀態(tài)的改變,所述獲取轉(zhuǎn)交鎖的動(dòng)作發(fā)生在產(chǎn)生包含所述第一服務(wù)狀態(tài)的文件的動(dòng)作之前。
18.如權(quán)利要求17所述的方法,其特征在于,所述產(chǎn)生文件的動(dòng)作包括產(chǎn)生具有包含所述第一服務(wù)的內(nèi)部上下文和外部上下文的標(biāo)簽的可定制的、基于標(biāo)簽的文件。
19.如權(quán)利要求18所述的方法,其特征在于,還包括將網(wǎng)絡(luò)連接以及監(jiān)聽(tīng)端口從所述第一服務(wù)重映射到所述第一服務(wù)的實(shí)例,以允許客戶(hù)機(jī)請(qǐng)求被重定向到所述第一服務(wù)的實(shí)例。
20.如權(quán)利要求19所述的方法,其特征在于,所述轉(zhuǎn)交鎖是在所述第一服務(wù)的實(shí)例指示所述第一服務(wù)狀態(tài)的成功轉(zhuǎn)交時(shí)由所述第一服務(wù)釋放的。
全文摘要
為了避免為更新軟件或數(shù)據(jù)結(jié)構(gòu)而長(zhǎng)時(shí)間停止對(duì)客戶(hù)機(jī)請(qǐng)求的服務(wù),本發(fā)明的各實(shí)施例更新軟件的實(shí)例或數(shù)據(jù)結(jié)構(gòu)的實(shí)例而不是更新原始軟件或數(shù)據(jù)結(jié)構(gòu)。這允許原始軟件或數(shù)據(jù)結(jié)構(gòu)不間斷地服務(wù)客戶(hù)機(jī)的請(qǐng)求。經(jīng)更新的實(shí)例開(kāi)始服務(wù)客戶(hù)機(jī)的請(qǐng)求而不丟失上下文,同時(shí)終止原始軟件或數(shù)據(jù)結(jié)構(gòu)的更多操作。
文檔編號(hào)G06F9/46GK1770121SQ20051010874
公開(kāi)日2006年5月10日 申請(qǐng)日期2005年9月29日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者S·欣哈 申請(qǐng)人:微軟公司