亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

服務(wù)器場(chǎng)景管理方法與流程

文檔序號(hào):12376623閱讀:439來源:國知局
服務(wù)器場(chǎng)景管理方法與流程

本發(fā)明屬于場(chǎng)景管理技術(shù)領(lǐng)域,具體涉及一種服務(wù)器場(chǎng)景管理方法。



背景技術(shù):

目前,游戲服務(wù)器場(chǎng)景管理方法,主要為單進(jìn)程場(chǎng)景管理方法,即:采用單個(gè)場(chǎng)景進(jìn)程同時(shí)維護(hù)多個(gè)場(chǎng)景實(shí)體。該種方法雖然具有實(shí)現(xiàn)簡單、操作邏輯簡單的優(yōu)點(diǎn);但是,當(dāng)單個(gè)場(chǎng)景人數(shù)達(dá)到一定數(shù)量,通常是100到200的同屏數(shù)量時(shí),游戲服務(wù)器承載壓力急劇上升,服務(wù)器的cpu以及網(wǎng)絡(luò)io將無法承擔(dān);此外,當(dāng)場(chǎng)景總體數(shù)量達(dá)到一個(gè)量級(jí)后,單個(gè)場(chǎng)景進(jìn)程也會(huì)成為服務(wù)器性能瓶頸,從而嚴(yán)重降低了玩家加入場(chǎng)景的速度,最終影響玩家游戲體驗(yàn)。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種服務(wù)器場(chǎng)景管理方法,可有效解決上述問題。

本發(fā)明采用的技術(shù)方案如下:

本發(fā)明提供一種服務(wù)器場(chǎng)景管理方法,包括以下步驟:

S1,場(chǎng)景管理器建立并維護(hù)場(chǎng)景映射表;其中,所述場(chǎng)景映射表用于存儲(chǔ)場(chǎng)景ID以及該場(chǎng)景當(dāng)前存在的各個(gè)場(chǎng)景實(shí)體屬性的對(duì)應(yīng)關(guān)系;所述場(chǎng)景實(shí)體屬性包括:場(chǎng)景實(shí)體標(biāo)簽、場(chǎng)景實(shí)體當(dāng)前容納的玩家數(shù)量以及該場(chǎng)景實(shí)體所歸屬的場(chǎng)景ID;

預(yù)建立并維護(hù)多進(jìn)程場(chǎng)景集群;所述多進(jìn)程場(chǎng)景集群包括1個(gè)場(chǎng)景管理進(jìn)程和多個(gè)場(chǎng)景進(jìn)程;所述場(chǎng)景管理器運(yùn)行于所述場(chǎng)景管理進(jìn)程中;

其中,所述場(chǎng)景管理進(jìn)程,用于維護(hù)場(chǎng)景進(jìn)程映射表;所述場(chǎng)景進(jìn)程映射表用于維護(hù)各個(gè)場(chǎng)景進(jìn)程的負(fù)載情況,具體用于維護(hù)場(chǎng)景進(jìn)程ID和該場(chǎng)景進(jìn)程當(dāng)前在線玩家數(shù)量的對(duì)應(yīng)關(guān)系;

每個(gè)所述場(chǎng)景進(jìn)程維護(hù)著一個(gè)場(chǎng)景實(shí)體列表;其中,所述場(chǎng)景實(shí)體列表用于維護(hù)多個(gè)場(chǎng)景實(shí)體,所述場(chǎng)景實(shí)體包括:場(chǎng)景實(shí)體標(biāo)簽、該場(chǎng)景實(shí)體所屬的場(chǎng)景ID、該場(chǎng)景實(shí)體當(dāng)前在線玩家數(shù)量以及該場(chǎng)景實(shí)體當(dāng)前在線玩家列表;

S2,當(dāng)所述場(chǎng)景管理器接收到玩家進(jìn)入目標(biāo)場(chǎng)景的請(qǐng)求時(shí),其中,該請(qǐng)求中攜帶有目標(biāo)場(chǎng)景ID;

所述場(chǎng)景管理器以所述目標(biāo)場(chǎng)景ID為關(guān)鍵詞,查找所述場(chǎng)景映射表,查找到該目標(biāo)場(chǎng)景當(dāng)前容納的各個(gè)場(chǎng)景實(shí)體,并在所查找到的各個(gè)場(chǎng)景實(shí)體中,獲得當(dāng)前負(fù)載最輕的特定場(chǎng)景實(shí)體;然后,所述場(chǎng)景管理器進(jìn)一步判斷所述特定場(chǎng)景實(shí)體當(dāng)前所容納的玩家數(shù)量是否超過最大值,如果超過,則執(zhí)行S3;如果未超過,則執(zhí)行S4;

S3,所述場(chǎng)景管理器自動(dòng)進(jìn)行分線處理,即:

S3.1,所述場(chǎng)景管理器查找所述場(chǎng)景進(jìn)程映射表,得到當(dāng)前負(fù)載最輕的特定場(chǎng)景進(jìn)程ID;

S3.2,所述場(chǎng)景管理器在所述特定場(chǎng)景進(jìn)程中新建一個(gè)新場(chǎng)景實(shí)體,初始時(shí),所述新場(chǎng)景實(shí)體的當(dāng)前在線玩家數(shù)量為0;然后,將所述玩家放置于所述新場(chǎng)景實(shí)體中,并將所述新場(chǎng)景實(shí)體當(dāng)前在線玩家數(shù)量更新為1;

此外,所述場(chǎng)景管理器更新場(chǎng)景進(jìn)程映射表,將所述場(chǎng)景進(jìn)程映射表中,該特定場(chǎng)景進(jìn)程當(dāng)前在線玩家數(shù)量增加1;

此外,所述場(chǎng)景管理器更新S2查找到的所述場(chǎng)景映射表,向所述場(chǎng)景映射表中增加所述新場(chǎng)景實(shí)體,并將所述新場(chǎng)景實(shí)體所對(duì)應(yīng)的當(dāng)前容納的玩家數(shù)量增加1;

S4,所述場(chǎng)景管理器以所述特定場(chǎng)景實(shí)體的標(biāo)簽為查找關(guān)鍵詞,查找所述多進(jìn)程場(chǎng)景集群,得到所述特定場(chǎng)景實(shí)體所歸屬的特定場(chǎng)景進(jìn)程;一方面,在所述特定場(chǎng)景進(jìn)程所綁定的所述特定場(chǎng)景實(shí)體中,更新所述場(chǎng)景實(shí)體列表,將所述特定場(chǎng)景實(shí)體的當(dāng)前在線玩家數(shù)量增加1,從而將玩家加入到所述特定場(chǎng)景實(shí)體;另一方面,所述場(chǎng)景管理器更新所述場(chǎng)景進(jìn)程映射表,將所述場(chǎng)景進(jìn)程映射表中,該特定場(chǎng)景進(jìn)程當(dāng)前在線玩家數(shù)量增加1;再一方面,所述場(chǎng)景管理器更新所述場(chǎng)景映射表,將所述目標(biāo)場(chǎng)景所包含的所述特定場(chǎng)景實(shí)體的當(dāng)前所容納的玩家數(shù)量增加1。

優(yōu)選的,所述場(chǎng)景進(jìn)程映射表采用以場(chǎng)景進(jìn)程ID為哈希索引。

本發(fā)明提供的服務(wù)器場(chǎng)景管理方法具有以下優(yōu)點(diǎn):

采用多場(chǎng)景進(jìn)程部署架構(gòu),通過多個(gè)無差別的場(chǎng)景進(jìn)程,維護(hù)場(chǎng)景實(shí)體的運(yùn)行,從而提高場(chǎng)景實(shí)體的維護(hù)效率,最終增強(qiáng)玩家游戲體驗(yàn)。

附圖說明

圖1為本發(fā)明提供的場(chǎng)景管理器所建立的場(chǎng)景映射表的具體示例;

圖2為本發(fā)明提供的多進(jìn)程場(chǎng)景集群的示意圖;

圖3為本發(fā)明提供的場(chǎng)景管理進(jìn)程和場(chǎng)景進(jìn)程的布署示意圖。

具體實(shí)施方式

以下結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說明:

本發(fā)明提供一種服務(wù)器場(chǎng)景管理方法,包括以下步驟:

S1,場(chǎng)景管理器建立并維護(hù)場(chǎng)景映射表;其中,所述場(chǎng)景映射表用于存儲(chǔ)場(chǎng)景ID以及該場(chǎng)景當(dāng)前存在的各個(gè)場(chǎng)景實(shí)體屬性的對(duì)應(yīng)關(guān)系;所述場(chǎng)景實(shí)體屬性包括:場(chǎng)景實(shí)體標(biāo)簽、場(chǎng)景實(shí)體當(dāng)前容納的玩家數(shù)量以及該場(chǎng)景實(shí)體所歸屬的場(chǎng)景ID;如圖1所示,為場(chǎng)景管理器所建立的場(chǎng)景映射表的具體示例。

預(yù)建立并維護(hù)多進(jìn)程場(chǎng)景集群;如圖2所示,為多進(jìn)程場(chǎng)景集群的示意圖;所述多進(jìn)程場(chǎng)景集群包括1個(gè)場(chǎng)景管理進(jìn)程和多個(gè)場(chǎng)景進(jìn)程;所述場(chǎng)景管理器運(yùn)行于所述場(chǎng)景管理進(jìn)程中;

具體的,場(chǎng)景管理進(jìn)程管理著所有的場(chǎng)景進(jìn)程,場(chǎng)景管理進(jìn)程只存在一個(gè),場(chǎng)景進(jìn)程可以有1或多個(gè),并且可以動(dòng)態(tài)添加、刪除。場(chǎng)景管理進(jìn)程和所有的場(chǎng)景進(jìn)程可以獨(dú)立部署,也可以部署在同一個(gè)物理機(jī)中,場(chǎng)景管理進(jìn)程和所有的場(chǎng)景進(jìn)程只需要與中轉(zhuǎn)路由保持一個(gè)tcp的鏈接即可。所有場(chǎng)景進(jìn)程與場(chǎng)景管理進(jìn)程保持高頻率的心跳響應(yīng),當(dāng)新加或減少的場(chǎng)景進(jìn)程在場(chǎng)景管理進(jìn)程中監(jiān)測(cè)到時(shí),則由場(chǎng)景管理進(jìn)程進(jìn)行容災(zāi)管理,動(dòng)態(tài)添加或減少場(chǎng)景節(jié)點(diǎn),之后的場(chǎng)景請(qǐng)求則自動(dòng)適配新的場(chǎng)景分配方案上。

此外,參考圖3,為場(chǎng)景管理進(jìn)程和場(chǎng)景進(jìn)程的布署示意圖;所述場(chǎng)景管理進(jìn)程,用于維護(hù)場(chǎng)景進(jìn)程映射表;所述場(chǎng)景進(jìn)程映射表用于維護(hù)各個(gè)場(chǎng)景進(jìn)程的負(fù)載情況,具體用于維護(hù)場(chǎng)景進(jìn)程ID和該場(chǎng)景進(jìn)程當(dāng)前在線玩家數(shù)量的對(duì)應(yīng)關(guān)系;

具體實(shí)現(xiàn)上,場(chǎng)景進(jìn)程映射表可以以場(chǎng)景進(jìn)程ID為哈希索引,每個(gè)哈希節(jié) 點(diǎn)保存的元素有:場(chǎng)景進(jìn)程id(proc_id)、玩家數(shù)量count,即對(duì)應(yīng)場(chǎng)景進(jìn)程負(fù)載值。

對(duì)場(chǎng)景進(jìn)程映射表維護(hù)的過程為:當(dāng)有玩家進(jìn)入某個(gè)場(chǎng)景的某個(gè)場(chǎng)景實(shí)體時(shí),在該場(chǎng)景實(shí)體所在的場(chǎng)景進(jìn)程的玩家數(shù)量上增加一個(gè)單位的負(fù)載值;當(dāng)需要新建一個(gè)場(chǎng)景實(shí)體時(shí),則查找每個(gè)哈希節(jié)點(diǎn),找出負(fù)載值最低的場(chǎng)景進(jìn)程,將場(chǎng)景實(shí)體分配到該場(chǎng)景進(jìn)程上。

場(chǎng)景進(jìn)程是指:所有的場(chǎng)景實(shí)體部署到其中一個(gè)場(chǎng)景進(jìn)程中,所有場(chǎng)景進(jìn)程無差別,均衡分配所有場(chǎng)景實(shí)體。每個(gè)所述場(chǎng)景進(jìn)程維護(hù)著一個(gè)場(chǎng)景實(shí)體列表;其中,所述場(chǎng)景實(shí)體列表用于維護(hù)多個(gè)場(chǎng)景實(shí)體,所述場(chǎng)景實(shí)體包括:場(chǎng)景實(shí)體標(biāo)簽、該場(chǎng)景實(shí)體所屬的場(chǎng)景ID、該場(chǎng)景實(shí)體當(dāng)前在線玩家數(shù)量以及該場(chǎng)景實(shí)體當(dāng)前在線玩家列表;

因此,當(dāng)新建場(chǎng)景實(shí)體綁定到該場(chǎng)景進(jìn)程時(shí),則在場(chǎng)景實(shí)體列表中添加一個(gè)場(chǎng)景節(jié)點(diǎn)所綁定的場(chǎng)景實(shí)體,玩家進(jìn)入場(chǎng)景時(shí),通過場(chǎng)景實(shí)體標(biāo)簽找到相應(yīng)的場(chǎng)景實(shí)體,將玩家添加到該場(chǎng)景實(shí)體所記錄的玩家列表中,玩家人數(shù)增加1;而當(dāng)監(jiān)測(cè)到某個(gè)玩家離開場(chǎng)景時(shí),將玩家從對(duì)應(yīng)的場(chǎng)景實(shí)體的玩家列表中移除,玩家人數(shù)減少1。

也就是說,根據(jù)玩家進(jìn)入或離開某個(gè)場(chǎng)景實(shí)體的情況,實(shí)時(shí)更新場(chǎng)景實(shí)體列表。

S2,當(dāng)所述場(chǎng)景管理器接收到玩家進(jìn)入目標(biāo)場(chǎng)景的請(qǐng)求時(shí),其中,該請(qǐng)求中攜帶有目標(biāo)場(chǎng)景ID;

所述場(chǎng)景管理器以所述目標(biāo)場(chǎng)景ID為關(guān)鍵詞,查找所述場(chǎng)景映射表,查找到該目標(biāo)場(chǎng)景當(dāng)前容納的各個(gè)場(chǎng)景實(shí)體,并在所查找到的各個(gè)場(chǎng)景實(shí)體中,獲得當(dāng)前負(fù)載最輕的特定場(chǎng)景實(shí)體;然后,所述場(chǎng)景管理器進(jìn)一步判斷所述特定場(chǎng)景實(shí)體當(dāng)前所容納的玩家數(shù)量是否超過最大值,如果超過,則執(zhí)行S3;如果未超過,則執(zhí)行S4;

例如,參考圖1,假設(shè)目標(biāo)場(chǎng)景ID為場(chǎng)景1,則:場(chǎng)景管理器查找到場(chǎng)景1所包含的各個(gè)場(chǎng)景實(shí)體,并獲得當(dāng)前負(fù)載最輕的特定場(chǎng)景實(shí)體。

S3,所述場(chǎng)景管理器自動(dòng)進(jìn)行分線處理,即:

S3.1,所述場(chǎng)景管理器查找所述場(chǎng)景進(jìn)程映射表,得到當(dāng)前負(fù)載最輕的特定場(chǎng)景進(jìn)程ID;

S3.2,所述場(chǎng)景管理器在所述特定場(chǎng)景進(jìn)程中新建一個(gè)新場(chǎng)景實(shí)體,初始時(shí),所述新場(chǎng)景實(shí)體的當(dāng)前在線玩家數(shù)量為0;然后,將所述玩家放置于所述新場(chǎng)景實(shí)體中,并將所述新場(chǎng)景實(shí)體當(dāng)前在線玩家數(shù)量更新為1;

此外,所述場(chǎng)景管理器更新場(chǎng)景進(jìn)程映射表,將所述場(chǎng)景進(jìn)程映射表中,該特定場(chǎng)景進(jìn)程當(dāng)前在線玩家數(shù)量增加1;

此外,所述場(chǎng)景管理器更新S2查找到的所述場(chǎng)景映射表,向所述場(chǎng)景映射表中增加所述新場(chǎng)景實(shí)體,并將所述新場(chǎng)景實(shí)體所對(duì)應(yīng)的當(dāng)前容納的玩家數(shù)量增加1;

S4,所述場(chǎng)景管理器以所述特定場(chǎng)景實(shí)體的標(biāo)簽為查找關(guān)鍵詞,查找所述多進(jìn)程場(chǎng)景集群,得到所述特定場(chǎng)景實(shí)體所歸屬的特定場(chǎng)景進(jìn)程;一方面,在所述特定場(chǎng)景進(jìn)程所綁定的所述特定場(chǎng)景實(shí)體中,更新所述場(chǎng)景實(shí)體列表,將所述特定場(chǎng)景實(shí)體的當(dāng)前在線玩家數(shù)量增加1,從而將玩家加入到所述特定場(chǎng)景實(shí)體;另一方面,所述場(chǎng)景管理器更新所述場(chǎng)景進(jìn)程映射表,將所述場(chǎng)景進(jìn)程映射表中,該特定場(chǎng)景進(jìn)程當(dāng)前在線玩家數(shù)量增加1;再一方面,所述場(chǎng)景管理器更新所述場(chǎng)景映射表,將所述目標(biāo)場(chǎng)景所包含的所述特定場(chǎng)景實(shí)體的當(dāng)前所容納的玩家數(shù)量增加1。

上述過程的大致思路為:

每次有角色進(jìn)入場(chǎng)景時(shí),通過場(chǎng)景進(jìn)程映射表查找場(chǎng)景id相對(duì)應(yīng)的場(chǎng)景實(shí)體列表,根據(jù)場(chǎng)景實(shí)體列表中各個(gè)場(chǎng)景實(shí)體的負(fù)載情況,查找人數(shù)最少的一個(gè)場(chǎng)景實(shí)體,然后根據(jù)相應(yīng)的場(chǎng)景實(shí)體標(biāo)簽查找到布署于場(chǎng)景進(jìn)程的對(duì)應(yīng)的場(chǎng)景實(shí)體,將玩家放置于該場(chǎng)景實(shí)體中,并將場(chǎng)景實(shí)體中的玩家數(shù)量加1。

對(duì)于單個(gè)場(chǎng)景實(shí)體中,當(dāng)容納的人數(shù)達(dá)到一定數(shù)量后,為避免單場(chǎng)景的性能熱點(diǎn)造成瓶頸,場(chǎng)景管理器會(huì)自動(dòng)進(jìn)行分線。每次查找到人數(shù)最少的場(chǎng)景實(shí)體后,判斷場(chǎng)景實(shí)體所容易的當(dāng)前玩家數(shù)量是否大于最大值,如果大于,則新建場(chǎng)景節(jié)點(diǎn)和場(chǎng)景實(shí)體,并互相綁定,初始人數(shù)為0,并執(zhí)行正常的角色場(chǎng)景進(jìn)入流程,最終將人數(shù)加1。

游戲內(nèi)單人場(chǎng)景與普通場(chǎng)景一樣,具有場(chǎng)景id和場(chǎng)景實(shí)體tag,但每個(gè)玩家的場(chǎng)景實(shí)體都獨(dú)立并且私有,場(chǎng)景id可能一樣,但場(chǎng)景實(shí)體tag都不一樣。

由此可見,本發(fā)明提供的服務(wù)器場(chǎng)景管理方法,具有以下優(yōu)點(diǎn):

采用多場(chǎng)景進(jìn)程部署架構(gòu),通過多個(gè)無差別的場(chǎng)景進(jìn)程,維護(hù)場(chǎng)景實(shí)體的運(yùn)行,從而提高場(chǎng)景實(shí)體的維護(hù)效率,最終增強(qiáng)玩家游戲體驗(yàn)。

采用場(chǎng)景管理器均衡場(chǎng)景性能,當(dāng)場(chǎng)景實(shí)體所容納的玩家數(shù)量超過最大值時(shí),采用自動(dòng)場(chǎng)景分線管理方案,既平衡場(chǎng)景進(jìn)程壓力,又提高場(chǎng)景管理效率,加快玩家進(jìn)入到某個(gè)場(chǎng)景實(shí)體的效率。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1