用于游戲服務器動態負載均衡的方法和設備的制作方法
【專利摘要】本發明提供了一種用于游戲服務器動態負載均衡的方法,包括:確定游戲玩家是否將要進入到新的游戲場景;響應于確定所述游戲玩家將要進入到所述新的游戲場景,檢測所述游戲服務器的負載情況;以及基于所述檢測的結果,選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作。此外,本發明還提供了一種用于游戲服務器動態負載均衡的設備。
【專利說明】用于游戲服務器動態負載均衡的方法和設備
【技術領域】
[0001]本發明總體上涉及數據處理領域,更具體地涉及一種用于游戲服務器動態負載均衡的方法和設備。
【背景技術】
[0002]隨著互聯網技術的發展,越來越多的游戲開放商已經借助互聯網這個平臺開發出了越來越多的網絡游戲來吸引玩家。相比于在諸如個人電腦和個人游戲機上運行的未聯網單機游戲,網絡游戲的最大特點是通過網絡將各個玩家聯系起來,這種前所未有的互動游戲方式給眾多玩家帶來了無與倫比的游戲快感和新鮮感受。
[0003]為了為眾多的游戲玩家提供基于其各自游戲進度的操作,需要提供一個或多個網絡游戲服務器來為不同玩家的游戲操作生成不同的“場景”。此處的“場景”被定義為玩家在其中與其它玩家或“非玩家控制角色(NPC Non-Player-Controlled Character)進行交互的特定區域,不同的場景之間的NPC之間間隔開一定的距離以便使得游戲服務器可以區分游戲玩家是否進入一個新的場景。游戲場景的實例可以包括但不限于多地圖游戲中的每一幅地圖和過關游戲中的每一關卡。在前一種情況下,游戲玩家在完成當前地圖中的任務時,就會進入下一張地圖繼續完成其新的游戲任務,此時就從前一個游戲場景切換到下一個游戲場景。在后一種情況下,當游戲玩家完成當前關卡的任務后,其會自然地進入下一個關卡,由此從一個游戲場景進入到下一個游戲場景。此處只是舉例說明了游戲場景的幾個例子,眾所周知的是,存在許多具有此類游戲場景的網絡游戲的情況。
[0004]多場景網絡游戲在給用戶帶來更新鮮和更刺激的感受的同時,也帶來許多挑戰。與傳統的單機游戲相比,網絡游戲服務器由于大量服務端狀態和頻繁的數據交叉訪問而很難地像網頁服務器那樣按請求進行動態負載平衡,這就造成了用于網絡游戲的游戲服務器之間的動態負載不均衡的問題。
[0005]對此問題的一種常用的解決方法是事先基于游戲場景的數量將其平均非配給不同的游戲服務器。每個游戲服務器產生相同或基本上相同數量的游戲場景。這可以在一定程度上緩解各個服務器上的負載不均衡的情況。但是,這樣的服務器分配方法也存在弊端。這是因為在玩家剛開始進行游戲的階段,往往大多數的玩家都集中在前面的游戲場景處而沒有進入到后續游戲場景中或者在一段時間后只有很少的游戲玩家進入到后續的場景中,這就造成了被分配創建先前幾個場景的服務器上的大量負載,而負責創建后面(特別是最后)游戲場景的服務器卻十分空閑。相應地,在玩家已經進行了相當長一段時間的游戲后,很可能大多數玩家都已經進入了后面的游戲場景,此時被分配了前面場景的游戲服務器的負載很小甚至沒有負載,而被分配了后面場景的服務器的負載變得越來越大。因此,這種方法不能很好地實現服務器的動態負載均衡。
【發明內容】
[0006]本發明提出了一種用于游戲服務器動態負載均衡的方法和設備,從而解決了由于上述原因和其他原因造成的游戲服務器動態負載不均衡的問題。
[0007]根據本發明的一方面,提供一種用于游戲服務器動態負載均衡的方法,包括:
[0008]確定游戲玩家是否將要進入到新的游戲場景;
[0009]響應于確定所述游戲玩家將要進入到所述新的游戲場景,檢測所述游戲服務器的負載情況;以及
[0010]基于所述檢測的結果,選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作。
[0011]根據本發明的方法,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括選擇所述負載相對較低的游戲服務器來創建所述新的游戲場景。
[0012]根據本發明的方法,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括將所述游戲玩家分配到已生成所述新的場景的負載相對較低的游戲服務器。
[0013]根據本發明的方法,還包括在游戲服務器上不存在其中游戲玩家進行游戲的游戲場景時,撤銷所述游戲場景。
[0014]根據本發明的方法,其中通過檢測所述游戲服務器的硬件運行參數來檢測所述游戲服務器的負載情況。
[0015]根據本發明的另一方面,提供一種用于游戲服務器動態負載均衡的設備,包括:
[0016]用于確定游戲玩家是否將要進入到新的游戲場景的裝置;
[0017]用于響應于確定所述游戲玩家將要進入到所述新的游戲場景,檢測所述游戲服務器的負載情況的裝置;以及
[0018]用于基于所述檢測的結果,選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作的裝置。
[0019]根據本發明的設備,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括選擇所述負載相對較低的游戲服務器來創建所述新的游戲場景。
[0020]根據本發明的設備,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括將所述游戲玩家分配到已生成所述新的場景的負載相對較低的游戲服務器。
[0021]根據本發明的設備,還包括用于在游戲服務器上不存在其中游戲玩家進行游戲的游戲場景時,撤銷所述游戲場景的裝置。
[0022]根據本發明的設備,其中通過檢測所述游戲服務器的硬件運行參數來檢測所述游戲服務器的負載情況。
【專利附圖】
【附圖說明】
[0023]通過參考附圖閱讀下文的詳細描述,本發明實施方式的上述以及其他目的、特征和優點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發明的若干實施方式,其中:
[0024]圖1是示出根據本發明的用于游戲服務器動態負載均衡的系統的框圖;
[0025]圖2示出了圖1中的控制單元I的結構示意圖;
[0026]圖3是示出了根據本發明的用于游戲服務器動態負載均衡的方法的流程圖;并且[0027]圖4示出了適于用來實踐本發明實施方式的計算機系統的示意性框圖。
[0028]在附圖中,相同或對應的標號表示相同或對應的部分。并且,附圖中示出的組件、部件、元件的數量僅用于舉例說明,而非限制。
【具體實施方式】
[0029]圖1是示出了根據本發明的用于游戲服務器的動態負載均衡的系統的框圖。所述系統包括控制單元1、游戲玩家數據庫2、游戲資源數據庫3和多個游戲服務器4-1、4-2,...,4-N,所述多個游戲服務器4-1、4-2,...,4-N可以是按照地域或其它方式進行劃分的以供多個游戲玩家登錄以進行游戲操作。所述控制單元I用于響應于游戲服務器4-1、4-2,...,4-N上的游戲玩家要求進入新的游戲場景的請求,檢測多個游戲服務器4-1、4-2,...,4-N的負載狀態,并且基于所檢測的負載狀態選擇負載較低的游戲服務器進行與新的場景相關的工作。如上所述,多個游戲玩家分布在所述多個游戲服務器上進行游戲操作,每個游戲玩家的資料和游戲數據(包括游戲進度數據等)被存儲在游戲玩家數據庫2中。用于產生諸如游戲地圖等的游戲場景的游戲資源被存儲在游戲資源數據庫3中。雖然在圖1中示出了將游戲資源存儲在游戲資源數據庫3中,但是在一些情況中,還可以將游戲資源分別存儲在每個游戲服務器上以便可以響應于生成游戲場景的請求而直接從每個游戲服務器上生成希望的游戲場景。
[0030]下面參照圖1詳細地描述本發明的技術方案的具體實現方式。如圖1中所示,多個游戲用戶被分布在多個游戲服務器上進行游戲操作。根據本發明的一種情況,在游戲剛開始時,控制單元I可以命令在游戲服務器4-1、4-2,...,4-N上都產生游戲的第一個場景,以便大量游戲玩家都可以進行第一場景的游戲。但是,由于各個游戲玩家與不同游戲服務器之間的連接速度上的差異和或者不同區域玩家用戶并不均等的原因,可能每個游戲服務器上的玩家的數量并不相等。為了更一步清楚地表示本發明的技術方案,現在假設這樣一種情況,其中在游戲服務器4-1上的玩家的數量最多,而在游戲服務器4-N上的玩家的數量最小。此時,隨著游戲的進程的不斷深入,有的玩家已經完成了第一場景的游戲,即將進入到下一個新的游戲場景以便繼續進行游戲。假設此時有位于游戲服務器4-1上的玩家I完成了第一場景的游戲并且要求進入新的場景。控制單元I檢測到來自游戲服務器I上的要求進入新場景的請求后,其分別檢測各個游戲服務器4-1、4-2,...,4-N的負載情況。如本領域的技術人員所公知的,可以通過檢測游戲服務器的硬件運行參數來得到游戲服務器的負載情況,所述硬件運行參數包括但不限于處理器的CPU的使用率、游戲服務器的內存占有量和游戲服務器的磁盤使用情況等。例如,對于處理器的CPU使用率而言,如果保持在60%以上,就是負載比較重的表現。而對于磁盤而言,如果使用量接近物理盤的理論速度的70%,負載就是比較高的。這里需要注意的是,本發明的控制單元I不僅檢測每個游戲服務器的負載情況,其還將各個游戲服務器的負載情況進行比較,以便找到負載相對較輕的游戲服務器。如在前面所述的,由于在游戲服務器4-N上的游戲玩家的數目最小,此時控制單元I可以決定在游戲服務器4-N上產生下一個新的游戲場景。此時,控制單元I可以將游戲資源數據庫3中的與創建新的游戲場景有關的資源(游戲地圖等數據)發送到游戲服務器4-N以便創建下一個新的游戲場景。在各個游戲服務器本地存儲游戲資源的情況下,控制單元可以簡單地向游戲服務器4-N發送創建下一個新的游戲場景的命令以便從游戲服務器4-N本地地創建所述新的游戲場景。在游戲服務器4-N上創建產生下一個新的游戲場景之后,控制單元I可以將玩家I的用戶資料數據從游戲玩家數據庫2發送到游戲服務器4-N,由此游戲玩家I將自動從游戲服務器I進入到產生了新的游戲場景的游戲服務器4-N以便繼續進行游戲。
[0031]上文介紹了一種相對簡單的情況。但是,在實際游戲中的情況可能要遠遠復雜的多。例如,在實際游戲中,可能每個游戲服務器上都存在處于不同游戲場景的多個游戲玩家。這樣,控制單元I在檢測到生成新的游戲場景的請求后,可以進行如下操作。首先,控制單元I將判斷所要求生成的新的游戲場景是否已經在游戲服務器上生成過,如果已經被生成過,則繼續判斷已經生成該新的游戲場景的游戲服務器的當前負載情況。如果已經生成該新的游戲場景的游戲服務器的當前負載相對較低,則控制單元將考慮將要求生成該新的游戲場景請求的用戶轉移到該已經生成了所述新的游戲場景的游戲服務器上繼續其游戲。相反,如果已經生成該新的游戲場景的游戲服務器的當前負載相對較高,則即使已經有游戲服務器生成了新的游戲場景,控制單元I也會考慮在其他負載較低的游戲服務器上生成所述新的游戲場景,以便使各個游戲服務器的負載達到均衡。
[0032]下面參照圖1描述根據本發明的另一實施例。在此實施例中,游戲服務器4-1上的所有游戲玩家都已經完成了第一場景內的游戲,并且都進入了隨后的游戲場景繼續進行其游戲。在這種情況下,當控制單元I檢測到已經沒有玩家在游戲服務器I上進行第一場景內的游戲時,其可以撤銷游戲服務器I上的第一場景以便釋放服務器資源,由此可以在檢測到產生新游戲場景的請求后,優先考慮在釋放了服務器資源的游戲服務器上生成新的游戲場景以便達到游戲服務器之間的負載均衡。雖然上文描述了在一個游戲服務器上撤銷游戲場景的情況,但是本領域的技術人員也能容易地想到這也適用于多個服務器的情況。例如,如果控制單元I檢測到在多個服務服務器上同時存在沒有玩家在其中進行游戲的場景,則其可以相應地撤銷多個游戲服務器上的不存在游戲玩家的游戲場景,以便為多個游戲服務器釋放相應的服務器資源。
[0033]參考圖2,其示出了根據圖1的控制單元I的內部結構圖。圖1的控制單元I包括場景生成響應單元11,其接收來自游戲服務器4-1、4-2,...,4-N的生成新的游戲場景的請求;控制單元I還包括負載狀態檢測單元12,其響應于由場景生成響應單元11接收到的生成新的游戲場景的請求,通過例如檢測游戲服務器4-1、4-2,...,4-N的硬件運行參數來確定各個游戲服務器4-1、4-2,...,4-N的負載情況。雖然在這里表示了通過檢測游戲服務器4-1、4-2,...,4-N的硬件運行參數來確定各個游戲服務器4-1、4-2,...,4_N的負載情況,但是正如本領域的技術人員所公知的,本發明不限于此方法。還有其他的檢測游戲服務器的負載情況的方法,比如根據服務器的在線玩家數量來檢測游戲服務器的負載情況,此類方法雖然簡單,但在實踐當中卻能起到很好的效果。此外,控制單元I還包括場景生成確定單元13,其基于負載狀態檢測單元12提供的各個游戲服務器4-1、4-2,...,4-N的負載情況,選擇負載相對較低的游戲服務器來執行與新的游戲場景相關的處理工作,以便達到負載均衡。雖然在圖2中示出的控制單元I僅僅包括場景生成響應單元11、負載狀態檢測單元12和場景生成確定單元13,但是本領域的應該知道本發明的控制單元I還可以根據需要包括任何其他部件,此處不再詳述。
[0034]圖3示出了根據本發明的用于游戲服務器動態負載均衡的方法的流程圖。在步驟301處,方法開始;在步驟302處,確定游戲玩家是否將要進入到新的游戲場景;在步驟303處,響應于確定所述游戲玩家將要進入到所述新的游戲場景,檢測所述游戲服務器的負載情況;在步驟304處,基于所述檢測的結果,選擇負載相對較低的游戲服務器進行與所述新的游戲場景相關的工作,以及在步驟305處,方法結束。
[0035]下面,將參考圖4來描述可以實現本發明的計算機設備。圖4示意性示出了可以實現根據本發明的實施方式的計算機設備的結構方框圖。
[0036]圖4中所示的計算機系統包括CPU(中央處理單元)401、RAM(隨機存取存儲器)402、ROM(只讀存儲器)403、系統總線404、硬盤控制器405、鍵盤控制器406、串行接口控制器407、并行接口控制器408、顯示器控制器409、硬盤410、鍵盤411、串行外部設備412、并行外部設備413和顯示器414。在這些部件中,與系統總線404相連的有CPU401、RAM402、R0M403、硬盤控制器405、鍵盤控制器406、串行接口控制器407、并行接口控制器408和顯示器控制器409。硬盤410與硬盤控制器405相連,鍵盤411與鍵盤控制器406相連,串行外部設備412與串行接口控制器407相連,并行外部設備413與并行接口控制器408相連,以及顯示器414與顯示器控制器409相連。
[0037]圖4所述的結構方框圖僅僅為了示例的目的而示出的,并非是對本發明的限制。在一些情況下,可以根據需要添加或者減少其中的一些設備。
[0038]此外,本發明的實施方式可以以軟件、硬件或者軟件和硬件的結合來實現。硬件部分可以利用專用邏輯來實現;軟件部分可以存儲在存儲器中,由適當的指令執行系統,例如微處理器或者專用設計硬件來執行。本領域的普通技術人員可以理解上述的方法和系統可以使用計算機可執行指令和/或包含在處理器控制代碼中來實現,例如在諸如磁盤、CD或DVD-ROM的載體介質、諸如只讀存儲器(固件)的可編程的存儲器或者諸如光學或電子信號載體的數據載體上提供了這樣的代碼。本實施例的系統及其組件可以由諸如超大規模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導體、或者諸如現場可編程門陣列、可編程邏輯設備等的可編程硬件設備的硬件電路實現,也可以用由各種類型的處理器執行的軟件實現,也可以由上述硬件電路和軟件的結合例如固件來實現。
[0039]已經參照上述實施例對本發明進行了描述。但是應該注意的是本文所討論的實施方式用于例示本發明。由于本發明的這些實施方式是參考例示來描述的,所以,對所述的方法和/或具體結構的各種修改和調整對于本領域技術人員是顯而易見的。依賴于本發明的教導的、以及被這些教導用來推進本領域技術的所有這種修改、改造或變化都被認為是落在本發明的精神和范圍中。因此,不應當將這些描述和附圖看作是限制性的,這是因為可以理解本發明不以任何方式僅限于所示的實施方式。
【權利要求】
1.一種用于游戲服務器動態負載均衡的方法,包括: 確定游戲玩家是否將要進入到新的游戲場景; 響應于確定所述游戲玩家將要進入到所述新的游戲場景,檢測所述游戲服務器的負載情況;以及 基于所述檢測的結果,選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作。
2.如權利要求1所述的方法,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括選擇所述負載相對較低的游戲服務器來創建所述新的游戲場景。
3.如權利要求1所述的方法,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括將所述游戲玩家分配到已生成所述新的場景的負載相對較低的游戲服務器。
4.如權利要求1所述的方法,還包括在游戲服務器上不存在其中游戲玩家進行游戲的游戲場景時,撤銷所述游戲場景。
5.如權利要求1所述的方法,其中通過檢測所述游戲服務器的硬件運行參數來檢測所述游戲服務器的負載情況。
6.一種用于游戲服務器動態負載均衡的設備,包括: 用于確定游戲玩家是否將要進入到新的游戲場景的裝置; 用于響應于確定所述游戲玩家將要進入到所述新的游戲場景,檢測所述游戲服務器的負載情況的裝置;以及 用于基于所述檢測的結果,選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作的裝置。
7.如權利要求6所述的設備,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括選擇所述負載相對較低的游戲服務器來創建所述新的游戲場景。
8.如權利要求6所述的設備,其中選擇負載相對較低的游戲服務器來執行與所述新的游戲場景相關的處理工作包括將所述游戲玩家分配到已生成所述新的場景的負載相對較低的游戲服務器。
9.如權利要求6所述的設備,還包括用于在游戲服務器上不存在其中游戲玩家進行游戲的游戲場景時,撤銷所述游戲場景的裝置。
10.如權利要求6所述的設備,其中通過檢測所述游戲服務器的硬件運行參數來檢測所述游戲服務器的負載情況。
【文檔編號】H04L29/08GK103546524SQ201210256393
【公開日】2014年1月29日 申請日期:2012年7月17日 優先權日:2012年7月17日
【發明者】孫政 申請人:人人游戲網絡科技發展(上海)有限公司