麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

服務的更新方法和裝置與流程

文檔序號:11240623閱讀:601來源:國知局
服務的更新方法和裝置與流程

本發明涉及互聯網領域,具體而言,涉及一種服務的更新方法和裝置。



背景技術:

大規模在線角色扮演游戲mmorpg(英文全稱massivemulti-useronlinerole-playinggame)作為一種歷史悠久的游戲類型,在網游界中占有非常重要的地位。mmorpg服務器邏輯復雜,在超高的復雜度的前提下,既要保持高承載,又要保持高可用性,同時,在激烈競爭的市場條件下,和以往的單機游戲以年為周期的更新頻率不同,mmorpg游戲的版本迭代更新十分頻繁,為了更快的推出新內容吸引玩家,更新速度甚至可以達到一周一次。由于mmorpg的復雜性,高頻率的更新會導致內容無法做到完整的測試覆蓋,線上故障成為高概率事件。但同時,玩家對于服務質量的要求也在不斷提升,為了滿足玩家的需求,游戲服務器力求做到在線服務不中斷。上述種種需求,對開發者以及運營者都是非常大的挑戰,但是,目前還沒有實現服務更新時保證服務不中斷的技術方案。

針對相關技術中在對游戲服務器的游戲應用服務進行更新時需要中斷所提供的游戲應用服務的技術問題,目前尚未提出有效的解決方案。



技術實現要素:

本發明實施例提供了一種服務的更新方法和裝置,以至少解決相關技術中在對游戲服務器的游戲應用服務進行更新時需要中斷所提供的游戲應用服務的技術問題。

根據本發明實施例的一個方面,提供了一種服務的更新方法,該更新方法包括:在服務器上提供游戲應用服務,其中,服務器為提供游戲應用服務所執行的可執行文件為第一可執行文件,游戲應用服務的上下文數據由第一可執行文件處理;接收到更新請求,其中,更新請求用于請求對服務器提供的游戲應用服務進行更新;響應于更新請求,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件;在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據。

根據本發明實施例的另一方面,還提供了一種服務的更新裝置,該更新裝置包括:服務單元,用于在服務器上提供游戲應用服務,其中,服務器為提供游戲應用服務所執行的可執行文件為第一可執行文件,游戲應用服務的上下文數據由第一可執行文件處理;接收單元,用于接收到更新請求,其中,更新請求用于請求對服務器提供的游戲應用服務進行更新;更新單元,用于響應于更新請求,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件;處理單元,用于在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據。

在本發明實施例中,在接收到更新請求時,在服務器提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據,可以解決相關技術中在對游戲服務器的游戲應用服務進行更新時需要中斷所提供的游戲應用服務的技術問題,進而達到了對游戲服務器進行更新時不中斷所提供的游戲服務的技術效果。

附圖說明

此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:

圖1是根據本發明實施例的服務的更新方法的硬件環境的示意圖;

圖2是根據本發明實施例的一種可選的服務的更新方法的流程圖;

圖3是根據本發明實施例的一種可選的服務架構的示意圖;

圖4是根據本發明實施例的一種可選的服務的更新方法的流程圖;

圖5是根據本發明實施例的一種可選的服務更新的示意圖;

圖6是根據本發明實施例的一種可選的服務的更新方法的流程圖;

圖7是根據本發明實施例的一種可選的服務的更新裝置的示意圖;以及

圖8是根據本發明實施例的一種終端的結構框圖。

具體實施方式

為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。

需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。

首先,在對本發明實施例進行描述的過程中出現的部分名詞或者術語適用于如下解釋:

網絡游戲,英文名稱為onlinegame,又稱“在線游戲”,簡稱“網游”。指以互聯網為傳輸媒介,以游戲運營商服務器和用戶計算機為處理終端,以游戲客戶端軟件為信息交互窗口的旨在實現娛樂、休閑、交流和取得虛擬成就的具有可持續性的個體性多人在線游戲。

大規模在線角色扮演游戲(mmorpg),英文全稱massivemulti-useronlinerole-playinggame,是一種游戲類型。在游戲中,玩家扮演虛擬世界中的一個或者幾個隊員角色在特定場景下進行游戲。

網絡游戲客戶端(gameclient),是指與網絡游戲服務器相對應,為客戶提供本地服務的程序,一般安裝在普通的用戶機上,需要與服務端互相配合運行。

網絡游戲服務器(gameserver),是指與網絡游戲客戶端相對應、安裝在idc中、為網絡游戲客戶端提供數據轉發與邏輯處理服務的軟件程序。

idc為互聯網內容提供商(icp)、企業、媒體和各類網站提供大規模、高質量、安全可靠的專業化服務器托管、空間租用、網絡批發帶寬以及asp、ec等業務。idc是對入駐(hosting)企業、商戶或網站服務器群托管的場所;是各種模式電子商務賴以安全運作的基礎設施,也是支持企業及其商業聯盟(其分銷商、供應商、客戶等)實施價值鏈管理的平臺。

強狀態進程,指進程運行過程中,需要記錄存儲大量的上下文數據的一種進程。此類進程向外提供的服務依賴于上下文數據,一旦進程崩潰丟失數據,則在線服務將中斷。

弱狀態進程,弱狀態進程是指,運行過程中,不記錄或者只記錄很少量的上下文數據的一種進程。此類進程對外提供的服務不依賴于或者弱依賴于上下文數據。即使進程崩潰,由于不需要保存數據(或者數據可以在重啟進程時簡單恢復),只需要重啟進程,即可恢復在線服務。

服務器可用性,指服務器整體對外提供服務的穩定性的一種度量。

熱更新,熱更新即為在程序不停止提供服務的情況下,完成功能的升級或者切換的一種方法。

宕機,指操作系統無法從一個嚴重系統錯誤中恢復過來,或系統硬件層面出問題,以致系統長時間無響應,而不得不重新啟動計算機的現象。它屬于電腦運作的一種正常現象,任何電腦都會出現這種情況。

動態鏈接庫文件,是一種不可執行的二進制程序文件,它允許程序共享執行特殊任務所必需的代碼和其他資源。windows提供的dll文件中包含了允許基于windows的程序在windows環境下操作的許多函數和資源。linux系統中常常是“.so”的文件。

實施例1

根據本發明實施例,提供了一種服務的更新方法的方法實施例。

可選地,在本實施例中,上述服務的更新方法可以應用于如圖1所示的由服務器102和終端104所構成的硬件環境中。如圖1所示,服務器102通過網絡與終端104進行連接,上述網絡包括但不限于:廣域網、城域網或局域網,終端104并不限定于pc、手機、平板電腦等。本發明實施例的服務的更新方法可以由服務器102來執行,也可以由終端104來執行,還可以是由服務器102和終端104共同執行。其中,終端104執行本發明實施例的服務的更新方法也可以是由安裝在其上的客戶端來執行。

當本發明實施例的服務的更新方法由服務器或終端來執行時,直接在服務器或終端執行與服務的更新方法對應的程序即可。

當本發明實施例的服務的更新方法由服務器和終端來共同執行時,需要二者進行相關信息的交互,如終端將更新請求發送給服務器。再由服務器來執行相關的步驟,下面結合圖2進行詳細說明:

圖2是根據本發明實施例的一種可選的服務的更新方法的流程圖,如圖2所示,該方法可以包括以下步驟:

步驟s202,在服務器上提供游戲應用服務,服務器為提供游戲應用服務所執行的可執行文件為第一可執行文件,游戲應用服務的上下文數據由第一可執行文件處理。

上述的服務器為用于提供游戲應用服務的服務器,可在游戲設備上安裝游戲應用的客戶端,再由服務器為游戲設備上的游戲應用提供服務。

用戶可以直接在服務器上對所提供的游戲應用服務進行管理(包括更新、刪除、暫停等),也可以通過與服務器通訊連接的其它終端來對其進行管理。

步驟s204,接收到更新請求,更新請求用于請求對服務器提供的游戲應用服務進行更新。

上述的更新請求即用戶在終端或者在服務器上進行更新時所觸發的請求。

可選地,上述更新請求還是可以是服務器或終端自動觸發的,如服務器或終端按照預先設置的定時更新策略自動觸發的更新請求。

步驟s206,響應于更新請求,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件。

需要說明的是,服務器是在提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件。

上述的游戲應用服務不中斷包括兩個方面:其一是服務器本身能夠在不中斷或者中斷時間極短(幾乎可以忽略不計)的情況下,持續為用戶提供游戲服務;其二是在游戲設備上感知不到游戲應用服務的中斷,例如在游戲的過程中進行更新時,用戶可以不中斷地進行游戲,而不丟失游戲數據。

從方案實際實現的過程來看,在接收到更新請求前,游戲應用服務所執行的可執行文件為第一可執行文件,也即游戲應用服務由第一可執行文件提供,在將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件的過程中,也即完成更新之前,游戲應用服務可繼續由第一可執行文件提供(也即在第二可執行文件正是提供游戲應用服務前,游戲應用服務可以由第一可執行文件提供),在完成更新時,游戲應用服務由第二可執行文件提供,從而實現游戲應用服務的不中斷。

上述的可執行文件為在服務器上可執行的文件,具體類型可以根據服務器所采用的操作系統確定,例如在服務器的操作系統為windows時,對應的可執行文件為windows系統所支持的可執行文件(如“.exe”文件);在服務器的操作系統為linux時,對應的可執行文件為linux系統所支持的可執行文件(如用字符“x”標識的文件)。

上述的可執行文件即用于提供游戲應用服務的可執行文件,具體可以通過執行該可執行文件來提供游戲應用服務。

步驟s208,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據。

也即,在可執行文件的更新完成之后,由第二可執行文件使用之前由第一可執行文件處理的上下文數據,按照以前的上下文數據繼續為游戲設備提供服務,對于終端而言,游戲應用的過程中所使用的數據(上下文數據)并未發生改變,即使發生服務更新,也不會影響當前的游戲,可繼續使用更新前的游戲數據進行游戲,這樣服務器就可在不間斷服務的情況下進行服務更新。

通過上述步驟s202至步驟s208,在接收到更新請求時,在服務器提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據,可以解決相關技術中在對游戲服務器的游戲應用服務進行更新時需要中斷所提供的游戲應用服務的技術問題,進而達到了對游戲服務器進行更新時不中斷所提供的游戲服務的技術效果。

本申請的方法可以應用于各類游戲應用服務的更新,下面以mmorpg類游戲為例進行說明。

由于mmorpg的復雜性,高頻率的更新會導致內容無法做到完整的測試覆蓋,線上故障成為高概率事件,但同時,玩家對于服務質量的要求也在不斷提升,為了滿足玩家的需求,游戲服務器力求做到7x24小時(一周二十四小時)在線提供服務而不中斷,上述種種需求,對開發者以及運營者都是非常大的挑戰。在這些要求下,mmorpg服務器的實現往往不是一個簡單的進程,而是一套復雜的大規模分布式系統,典型的mmorpg服務器構架如圖3所示:

包括主服務器(公共服務器master)上的目錄服務、版本升級、帳號服務、存儲服務器(及其熱備設備),以及用于管理這些服務的客戶端client,主服務器用于管理相應的從服務器(如玄海岸服),從服務器用于具體提供相關的游戲服務,其包括帳號服務(與相應的數據庫連接)、接入層、郵件服務(與相應的數據庫連接)、場景交換服務等。

區別于休閑類的acg游戲(動漫風格游戲的簡稱,諸如卡牌、三消類游戲),mmorpg游戲邏輯復雜,諸如場景服務器(scene)、全局服務器(world)等進程都是強狀態進程,需要在內存中保存大量實時的復雜運行數據,因為這些強狀態進程的存在,mmorpg游戲服務器的在線更新非常難以實現。

當強狀態的服務器程序在線上運行出現問題時,如果直接更新程序文件并重啟,會造成內存中的數據丟失,導致服務中斷,因此無法進行在線更新程序文件的熱更新。如何在不影響用戶體驗的情況下進行強狀態服務器的在線熱更新修復,一直是業界難題。

本申請提出了一種可以適用于強狀態服務器的熱更新方案,可以在用戶無感知的情況下,實現對于強狀態的服務器進程的在線熱更新,且對開發側的額外要求非常低,極大增強了系統的可用性以及可維護性,對于提高服務質量有著重要的意義。下面結合具體步驟詳述本發明的實施例:

在步驟s204提供的技術方案中,服務器接收到對服務器提供的游戲應用服務進行更新的更新請求。

在步驟s206提供的技術方案中,在服務器提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件包括:

步驟s2062,在服務器上創建用于執行第二可執行文件的第二進程;

步驟s2064,使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理,第一進程是用于執行第一可執行文件的進程。

其中,在步驟s2062中,在服務器上創建用于執行第二可執行文件的第二進程時,可通過預設方式啟動第二可執行文件,以創建用于執行第二可執行文件的第二進程,啟動后的第二可執行文件在第二進程上執行,預設方式為第一可執行文件停止執行之后,在第一進程上恢復執行第一可執行文件所使用的方式。

上述的預設方式為第一進程上恢復執行第一可執行文件所使用的方式,不同的操作系統對應的方式不同,例如在linux操作系統中,可以使用resume方法來進行恢復。

需要說明的是,resume方法為恢復第一進程時使用的方法,而使用resume方法來創建第二進程,對于服務器而言,相當于還是按照以前的可執行文件來創建進程,只是對于服務器而言的可執行文件已經由第一可執行文件替換為了第二可執行文件,但是由于是采用resume的方式創建的,第二進程可以保留與第一進程相同的相關參數,而不用重新進行相關設置。

在步驟s2064中,在使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理時,服務器使用第二進程繼續對存儲在共享存儲空間中的第一上下文數據進行處理,在使用第二進程接替第一進程之前,存儲在共享存儲空間中的游戲應用服務的上下文數據已被第一進程處理為第一上下文數據。

可選地,在執行步驟s2062的在服務器上創建用于執行第二可執行文件的第二進程的同時或之后,建立第二進程與共享存儲空間之間的關聯關系,這樣,在服務器使用第二進程繼續對存儲在共享存儲空間中的第一上下文數據進行處理時,可從與第二進程具有關聯關系的共享存儲空間獲取第一上下文數據;然后使用第二進程繼續對第一上下文數據進行處理。

需要說明的是,在將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件之前,當第一可執行文件還在執行時,將第一進程對游戲應用服務的上下文數據的處理結果(即第一上下文數據)存儲在共享存儲空間中,以便于在發生游戲應用服務更新時,保證數據不會丟失,便于利用這些數據持續為用戶提供服務,使得用戶得到的服務不會中斷,也即不使用新的游戲上下文數據重新開始游戲。

同理,對于第二進程而言,在使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理之后,可將第二上下文數據存儲在共享存儲空間中,存儲在共享存儲空間中的游戲應用服務的第一上下文數據已被第二進程處理為第二上下文數據。便于在發生游戲應用服務更新時,保證數據不會丟失。

在步驟s208提供的技術方案中,以更新可執行文件的完成時刻為時間參考點,在將第一可執行文件更新為第二可執行文件之前,游戲應用服務的上下文數據由第一可執行文件處理,即第一可執行文件提供游戲應用服務,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據,即第二可執行文件提供游戲應用服務。具體如何完成更新已經在前述內容中進行描述,在此不再贅述。

作為一種可選的實施例,針對原有方案的諸多缺陷,本申請提出了一種基于swapresume機制的強狀態服務器進程在線熱更新方案,下面結合圖4和圖5詳述本申請的實施例:

步驟s402,進程運行過程中的上下文數據都存儲于sharememory(即共享內容)中。

步驟s404,當需要更新時,制作新的程序文件,上傳至服務器替換原有程序文件(即為程序文件的交換swap過程)。

例如,如圖5所示,在宕機發生時,定位到問題,并根據問題提供新的可執行文件(用于解決該問題),然后將該可執行文件上傳至服務器,以替換老的可執行文件,等待下次宕機時拉起(即下次關機重啟時運行新的可執行文件)。宕機發生時使用新程序自動拉起,以恢復服務故障修復。

步驟s406,運維kill掉(即結束)當前老的正在運行的目標進程,然后以resume方式啟動新的程序文件。

可選地,也可在宕機發生時,使用新的可執行文件(即程序)自動拉起運行。

上述的resume方法用于繼續執行已經掛起的線程。

步驟s408,新進程被使用attach方法貼附到原有sharememory上,讀取原有的上下文數據,接替老的目標進程繼續提供服務(即為resume)。從而可以對故障進行修復,并恢復服務。

可選地,可以預先啟動新的程序文件(即第二可執行文件),并使用attach方法將新進程(即第二進程)貼附到原有sharememory(即共享內存空間)上,在kill掉舊進程(第一進程)的同時,運行新進程,以保證服務的不中斷。

在本申請的技術方案中,可針對性地對原有系統進行優化,在產品側對玩家無影響,玩家無感知;由于提升了系統的整體可用性,當服務器出現故障時,玩家受影響的范圍和時間會被縮小,客觀上提升了玩家的游戲體驗與整體服務質量,提升了游戲容災能力與可用性,提升了應急響應能力,使得在線服務質量更高。

另外,本申請的方案對于開發側的影響較少,將關鍵數據存儲于sharememory中即可,無需額外的注意事項,對開發人員要求低,對正常的開發流程無影響。

本發明還提供了一種優選實施例,該優選實施例可以在更新上下文數據時使用。

在linux系統下,提供了共享庫文件的功能,為了達到軟件模塊化的目的,可把邏輯上緊密相關的功能集中在一起,編譯到的共享庫中,這樣做既有利于代碼的管理,也便于模塊的復用。同時,共享庫的方式也有利于應用升級,某些時候,僅僅更新數個共享庫文件就可以完成整個應用的升級,降低了升級時的開銷。

共享庫文件是由主程序文件運行時,使用dlopen(可用于使用指定模式打開指定的動態鏈接庫文件)動態掛載的,這就意味著通過一些特別的操作,可以在更新共享庫文件后,利用dlopen動態重新掛載更新過后的共享庫文件,實現在線熱更新。

具體在應用上述方法時,可以在步驟s208完成之后,在需要對游戲應用服務進行更新時,對第二進程的動態鏈接庫文件直接進行更新。

利用該方法時,可以將需要更新的內容或者邏輯放置在第二進程的動態鏈接庫文件中,下面結合圖6詳述本申請的實施例:

需要說明的是,基于共享庫文件的在線熱更新適用于較小的升級,以完成不重啟的更新。更新過程中,由一個獨立升級程序u來負責觸發目標應用(由進程t來執行)掛載新的共享庫文件l。

步驟s602,升級程序u找到進程t的dlopen函數的入口地址。

步驟s604,升級進程u執行attach系統調用,貼附到進程t上。向進程t的堆棧里壓入新的共享庫文件l的名字,再把dlopen函數的入口地址賦值給pc寄存器。

上述的attach是一種linux下的將一個對象貼附到另一個對象上的方法。pc是16位程序計數器,專門用于在cpu取指令期間的尋址程序存儲器。

步驟s606,讓目標進程t繼續運行,由于pc寄存器保存的是dlopen函數的入口地址,這樣,在目標進程t空間里,dlopen函數被調用,新的共享庫文件l被目標進程t裝載。

步驟s608,新的共享庫文件l在被裝載時,利用dlsym函數在目標進程t中找到被替換函數的地址,設置被替換函數的代碼空間為可寫狀態。

dlsym函數用于根據動態鏈接庫操作句柄與符號,返回符號對應的地址,使用這個函數不但可以獲取函數地址,也可以獲取變量地址。

步驟s610,將匯編指令0xcc和0xc3寫入被替換函數入口。顯然,由于int3的存在,當目標進程t調用這個被替換函數時,就會觸發一次sigtrap信號,sigtrap信號是當子進程執行到這個斷點int3的時候,產生的信號。

上述的0xcc是匯編int3的指令碼,0xc3是匯編ret的指令碼(0xc3是64位系統的指令碼)。

步驟s612,新的共享庫文件l在被裝載時,調用sigaction函數接管sigtrap信號。在信號處理函數中,調用用于代替被替換函數的新函數。

上述的sigaction函數的功能是檢查或修改與指定信號相關聯的處理動作。

通過上述步驟,新的共享庫l的函數替代了目標進程t中原先使用的舊函數,每當目標進程t試圖調用被替換函數時,都會觸發sigtrap信號,然后,信號處理函數調用新的函數,這個過程將一直存在于進程t的整個生存周期中。

需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明并不受所描述的動作順序的限制,因為依據本發明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作和模塊并不一定是本發明所必須的。

通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網絡設備等)執行本發明各個實施例所述的方法。

實施例2

根據本發明實施例,還提供了一種用于實施上述服務的更新方法的服務的更新裝置。圖7是根據本發明實施例的一種可選的服務的更新裝置的示意圖,如圖7所示,該裝置可以包括:服務單元72、接收單元74、更新單元76以及處理單元78。

服務單元72,用于在服務器上提供游戲應用服務,其中,服務器為提供游戲應用服務所執行的可執行文件為第一可執行文件,游戲應用服務的上下文數據由第一可執行文件處理。

上述的服務器為用于提供游戲應用服務的服務器,可在游戲設備上安裝游戲應用的客戶端,再由服務器為游戲設備上的游戲應用提供服務。

用戶可以直接在服務器上對所提供的游戲應用服務進行管理(包括更新、刪除、暫停等),也可以通過與服務器通訊連接的其它終端來對其進行管理。

接收單元74,用于接收到更新請求,更新請求用于請求對服務器提供的游戲應用服務進行更新。

上述的更新請求即用戶在終端或者在服務器上進行更新時所觸發的請求。

可選地,上述更新請求還是可以是服務器或終端自動觸發的,如服務器或終端按照預先設置的定時更新策略自動觸發的更新請求。

更新單元76,用于響應于更新請求,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件,在將第一可執行文件更新為第二可執行文件之前,游戲應用服務的上下文數據由第一可執行文件處理。

需要說明的是,服務器是在提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件。

上述的游戲應用服務不中斷包括兩個方面:其一是服務器本身能夠在不中斷或者中斷時間極短(幾乎可以忽略不計)的情況下,持續為用戶提供游戲服務;其二是在游戲設備上感知不到游戲應用服務的中斷,例如在游戲的過程中進行更新時,用戶可以不中斷地進行游戲,而不丟失游戲數據。

從方案實際實現的過程來看,在接收到更新請求前,游戲應用服務所執行的可執行文件為第一可執行文件,也即游戲應用服務由第一可執行文件提供,在將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件的過程中,也即完成更新之前,游戲應用服務可繼續由第一可執行文件提供,在完成更新時,游戲應用服務可由第二可執行文件提供(也即在第二可執行文件正是提供游戲應用服務前,游戲應用服務可以由第一可執行文件提供),從而實現游戲應用服務的不中斷。

上述的可執行文件為在服務器上可執行的文件,具體類型可以根據服務器所采用的操作系統確定,例如在服務器的操作系統為windows時,對應的可執行文件為windows系統所支持的可執行文件(如“.exe”文件);在服務器的操作系統為linux時,對應的可執行文件為linux系統所支持的可執行文件(如用字符“x”標識的文件)。

上述的可執行文件即用于提供游戲應用服務的可執行文件,具體可以通過執行該可執行文件來提供游戲應用服務。

處理單元78,用于在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據。

也即,在可執行文件的更新完成之后,由第二可執行文件使用之前由第一可執行文件處理的上下文數據,按照以前的上下文數據繼續為游戲設備提供服務,對于終端而言,游戲應用的過程中所使用的數據(上下文數據)并未發生改變,即使發生服務更新,也不會影響當前的游戲,可繼續使用更新前的游戲數據進行游戲,這樣服務器就可在不間斷服務的情況下進行服務更新。

需要說明的是,該實施例中的服務單元72可以用于執行本申請實施例1中的步驟s202,該實施例中的接收單元74可以用于執行本申請實施例1中的步驟s204,該實施例中的更新單元76可以用于執行本申請實施例1中的步驟s206,該實施例中的處理單元78可以用于執行本申請實施例1中的步驟s208。

此處需要說明的是,上述模塊與對應的步驟所實現的示例和應用場景相同,但不限于上述實施例1所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在如圖1所示的硬件環境中,可以通過軟件實現,也可以通過硬件實現。

通過上述模塊,在接收到更新請求時,在服務器提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據,可以解決相關技術中在對游戲服務器的游戲應用服務進行更新時需要中斷所提供的游戲應用服務的技術問題,進而達到了對游戲服務器進行更新時不中斷所提供的游戲服務的技術效果。

本申請的裝置可以應用于各類游戲應用服務的更新,下面以mmorpg類游戲為例進行說明。

由于mmorpg的復雜性,高頻率的更新會導致內容無法做到完整的測試覆蓋,線上故障成為高概率事件,但同時,玩家對于服務質量的要求也在不斷提升,為了滿足玩家的需求,游戲服務器力求做到7x24小時(一周二十四小時)在線提供服務而不中斷,上述種種需求,對開發者以及運營者都是非常大的挑戰。在這些要求下,mmorpg服務器的實現往往不是一個簡單的進程,而是一套復雜的大規模分布式系統,典型的mmorpg服務器構架如圖3所示:

包括主服務器(公共服務器master)上的目錄服務、版本升級、帳號服務、存儲服務器(及其熱備設備),以及用于管理這些服務的客戶端client,主服務器用于管理相應的從服務器(如玄海岸服),從服務器用于具體提供相關的游戲服務,其包括帳號服務(與相應的數據庫連接)、接入層、郵件服務(與相應的數據庫連接)、場景交換服務等。

區別于休閑類的acg游戲(動漫風格游戲的簡稱,諸如卡牌、三消類游戲),mmorpg游戲邏輯復雜,諸如場景服務器(scene)、全局服務器(world)等進程都是強狀態進程,需要在內存中保存大量實時的復雜運行數據,因為這些強狀態進程的存在,mmorpg游戲服務器的在線更新非常難以實現。

當強狀態的服務器程序在線上運行出現問題時,如果直接更新程序文件并重啟,會造成內存中的數據丟失,導致服務中斷,因此無法進行在線更新程序文件的熱更新。如何在不影響用戶體驗的情況下進行強狀態服務器的在線熱更新修復,一直是業界難題。

本申請提出了一種可以適用于強狀態服務器的熱更新方案,可以在用戶無感知的情況下,實現對于強狀態的服務器進程的在線熱更新,且對開發側的額外要求非常低,極大增強了系統的可用性以及可維護性,對于提高服務質量有著重要的意義。

可選地,上述的更新單元包括:創建模塊,用于創建用于執行第二可執行文件的第二進程;處理模塊,用于使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理,其中,第一進程是用于執行第一可執行文件的進程。

可選地,上述的處理模塊還用于:使用第二進程繼續對存儲在共享存儲空間中的第一上下文數據進行處理,其中,在使用第二進程接替第一進程之前,存儲在共享存儲空間中的游戲應用服務的上下文數據已被第一進程處理為第一上下文數據。

可選地,更新單元還包括:關聯模塊,用于在創建用于執行第二可執行文件的第二進程的同時或之后,建立第二進程與共享存儲空間之間的關聯關系;處理模塊還用于:從與第二進程具有關聯關系的共享存儲空間獲取第一上下文數據;使用第二進程繼續對第一上下文數據進行處理。

可選地,該裝置還可以存儲單元,用于在使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理之后,將第二上下文數據存儲在共享存儲空間中,其中,存儲在共享存儲空間中的游戲應用服務的第一上下文數據已被第二進程處理為第二上下文數據。

可選地,創建模塊還用于:通過預設方式啟動第二可執行文件,以創建用于執行第二可執行文件的第二進程,其中,啟動后的第二可執行文件在第二進程上執行,預設方式為第一可執行文件停止執行之后,在第一進程上恢復執行第一可執行文件所使用的方式。

在上述實施例中,所涉及的單元或模塊時與前述方法實施例中的方法步驟所對應的,這些單元或模塊的具體工作方式可以參照前述的方法實施例,在此不再贅述。

在本申請的技術方案中,可針對性地對原有系統進行優化,在產品側對玩家無影響,玩家無感知;由于提升了系統的整體可用性,當服務器出現故障時,玩家受影響的范圍和時間會被縮小,客觀上提升了玩家的游戲體驗與整體服務質量,提升了游戲容災能力與可用性,提升了應急響應能力,使得在線服務質量更高。

另外,本申請的方案對于開發側的影響較少,將關鍵數據存儲于sharememory中即可,無需額外的注意事項,對開發人員要求低,對正常的開發流程無影響。

此處需要說明的是,上述模塊與對應的步驟所實現的示例和應用場景相同,但不限于上述實施例1所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在如圖1所示的硬件環境中,可以通過軟件實現,也可以通過硬件實現,其中,硬件環境包括網絡環境。

實施例3

根據本發明實施例,還提供了一種用于實施上述服務的更新方法的服務器或終端(即上述的電子裝置)。

圖8是根據本發明實施例的一種終端的結構框圖,如圖8所示,該終端可以包括:一個或多個(圖中僅示出一個)處理器801、存儲器803、以及傳輸裝置805,如圖8所示,該終端還可以包括輸入輸出設備807。

其中,存儲器803可用于存儲軟件程序以及模塊,如本發明實施例中的服務的更新方法和裝置對應的程序指令/模塊,處理器801通過運行存儲在存儲器803內的軟件程序以及模塊,從而執行各種功能應用以及數據處理,即實現上述的服務的更新方法。存儲器803可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態存儲器。在一些實例中,存儲器803可進一步包括相對于處理器801遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至終端。上述網絡的實例包括但不限于互聯網、企業內部網、局域網、移動通信網及其組合。

上述的傳輸裝置805用于經由一個網絡接收或者發送數據,還可以用于處理器與存儲器之間的數據傳輸。上述的網絡具體實例可包括有線網絡及無線網絡。在一個實例中,傳輸裝置805包括一個網絡適配器(networkinterfacecontroller,nic),其可通過網線與其他網絡設備與路由器相連從而可與互聯網或局域網進行通訊。在一個實例中,傳輸裝置805為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯網進行通訊。

其中,具體地,存儲器803用于存儲應用程序。

處理器801可以通過傳輸裝置805調用存儲器803存儲的應用程序,以執行下述步驟:在服務器上提供游戲應用服務,其中,服務器為提供游戲應用服務所執行的可執行文件為第一可執行文件,游戲應用服務的上下文數據由第一可執行文件處理;接收到更新請求,其中,更新請求用于請求對服務器提供的游戲應用服務進行更新;響應于更新請求,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件;在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據。

處理器801還用于執行下述步驟:創建用于執行第二可執行文件的第二進程;使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理,其中,第一進程是用于執行第一可執行文件的進程。

采用本發明實施例,在接收到更新請求時,在服務器提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據,可以解決相關技術中在對游戲服務器的游戲應用服務進行更新時需要中斷所提供的游戲應用服務的技術問題,進而達到了對游戲服務器進行更新時不中斷所提供的游戲服務的技術效果。

可選地,本實施例中的具體示例可以參考上述實施例1和實施例2中所描述的示例,本實施例在此不再贅述。

本領域普通技術人員可以理解,圖8所示的結構僅為示意,終端可以是智能手機(如android手機、ios手機等)、平板電腦、掌上電腦以及移動互聯網設備(mobileinternetdevices,mid)、pad等終端設備。圖8其并不對上述電子裝置的結構造成限定。例如,終端還可包括比圖8中所示更多或者更少的組件(如網絡接口、顯示裝置等),或者具有與圖8所示不同的配置。

本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設備相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機存取器(randomaccessmemory,ram)、磁盤或光盤等。

實施例4

本發明的實施例還提供了一種存儲介質。可選地,在本實施例中,上述存儲介質可以用于執行服務的更新方法的程序代碼。

可選地,在本實施例中,上述存儲介質可以位于上述實施例所示的網絡中的多個網絡設備中的至少一個網絡設備上。

可選地,在本實施例中,存儲介質被設置為存儲用于執行以下步驟的程序代碼:

s11,在服務器上提供游戲應用服務,服務器為提供游戲應用服務所執行的可執行文件為第一可執行文件,游戲應用服務的上下文數據由第一可執行文件處理;

s12,接收到更新請求,更新請求用于請求對服務器提供的游戲應用服務進行更新;

s13,響應于更新請求,在服務器提供的游戲應用服務不中斷的情況下,將服務器為提供游戲應用服務所執行的可執行文件由第一可執行文件更新為第二可執行文件,其中,在將第一可執行文件更新為第二可執行文件之前,游戲應用服務的上下文數據由第一可執行文件處理;

s14,在將第一可執行文件更新為第二可執行文件之后,通過第二可執行文件處理游戲應用服務的上下文數據。

可選地,存儲介質還被設置為存儲用于執行以下步驟的程序代碼:

s21,創建用于執行第二可執行文件的第二進程;

s22,使用第二進程接替第一進程,繼續對存儲在共享存儲空間中的游戲應用服務的上下文數據進行處理,其中,第一進程是用于執行第一可執行文件的進程。

可選地,本實施例中的具體示例可以參考上述實施例1和實施例2中所描述的示例,本實施例在此不再贅述。

可選地,在本實施例中,上述存儲介質可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。

上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。

上述實施例中的集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在存儲介質中,包括若干指令用以使得一臺或多臺計算機設備(可為個人計算機、服務器或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。

在本發明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。

在本申請所提供的幾個實施例中,應該理解到,所揭露的客戶端,可通過其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。

另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。

以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 施秉县| 新巴尔虎右旗| 红河县| 双柏县| 宁蒗| 台南县| 金坛市| 海盐县| 达拉特旗| 景泰县| 凤城市| 启东市| 财经| 贡嘎县| 长海县| 增城市| 尚义县| 开封县| 阿巴嘎旗| 浮山县| 临城县| 孟州市| 吴江市| 屯昌县| 双辽市| 阳江市| 桐乡市| 自贡市| 无棣县| 抚宁县| 诸暨市| 普格县| 新河县| 平乡县| 定州市| 霍林郭勒市| 图木舒克市| 兴隆县| 隆林| 黄浦区| 章丘市|