本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種服務(wù)的更新方法和裝置。
背景技術(shù):
大規(guī)模在線角色扮演游戲mmorpg(英文全稱massivemulti-useronlinerole-playinggame)作為一種歷史悠久的游戲類型,在網(wǎng)游界中占有非常重要的地位。mmorpg服務(wù)器邏輯復(fù)雜,在超高的復(fù)雜度的前提下,既要保持高承載,又要保持高可用性,同時,在激烈競爭的市場條件下,和以往的單機游戲以年為周期的更新頻率不同,mmorpg游戲的版本迭代更新十分頻繁,為了更快的推出新內(nèi)容吸引玩家,更新速度甚至可以達到一周一次。由于mmorpg的復(fù)雜性,高頻率的更新會導(dǎo)致內(nèi)容無法做到完整的測試覆蓋,線上故障成為高概率事件。但同時,玩家對于服務(wù)質(zhì)量的要求也在不斷提升,為了滿足玩家的需求,游戲服務(wù)器力求做到在線服務(wù)不中斷。上述種種需求,對開發(fā)者以及運營者都是非常大的挑戰(zhàn),但是,目前還沒有實現(xiàn)服務(wù)更新時保證服務(wù)不中斷的技術(shù)方案。
針對相關(guān)技術(shù)中在對游戲服務(wù)器的游戲應(yīng)用服務(wù)進行更新時需要中斷所提供的游戲應(yīng)用服務(wù)的技術(shù)問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種服務(wù)的更新方法和裝置,以至少解決相關(guān)技術(shù)中在對游戲服務(wù)器的游戲應(yīng)用服務(wù)進行更新時需要中斷所提供的游戲應(yīng)用服務(wù)的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種服務(wù)的更新方法,該更新方法包括:在服務(wù)器上提供游戲應(yīng)用服務(wù),其中,服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理;接收到更新請求,其中,更新請求用于請求對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新;響應(yīng)于更新請求,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件;在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種服務(wù)的更新裝置,該更新裝置包括:服務(wù)單元,用于在服務(wù)器上提供游戲應(yīng)用服務(wù),其中,服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理;接收單元,用于接收到更新請求,其中,更新請求用于請求對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新;更新單元,用于響應(yīng)于更新請求,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件;處理單元,用于在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)。
在本發(fā)明實施例中,在接收到更新請求時,在服務(wù)器提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù),可以解決相關(guān)技術(shù)中在對游戲服務(wù)器的游戲應(yīng)用服務(wù)進行更新時需要中斷所提供的游戲應(yīng)用服務(wù)的技術(shù)問題,進而達到了對游戲服務(wù)器進行更新時不中斷所提供的游戲服務(wù)的技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的服務(wù)的更新方法的硬件環(huán)境的示意圖;
圖2是根據(jù)本發(fā)明實施例的一種可選的服務(wù)的更新方法的流程圖;
圖3是根據(jù)本發(fā)明實施例的一種可選的服務(wù)架構(gòu)的示意圖;
圖4是根據(jù)本發(fā)明實施例的一種可選的服務(wù)的更新方法的流程圖;
圖5是根據(jù)本發(fā)明實施例的一種可選的服務(wù)更新的示意圖;
圖6是根據(jù)本發(fā)明實施例的一種可選的服務(wù)的更新方法的流程圖;
圖7是根據(jù)本發(fā)明實施例的一種可選的服務(wù)的更新裝置的示意圖;以及
圖8是根據(jù)本發(fā)明實施例的一種終端的結(jié)構(gòu)框圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
首先,在對本發(fā)明實施例進行描述的過程中出現(xiàn)的部分名詞或者術(shù)語適用于如下解釋:
網(wǎng)絡(luò)游戲,英文名稱為onlinegame,又稱“在線游戲”,簡稱“網(wǎng)游”。指以互聯(lián)網(wǎng)為傳輸媒介,以游戲運營商服務(wù)器和用戶計算機為處理終端,以游戲客戶端軟件為信息交互窗口的旨在實現(xiàn)娛樂、休閑、交流和取得虛擬成就的具有可持續(xù)性的個體性多人在線游戲。
大規(guī)模在線角色扮演游戲(mmorpg),英文全稱massivemulti-useronlinerole-playinggame,是一種游戲類型。在游戲中,玩家扮演虛擬世界中的一個或者幾個隊員角色在特定場景下進行游戲。
網(wǎng)絡(luò)游戲客戶端(gameclient),是指與網(wǎng)絡(luò)游戲服務(wù)器相對應(yīng),為客戶提供本地服務(wù)的程序,一般安裝在普通的用戶機上,需要與服務(wù)端互相配合運行。
網(wǎng)絡(luò)游戲服務(wù)器(gameserver),是指與網(wǎng)絡(luò)游戲客戶端相對應(yīng)、安裝在idc中、為網(wǎng)絡(luò)游戲客戶端提供數(shù)據(jù)轉(zhuǎn)發(fā)與邏輯處理服務(wù)的軟件程序。
idc為互聯(lián)網(wǎng)內(nèi)容提供商(icp)、企業(yè)、媒體和各類網(wǎng)站提供大規(guī)模、高質(zhì)量、安全可靠的專業(yè)化服務(wù)器托管、空間租用、網(wǎng)絡(luò)批發(fā)帶寬以及asp、ec等業(yè)務(wù)。idc是對入駐(hosting)企業(yè)、商戶或網(wǎng)站服務(wù)器群托管的場所;是各種模式電子商務(wù)賴以安全運作的基礎(chǔ)設(shè)施,也是支持企業(yè)及其商業(yè)聯(lián)盟(其分銷商、供應(yīng)商、客戶等)實施價值鏈管理的平臺。
強狀態(tài)進程,指進程運行過程中,需要記錄存儲大量的上下文數(shù)據(jù)的一種進程。此類進程向外提供的服務(wù)依賴于上下文數(shù)據(jù),一旦進程崩潰丟失數(shù)據(jù),則在線服務(wù)將中斷。
弱狀態(tài)進程,弱狀態(tài)進程是指,運行過程中,不記錄或者只記錄很少量的上下文數(shù)據(jù)的一種進程。此類進程對外提供的服務(wù)不依賴于或者弱依賴于上下文數(shù)據(jù)。即使進程崩潰,由于不需要保存數(shù)據(jù)(或者數(shù)據(jù)可以在重啟進程時簡單恢復(fù)),只需要重啟進程,即可恢復(fù)在線服務(wù)。
服務(wù)器可用性,指服務(wù)器整體對外提供服務(wù)的穩(wěn)定性的一種度量。
熱更新,熱更新即為在程序不停止提供服務(wù)的情況下,完成功能的升級或者切換的一種方法。
宕機,指操作系統(tǒng)無法從一個嚴(yán)重系統(tǒng)錯誤中恢復(fù)過來,或系統(tǒng)硬件層面出問題,以致系統(tǒng)長時間無響應(yīng),而不得不重新啟動計算機的現(xiàn)象。它屬于電腦運作的一種正?,F(xiàn)象,任何電腦都會出現(xiàn)這種情況。
動態(tài)鏈接庫文件,是一種不可執(zhí)行的二進制程序文件,它允許程序共享執(zhí)行特殊任務(wù)所必需的代碼和其他資源。windows提供的dll文件中包含了允許基于windows的程序在windows環(huán)境下操作的許多函數(shù)和資源。linux系統(tǒng)中常常是“.so”的文件。
實施例1
根據(jù)本發(fā)明實施例,提供了一種服務(wù)的更新方法的方法實施例。
可選地,在本實施例中,上述服務(wù)的更新方法可以應(yīng)用于如圖1所示的由服務(wù)器102和終端104所構(gòu)成的硬件環(huán)境中。如圖1所示,服務(wù)器102通過網(wǎng)絡(luò)與終端104進行連接,上述網(wǎng)絡(luò)包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機、平板電腦等。本發(fā)明實施例的服務(wù)的更新方法可以由服務(wù)器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務(wù)器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實施例的服務(wù)的更新方法也可以是由安裝在其上的客戶端來執(zhí)行。
當(dāng)本發(fā)明實施例的服務(wù)的更新方法由服務(wù)器或終端來執(zhí)行時,直接在服務(wù)器或終端執(zhí)行與服務(wù)的更新方法對應(yīng)的程序即可。
當(dāng)本發(fā)明實施例的服務(wù)的更新方法由服務(wù)器和終端來共同執(zhí)行時,需要二者進行相關(guān)信息的交互,如終端將更新請求發(fā)送給服務(wù)器。再由服務(wù)器來執(zhí)行相關(guān)的步驟,下面結(jié)合圖2進行詳細(xì)說明:
圖2是根據(jù)本發(fā)明實施例的一種可選的服務(wù)的更新方法的流程圖,如圖2所示,該方法可以包括以下步驟:
步驟s202,在服務(wù)器上提供游戲應(yīng)用服務(wù),服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理。
上述的服務(wù)器為用于提供游戲應(yīng)用服務(wù)的服務(wù)器,可在游戲設(shè)備上安裝游戲應(yīng)用的客戶端,再由服務(wù)器為游戲設(shè)備上的游戲應(yīng)用提供服務(wù)。
用戶可以直接在服務(wù)器上對所提供的游戲應(yīng)用服務(wù)進行管理(包括更新、刪除、暫停等),也可以通過與服務(wù)器通訊連接的其它終端來對其進行管理。
步驟s204,接收到更新請求,更新請求用于請求對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新。
上述的更新請求即用戶在終端或者在服務(wù)器上進行更新時所觸發(fā)的請求。
可選地,上述更新請求還是可以是服務(wù)器或終端自動觸發(fā)的,如服務(wù)器或終端按照預(yù)先設(shè)置的定時更新策略自動觸發(fā)的更新請求。
步驟s206,響應(yīng)于更新請求,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件。
需要說明的是,服務(wù)器是在提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件。
上述的游戲應(yīng)用服務(wù)不中斷包括兩個方面:其一是服務(wù)器本身能夠在不中斷或者中斷時間極短(幾乎可以忽略不計)的情況下,持續(xù)為用戶提供游戲服務(wù);其二是在游戲設(shè)備上感知不到游戲應(yīng)用服務(wù)的中斷,例如在游戲的過程中進行更新時,用戶可以不中斷地進行游戲,而不丟失游戲數(shù)據(jù)。
從方案實際實現(xiàn)的過程來看,在接收到更新請求前,游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,也即游戲應(yīng)用服務(wù)由第一可執(zhí)行文件提供,在將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件的過程中,也即完成更新之前,游戲應(yīng)用服務(wù)可繼續(xù)由第一可執(zhí)行文件提供(也即在第二可執(zhí)行文件正是提供游戲應(yīng)用服務(wù)前,游戲應(yīng)用服務(wù)可以由第一可執(zhí)行文件提供),在完成更新時,游戲應(yīng)用服務(wù)由第二可執(zhí)行文件提供,從而實現(xiàn)游戲應(yīng)用服務(wù)的不中斷。
上述的可執(zhí)行文件為在服務(wù)器上可執(zhí)行的文件,具體類型可以根據(jù)服務(wù)器所采用的操作系統(tǒng)確定,例如在服務(wù)器的操作系統(tǒng)為windows時,對應(yīng)的可執(zhí)行文件為windows系統(tǒng)所支持的可執(zhí)行文件(如“.exe”文件);在服務(wù)器的操作系統(tǒng)為linux時,對應(yīng)的可執(zhí)行文件為linux系統(tǒng)所支持的可執(zhí)行文件(如用字符“x”標(biāo)識的文件)。
上述的可執(zhí)行文件即用于提供游戲應(yīng)用服務(wù)的可執(zhí)行文件,具體可以通過執(zhí)行該可執(zhí)行文件來提供游戲應(yīng)用服務(wù)。
步驟s208,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)。
也即,在可執(zhí)行文件的更新完成之后,由第二可執(zhí)行文件使用之前由第一可執(zhí)行文件處理的上下文數(shù)據(jù),按照以前的上下文數(shù)據(jù)繼續(xù)為游戲設(shè)備提供服務(wù),對于終端而言,游戲應(yīng)用的過程中所使用的數(shù)據(jù)(上下文數(shù)據(jù))并未發(fā)生改變,即使發(fā)生服務(wù)更新,也不會影響當(dāng)前的游戲,可繼續(xù)使用更新前的游戲數(shù)據(jù)進行游戲,這樣服務(wù)器就可在不間斷服務(wù)的情況下進行服務(wù)更新。
通過上述步驟s202至步驟s208,在接收到更新請求時,在服務(wù)器提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù),可以解決相關(guān)技術(shù)中在對游戲服務(wù)器的游戲應(yīng)用服務(wù)進行更新時需要中斷所提供的游戲應(yīng)用服務(wù)的技術(shù)問題,進而達到了對游戲服務(wù)器進行更新時不中斷所提供的游戲服務(wù)的技術(shù)效果。
本申請的方法可以應(yīng)用于各類游戲應(yīng)用服務(wù)的更新,下面以mmorpg類游戲為例進行說明。
由于mmorpg的復(fù)雜性,高頻率的更新會導(dǎo)致內(nèi)容無法做到完整的測試覆蓋,線上故障成為高概率事件,但同時,玩家對于服務(wù)質(zhì)量的要求也在不斷提升,為了滿足玩家的需求,游戲服務(wù)器力求做到7x24小時(一周二十四小時)在線提供服務(wù)而不中斷,上述種種需求,對開發(fā)者以及運營者都是非常大的挑戰(zhàn)。在這些要求下,mmorpg服務(wù)器的實現(xiàn)往往不是一個簡單的進程,而是一套復(fù)雜的大規(guī)模分布式系統(tǒng),典型的mmorpg服務(wù)器構(gòu)架如圖3所示:
包括主服務(wù)器(公共服務(wù)器master)上的目錄服務(wù)、版本升級、帳號服務(wù)、存儲服務(wù)器(及其熱備設(shè)備),以及用于管理這些服務(wù)的客戶端client,主服務(wù)器用于管理相應(yīng)的從服務(wù)器(如玄海岸服),從服務(wù)器用于具體提供相關(guān)的游戲服務(wù),其包括帳號服務(wù)(與相應(yīng)的數(shù)據(jù)庫連接)、接入層、郵件服務(wù)(與相應(yīng)的數(shù)據(jù)庫連接)、場景交換服務(wù)等。
區(qū)別于休閑類的acg游戲(動漫風(fēng)格游戲的簡稱,諸如卡牌、三消類游戲),mmorpg游戲邏輯復(fù)雜,諸如場景服務(wù)器(scene)、全局服務(wù)器(world)等進程都是強狀態(tài)進程,需要在內(nèi)存中保存大量實時的復(fù)雜運行數(shù)據(jù),因為這些強狀態(tài)進程的存在,mmorpg游戲服務(wù)器的在線更新非常難以實現(xiàn)。
當(dāng)強狀態(tài)的服務(wù)器程序在線上運行出現(xiàn)問題時,如果直接更新程序文件并重啟,會造成內(nèi)存中的數(shù)據(jù)丟失,導(dǎo)致服務(wù)中斷,因此無法進行在線更新程序文件的熱更新。如何在不影響用戶體驗的情況下進行強狀態(tài)服務(wù)器的在線熱更新修復(fù),一直是業(yè)界難題。
本申請?zhí)岢隽艘环N可以適用于強狀態(tài)服務(wù)器的熱更新方案,可以在用戶無感知的情況下,實現(xiàn)對于強狀態(tài)的服務(wù)器進程的在線熱更新,且對開發(fā)側(cè)的額外要求非常低,極大增強了系統(tǒng)的可用性以及可維護性,對于提高服務(wù)質(zhì)量有著重要的意義。下面結(jié)合具體步驟詳述本發(fā)明的實施例:
在步驟s204提供的技術(shù)方案中,服務(wù)器接收到對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新的更新請求。
在步驟s206提供的技術(shù)方案中,在服務(wù)器提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件包括:
步驟s2062,在服務(wù)器上創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程;
步驟s2064,使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理,第一進程是用于執(zhí)行第一可執(zhí)行文件的進程。
其中,在步驟s2062中,在服務(wù)器上創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程時,可通過預(yù)設(shè)方式啟動第二可執(zhí)行文件,以創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程,啟動后的第二可執(zhí)行文件在第二進程上執(zhí)行,預(yù)設(shè)方式為第一可執(zhí)行文件停止執(zhí)行之后,在第一進程上恢復(fù)執(zhí)行第一可執(zhí)行文件所使用的方式。
上述的預(yù)設(shè)方式為第一進程上恢復(fù)執(zhí)行第一可執(zhí)行文件所使用的方式,不同的操作系統(tǒng)對應(yīng)的方式不同,例如在linux操作系統(tǒng)中,可以使用resume方法來進行恢復(fù)。
需要說明的是,resume方法為恢復(fù)第一進程時使用的方法,而使用resume方法來創(chuàng)建第二進程,對于服務(wù)器而言,相當(dāng)于還是按照以前的可執(zhí)行文件來創(chuàng)建進程,只是對于服務(wù)器而言的可執(zhí)行文件已經(jīng)由第一可執(zhí)行文件替換為了第二可執(zhí)行文件,但是由于是采用resume的方式創(chuàng)建的,第二進程可以保留與第一進程相同的相關(guān)參數(shù),而不用重新進行相關(guān)設(shè)置。
在步驟s2064中,在使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理時,服務(wù)器使用第二進程繼續(xù)對存儲在共享存儲空間中的第一上下文數(shù)據(jù)進行處理,在使用第二進程接替第一進程之前,存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)已被第一進程處理為第一上下文數(shù)據(jù)。
可選地,在執(zhí)行步驟s2062的在服務(wù)器上創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程的同時或之后,建立第二進程與共享存儲空間之間的關(guān)聯(lián)關(guān)系,這樣,在服務(wù)器使用第二進程繼續(xù)對存儲在共享存儲空間中的第一上下文數(shù)據(jù)進行處理時,可從與第二進程具有關(guān)聯(lián)關(guān)系的共享存儲空間獲取第一上下文數(shù)據(jù);然后使用第二進程繼續(xù)對第一上下文數(shù)據(jù)進行處理。
需要說明的是,在將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件之前,當(dāng)?shù)谝豢蓤?zhí)行文件還在執(zhí)行時,將第一進程對游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)的處理結(jié)果(即第一上下文數(shù)據(jù))存儲在共享存儲空間中,以便于在發(fā)生游戲應(yīng)用服務(wù)更新時,保證數(shù)據(jù)不會丟失,便于利用這些數(shù)據(jù)持續(xù)為用戶提供服務(wù),使得用戶得到的服務(wù)不會中斷,也即不使用新的游戲上下文數(shù)據(jù)重新開始游戲。
同理,對于第二進程而言,在使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理之后,可將第二上下文數(shù)據(jù)存儲在共享存儲空間中,存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的第一上下文數(shù)據(jù)已被第二進程處理為第二上下文數(shù)據(jù)。便于在發(fā)生游戲應(yīng)用服務(wù)更新時,保證數(shù)據(jù)不會丟失。
在步驟s208提供的技術(shù)方案中,以更新可執(zhí)行文件的完成時刻為時間參考點,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之前,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理,即第一可執(zhí)行文件提供游戲應(yīng)用服務(wù),在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù),即第二可執(zhí)行文件提供游戲應(yīng)用服務(wù)。具體如何完成更新已經(jīng)在前述內(nèi)容中進行描述,在此不再贅述。
作為一種可選的實施例,針對原有方案的諸多缺陷,本申請?zhí)岢隽艘环N基于swapresume機制的強狀態(tài)服務(wù)器進程在線熱更新方案,下面結(jié)合圖4和圖5詳述本申請的實施例:
步驟s402,進程運行過程中的上下文數(shù)據(jù)都存儲于sharememory(即共享內(nèi)容)中。
步驟s404,當(dāng)需要更新時,制作新的程序文件,上傳至服務(wù)器替換原有程序文件(即為程序文件的交換swap過程)。
例如,如圖5所示,在宕機發(fā)生時,定位到問題,并根據(jù)問題提供新的可執(zhí)行文件(用于解決該問題),然后將該可執(zhí)行文件上傳至服務(wù)器,以替換老的可執(zhí)行文件,等待下次宕機時拉起(即下次關(guān)機重啟時運行新的可執(zhí)行文件)。宕機發(fā)生時使用新程序自動拉起,以恢復(fù)服務(wù)故障修復(fù)。
步驟s406,運維kill掉(即結(jié)束)當(dāng)前老的正在運行的目標(biāo)進程,然后以resume方式啟動新的程序文件。
可選地,也可在宕機發(fā)生時,使用新的可執(zhí)行文件(即程序)自動拉起運行。
上述的resume方法用于繼續(xù)執(zhí)行已經(jīng)掛起的線程。
步驟s408,新進程被使用attach方法貼附到原有sharememory上,讀取原有的上下文數(shù)據(jù),接替老的目標(biāo)進程繼續(xù)提供服務(wù)(即為resume)。從而可以對故障進行修復(fù),并恢復(fù)服務(wù)。
可選地,可以預(yù)先啟動新的程序文件(即第二可執(zhí)行文件),并使用attach方法將新進程(即第二進程)貼附到原有sharememory(即共享內(nèi)存空間)上,在kill掉舊進程(第一進程)的同時,運行新進程,以保證服務(wù)的不中斷。
在本申請的技術(shù)方案中,可針對性地對原有系統(tǒng)進行優(yōu)化,在產(chǎn)品側(cè)對玩家無影響,玩家無感知;由于提升了系統(tǒng)的整體可用性,當(dāng)服務(wù)器出現(xiàn)故障時,玩家受影響的范圍和時間會被縮小,客觀上提升了玩家的游戲體驗與整體服務(wù)質(zhì)量,提升了游戲容災(zāi)能力與可用性,提升了應(yīng)急響應(yīng)能力,使得在線服務(wù)質(zhì)量更高。
另外,本申請的方案對于開發(fā)側(cè)的影響較少,將關(guān)鍵數(shù)據(jù)存儲于sharememory中即可,無需額外的注意事項,對開發(fā)人員要求低,對正常的開發(fā)流程無影響。
本發(fā)明還提供了一種優(yōu)選實施例,該優(yōu)選實施例可以在更新上下文數(shù)據(jù)時使用。
在linux系統(tǒng)下,提供了共享庫文件的功能,為了達到軟件模塊化的目的,可把邏輯上緊密相關(guān)的功能集中在一起,編譯到的共享庫中,這樣做既有利于代碼的管理,也便于模塊的復(fù)用。同時,共享庫的方式也有利于應(yīng)用升級,某些時候,僅僅更新數(shù)個共享庫文件就可以完成整個應(yīng)用的升級,降低了升級時的開銷。
共享庫文件是由主程序文件運行時,使用dlopen(可用于使用指定模式打開指定的動態(tài)鏈接庫文件)動態(tài)掛載的,這就意味著通過一些特別的操作,可以在更新共享庫文件后,利用dlopen動態(tài)重新掛載更新過后的共享庫文件,實現(xiàn)在線熱更新。
具體在應(yīng)用上述方法時,可以在步驟s208完成之后,在需要對游戲應(yīng)用服務(wù)進行更新時,對第二進程的動態(tài)鏈接庫文件直接進行更新。
利用該方法時,可以將需要更新的內(nèi)容或者邏輯放置在第二進程的動態(tài)鏈接庫文件中,下面結(jié)合圖6詳述本申請的實施例:
需要說明的是,基于共享庫文件的在線熱更新適用于較小的升級,以完成不重啟的更新。更新過程中,由一個獨立升級程序u來負(fù)責(zé)觸發(fā)目標(biāo)應(yīng)用(由進程t來執(zhí)行)掛載新的共享庫文件l。
步驟s602,升級程序u找到進程t的dlopen函數(shù)的入口地址。
步驟s604,升級進程u執(zhí)行attach系統(tǒng)調(diào)用,貼附到進程t上。向進程t的堆棧里壓入新的共享庫文件l的名字,再把dlopen函數(shù)的入口地址賦值給pc寄存器。
上述的attach是一種linux下的將一個對象貼附到另一個對象上的方法。pc是16位程序計數(shù)器,專門用于在cpu取指令期間的尋址程序存儲器。
步驟s606,讓目標(biāo)進程t繼續(xù)運行,由于pc寄存器保存的是dlopen函數(shù)的入口地址,這樣,在目標(biāo)進程t空間里,dlopen函數(shù)被調(diào)用,新的共享庫文件l被目標(biāo)進程t裝載。
步驟s608,新的共享庫文件l在被裝載時,利用dlsym函數(shù)在目標(biāo)進程t中找到被替換函數(shù)的地址,設(shè)置被替換函數(shù)的代碼空間為可寫狀態(tài)。
dlsym函數(shù)用于根據(jù)動態(tài)鏈接庫操作句柄與符號,返回符號對應(yīng)的地址,使用這個函數(shù)不但可以獲取函數(shù)地址,也可以獲取變量地址。
步驟s610,將匯編指令0xcc和0xc3寫入被替換函數(shù)入口。顯然,由于int3的存在,當(dāng)目標(biāo)進程t調(diào)用這個被替換函數(shù)時,就會觸發(fā)一次sigtrap信號,sigtrap信號是當(dāng)子進程執(zhí)行到這個斷點int3的時候,產(chǎn)生的信號。
上述的0xcc是匯編int3的指令碼,0xc3是匯編ret的指令碼(0xc3是64位系統(tǒng)的指令碼)。
步驟s612,新的共享庫文件l在被裝載時,調(diào)用sigaction函數(shù)接管sigtrap信號。在信號處理函數(shù)中,調(diào)用用于代替被替換函數(shù)的新函數(shù)。
上述的sigaction函數(shù)的功能是檢查或修改與指定信號相關(guān)聯(lián)的處理動作。
通過上述步驟,新的共享庫l的函數(shù)替代了目標(biāo)進程t中原先使用的舊函數(shù),每當(dāng)目標(biāo)進程t試圖調(diào)用被替換函數(shù)時,都會觸發(fā)sigtrap信號,然后,信號處理函數(shù)調(diào)用新的函數(shù),這個過程將一直存在于進程t的整個生存周期中。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例2
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述服務(wù)的更新方法的服務(wù)的更新裝置。圖7是根據(jù)本發(fā)明實施例的一種可選的服務(wù)的更新裝置的示意圖,如圖7所示,該裝置可以包括:服務(wù)單元72、接收單元74、更新單元76以及處理單元78。
服務(wù)單元72,用于在服務(wù)器上提供游戲應(yīng)用服務(wù),其中,服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理。
上述的服務(wù)器為用于提供游戲應(yīng)用服務(wù)的服務(wù)器,可在游戲設(shè)備上安裝游戲應(yīng)用的客戶端,再由服務(wù)器為游戲設(shè)備上的游戲應(yīng)用提供服務(wù)。
用戶可以直接在服務(wù)器上對所提供的游戲應(yīng)用服務(wù)進行管理(包括更新、刪除、暫停等),也可以通過與服務(wù)器通訊連接的其它終端來對其進行管理。
接收單元74,用于接收到更新請求,更新請求用于請求對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新。
上述的更新請求即用戶在終端或者在服務(wù)器上進行更新時所觸發(fā)的請求。
可選地,上述更新請求還是可以是服務(wù)器或終端自動觸發(fā)的,如服務(wù)器或終端按照預(yù)先設(shè)置的定時更新策略自動觸發(fā)的更新請求。
更新單元76,用于響應(yīng)于更新請求,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之前,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理。
需要說明的是,服務(wù)器是在提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件。
上述的游戲應(yīng)用服務(wù)不中斷包括兩個方面:其一是服務(wù)器本身能夠在不中斷或者中斷時間極短(幾乎可以忽略不計)的情況下,持續(xù)為用戶提供游戲服務(wù);其二是在游戲設(shè)備上感知不到游戲應(yīng)用服務(wù)的中斷,例如在游戲的過程中進行更新時,用戶可以不中斷地進行游戲,而不丟失游戲數(shù)據(jù)。
從方案實際實現(xiàn)的過程來看,在接收到更新請求前,游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,也即游戲應(yīng)用服務(wù)由第一可執(zhí)行文件提供,在將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件的過程中,也即完成更新之前,游戲應(yīng)用服務(wù)可繼續(xù)由第一可執(zhí)行文件提供,在完成更新時,游戲應(yīng)用服務(wù)可由第二可執(zhí)行文件提供(也即在第二可執(zhí)行文件正是提供游戲應(yīng)用服務(wù)前,游戲應(yīng)用服務(wù)可以由第一可執(zhí)行文件提供),從而實現(xiàn)游戲應(yīng)用服務(wù)的不中斷。
上述的可執(zhí)行文件為在服務(wù)器上可執(zhí)行的文件,具體類型可以根據(jù)服務(wù)器所采用的操作系統(tǒng)確定,例如在服務(wù)器的操作系統(tǒng)為windows時,對應(yīng)的可執(zhí)行文件為windows系統(tǒng)所支持的可執(zhí)行文件(如“.exe”文件);在服務(wù)器的操作系統(tǒng)為linux時,對應(yīng)的可執(zhí)行文件為linux系統(tǒng)所支持的可執(zhí)行文件(如用字符“x”標(biāo)識的文件)。
上述的可執(zhí)行文件即用于提供游戲應(yīng)用服務(wù)的可執(zhí)行文件,具體可以通過執(zhí)行該可執(zhí)行文件來提供游戲應(yīng)用服務(wù)。
處理單元78,用于在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)。
也即,在可執(zhí)行文件的更新完成之后,由第二可執(zhí)行文件使用之前由第一可執(zhí)行文件處理的上下文數(shù)據(jù),按照以前的上下文數(shù)據(jù)繼續(xù)為游戲設(shè)備提供服務(wù),對于終端而言,游戲應(yīng)用的過程中所使用的數(shù)據(jù)(上下文數(shù)據(jù))并未發(fā)生改變,即使發(fā)生服務(wù)更新,也不會影響當(dāng)前的游戲,可繼續(xù)使用更新前的游戲數(shù)據(jù)進行游戲,這樣服務(wù)器就可在不間斷服務(wù)的情況下進行服務(wù)更新。
需要說明的是,該實施例中的服務(wù)單元72可以用于執(zhí)行本申請實施例1中的步驟s202,該實施例中的接收單元74可以用于執(zhí)行本申請實施例1中的步驟s204,該實施例中的更新單元76可以用于執(zhí)行本申請實施例1中的步驟s206,該實施例中的處理單元78可以用于執(zhí)行本申請實施例1中的步驟s208。
此處需要說明的是,上述模塊與對應(yīng)的步驟所實現(xiàn)的示例和應(yīng)用場景相同,但不限于上述實施例1所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在如圖1所示的硬件環(huán)境中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。
通過上述模塊,在接收到更新請求時,在服務(wù)器提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù),可以解決相關(guān)技術(shù)中在對游戲服務(wù)器的游戲應(yīng)用服務(wù)進行更新時需要中斷所提供的游戲應(yīng)用服務(wù)的技術(shù)問題,進而達到了對游戲服務(wù)器進行更新時不中斷所提供的游戲服務(wù)的技術(shù)效果。
本申請的裝置可以應(yīng)用于各類游戲應(yīng)用服務(wù)的更新,下面以mmorpg類游戲為例進行說明。
由于mmorpg的復(fù)雜性,高頻率的更新會導(dǎo)致內(nèi)容無法做到完整的測試覆蓋,線上故障成為高概率事件,但同時,玩家對于服務(wù)質(zhì)量的要求也在不斷提升,為了滿足玩家的需求,游戲服務(wù)器力求做到7x24小時(一周二十四小時)在線提供服務(wù)而不中斷,上述種種需求,對開發(fā)者以及運營者都是非常大的挑戰(zhàn)。在這些要求下,mmorpg服務(wù)器的實現(xiàn)往往不是一個簡單的進程,而是一套復(fù)雜的大規(guī)模分布式系統(tǒng),典型的mmorpg服務(wù)器構(gòu)架如圖3所示:
包括主服務(wù)器(公共服務(wù)器master)上的目錄服務(wù)、版本升級、帳號服務(wù)、存儲服務(wù)器(及其熱備設(shè)備),以及用于管理這些服務(wù)的客戶端client,主服務(wù)器用于管理相應(yīng)的從服務(wù)器(如玄海岸服),從服務(wù)器用于具體提供相關(guān)的游戲服務(wù),其包括帳號服務(wù)(與相應(yīng)的數(shù)據(jù)庫連接)、接入層、郵件服務(wù)(與相應(yīng)的數(shù)據(jù)庫連接)、場景交換服務(wù)等。
區(qū)別于休閑類的acg游戲(動漫風(fēng)格游戲的簡稱,諸如卡牌、三消類游戲),mmorpg游戲邏輯復(fù)雜,諸如場景服務(wù)器(scene)、全局服務(wù)器(world)等進程都是強狀態(tài)進程,需要在內(nèi)存中保存大量實時的復(fù)雜運行數(shù)據(jù),因為這些強狀態(tài)進程的存在,mmorpg游戲服務(wù)器的在線更新非常難以實現(xiàn)。
當(dāng)強狀態(tài)的服務(wù)器程序在線上運行出現(xiàn)問題時,如果直接更新程序文件并重啟,會造成內(nèi)存中的數(shù)據(jù)丟失,導(dǎo)致服務(wù)中斷,因此無法進行在線更新程序文件的熱更新。如何在不影響用戶體驗的情況下進行強狀態(tài)服務(wù)器的在線熱更新修復(fù),一直是業(yè)界難題。
本申請?zhí)岢隽艘环N可以適用于強狀態(tài)服務(wù)器的熱更新方案,可以在用戶無感知的情況下,實現(xiàn)對于強狀態(tài)的服務(wù)器進程的在線熱更新,且對開發(fā)側(cè)的額外要求非常低,極大增強了系統(tǒng)的可用性以及可維護性,對于提高服務(wù)質(zhì)量有著重要的意義。
可選地,上述的更新單元包括:創(chuàng)建模塊,用于創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程;處理模塊,用于使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理,其中,第一進程是用于執(zhí)行第一可執(zhí)行文件的進程。
可選地,上述的處理模塊還用于:使用第二進程繼續(xù)對存儲在共享存儲空間中的第一上下文數(shù)據(jù)進行處理,其中,在使用第二進程接替第一進程之前,存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)已被第一進程處理為第一上下文數(shù)據(jù)。
可選地,更新單元還包括:關(guān)聯(lián)模塊,用于在創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程的同時或之后,建立第二進程與共享存儲空間之間的關(guān)聯(lián)關(guān)系;處理模塊還用于:從與第二進程具有關(guān)聯(lián)關(guān)系的共享存儲空間獲取第一上下文數(shù)據(jù);使用第二進程繼續(xù)對第一上下文數(shù)據(jù)進行處理。
可選地,該裝置還可以存儲單元,用于在使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理之后,將第二上下文數(shù)據(jù)存儲在共享存儲空間中,其中,存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的第一上下文數(shù)據(jù)已被第二進程處理為第二上下文數(shù)據(jù)。
可選地,創(chuàng)建模塊還用于:通過預(yù)設(shè)方式啟動第二可執(zhí)行文件,以創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程,其中,啟動后的第二可執(zhí)行文件在第二進程上執(zhí)行,預(yù)設(shè)方式為第一可執(zhí)行文件停止執(zhí)行之后,在第一進程上恢復(fù)執(zhí)行第一可執(zhí)行文件所使用的方式。
在上述實施例中,所涉及的單元或模塊時與前述方法實施例中的方法步驟所對應(yīng)的,這些單元或模塊的具體工作方式可以參照前述的方法實施例,在此不再贅述。
在本申請的技術(shù)方案中,可針對性地對原有系統(tǒng)進行優(yōu)化,在產(chǎn)品側(cè)對玩家無影響,玩家無感知;由于提升了系統(tǒng)的整體可用性,當(dāng)服務(wù)器出現(xiàn)故障時,玩家受影響的范圍和時間會被縮小,客觀上提升了玩家的游戲體驗與整體服務(wù)質(zhì)量,提升了游戲容災(zāi)能力與可用性,提升了應(yīng)急響應(yīng)能力,使得在線服務(wù)質(zhì)量更高。
另外,本申請的方案對于開發(fā)側(cè)的影響較少,將關(guān)鍵數(shù)據(jù)存儲于sharememory中即可,無需額外的注意事項,對開發(fā)人員要求低,對正常的開發(fā)流程無影響。
此處需要說明的是,上述模塊與對應(yīng)的步驟所實現(xiàn)的示例和應(yīng)用場景相同,但不限于上述實施例1所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運行在如圖1所示的硬件環(huán)境中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn),其中,硬件環(huán)境包括網(wǎng)絡(luò)環(huán)境。
實施例3
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述服務(wù)的更新方法的服務(wù)器或終端(即上述的電子裝置)。
圖8是根據(jù)本發(fā)明實施例的一種終端的結(jié)構(gòu)框圖,如圖8所示,該終端可以包括:一個或多個(圖中僅示出一個)處理器801、存儲器803、以及傳輸裝置805,如圖8所示,該終端還可以包括輸入輸出設(shè)備807。
其中,存儲器803可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的服務(wù)的更新方法和裝置對應(yīng)的程序指令/模塊,處理器801通過運行存儲在存儲器803內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實現(xiàn)上述的服務(wù)的更新方法。存儲器803可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器803可進一步包括相對于處理器801遠程設(shè)置的存儲器,這些遠程存儲器可以通過網(wǎng)絡(luò)連接至終端。上述網(wǎng)絡(luò)的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。
上述的傳輸裝置805用于經(jīng)由一個網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù),還可以用于處理器與存儲器之間的數(shù)據(jù)傳輸。上述的網(wǎng)絡(luò)具體實例可包括有線網(wǎng)絡(luò)及無線網(wǎng)絡(luò)。在一個實例中,傳輸裝置805包括一個網(wǎng)絡(luò)適配器(networkinterfacecontroller,nic),其可通過網(wǎng)線與其他網(wǎng)絡(luò)設(shè)備與路由器相連從而可與互聯(lián)網(wǎng)或局域網(wǎng)進行通訊。在一個實例中,傳輸裝置805為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進行通訊。
其中,具體地,存儲器803用于存儲應(yīng)用程序。
處理器801可以通過傳輸裝置805調(diào)用存儲器803存儲的應(yīng)用程序,以執(zhí)行下述步驟:在服務(wù)器上提供游戲應(yīng)用服務(wù),其中,服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理;接收到更新請求,其中,更新請求用于請求對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新;響應(yīng)于更新請求,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件;在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)。
處理器801還用于執(zhí)行下述步驟:創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程;使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理,其中,第一進程是用于執(zhí)行第一可執(zhí)行文件的進程。
采用本發(fā)明實施例,在接收到更新請求時,在服務(wù)器提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù),可以解決相關(guān)技術(shù)中在對游戲服務(wù)器的游戲應(yīng)用服務(wù)進行更新時需要中斷所提供的游戲應(yīng)用服務(wù)的技術(shù)問題,進而達到了對游戲服務(wù)器進行更新時不中斷所提供的游戲服務(wù)的技術(shù)效果。
可選地,本實施例中的具體示例可以參考上述實施例1和實施例2中所描述的示例,本實施例在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解,圖8所示的結(jié)構(gòu)僅為示意,終端可以是智能手機(如android手機、ios手機等)、平板電腦、掌上電腦以及移動互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,mid)、pad等終端設(shè)備。圖8其并不對上述電子裝置的結(jié)構(gòu)造成限定。例如,終端還可包括比圖8中所示更多或者更少的組件(如網(wǎng)絡(luò)接口、顯示裝置等),或者具有與圖8所示不同的配置。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設(shè)備相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機存取器(randomaccessmemory,ram)、磁盤或光盤等。
實施例4
本發(fā)明的實施例還提供了一種存儲介質(zhì)??蛇x地,在本實施例中,上述存儲介質(zhì)可以用于執(zhí)行服務(wù)的更新方法的程序代碼。
可選地,在本實施例中,上述存儲介質(zhì)可以位于上述實施例所示的網(wǎng)絡(luò)中的多個網(wǎng)絡(luò)設(shè)備中的至少一個網(wǎng)絡(luò)設(shè)備上。
可選地,在本實施例中,存儲介質(zhì)被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s11,在服務(wù)器上提供游戲應(yīng)用服務(wù),服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件為第一可執(zhí)行文件,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理;
s12,接收到更新請求,更新請求用于請求對服務(wù)器提供的游戲應(yīng)用服務(wù)進行更新;
s13,響應(yīng)于更新請求,在服務(wù)器提供的游戲應(yīng)用服務(wù)不中斷的情況下,將服務(wù)器為提供游戲應(yīng)用服務(wù)所執(zhí)行的可執(zhí)行文件由第一可執(zhí)行文件更新為第二可執(zhí)行文件,其中,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之前,游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)由第一可執(zhí)行文件處理;
s14,在將第一可執(zhí)行文件更新為第二可執(zhí)行文件之后,通過第二可執(zhí)行文件處理游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s21,創(chuàng)建用于執(zhí)行第二可執(zhí)行文件的第二進程;
s22,使用第二進程接替第一進程,繼續(xù)對存儲在共享存儲空間中的游戲應(yīng)用服務(wù)的上下文數(shù)據(jù)進行處理,其中,第一進程是用于執(zhí)行第一可執(zhí)行文件的進程。
可選地,本實施例中的具體示例可以參考上述實施例1和實施例2中所描述的示例,本實施例在此不再贅述。
可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
上述實施例中的集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在存儲介質(zhì)中,包括若干指令用以使得一臺或多臺計算機設(shè)備(可為個人計算機、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的客戶端,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。