国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺談滾服游戲如果實現一鍵合服

UnixAgain / 579人閱讀

摘要:而滾服游戲則一般會設計游戲在線上限,比如,達到上限則新開一組服務器,并引導用戶進入新區。這就導致了新服一開,玩家即蜂擁而至,爭先恐后練級升裝備,以求最快速進入排行榜前列,如果努力一番發現落后了,可能就只能坐等下一個新服。

原文地址-石匠的Blog:http://www.bugclosed.com/post/12

背景

近幾年的游戲行業中,出現了各種各樣的滾服游戲,包括頁游,手游,H5游戲等等。滾服游戲和大服游戲的區別在于同時游戲人數,大服游戲是有很多用戶在一起玩,甚至幾十上百萬玩家。而滾服游戲則一般會設計游戲在線上限,比如3000,達到上限則新開一組服務器,并引導用戶進入新區。

滾服模式是游戲類型,技術架構和急功近利的坑錢策略等因素共同決定的,大服游戲包括絕大部分端游,以及類COC這樣類型的游戲。另外,雖然像英雄聯盟,王者榮耀這樣的游戲也分服架構,但是這個并不是我理解中的“滾服游戲“,首先他們雖然分服,但是每個服的人數上限也是可以高達幾十萬,他們并不會發生頻繁的合服情況。而滾服游戲更多是通過游戲策略設計,鼓勵玩家花錢走捷徑透支游戲生命周期,甚至幾天即可獨霸一個服務器。從而導致其他玩家望塵莫及,即使是花錢追也性價比極低,還不如進入一個新服重新開始。這就導致了新服一開,玩家即蜂擁而至,爭先恐后練級升裝備,以求最快速進入排行榜前列,如果努力一番發現落后了,可能就只能坐等下一個新服。這也導致了新服人數火爆,老服慢慢變成人煙凋零的村服,甚至沒人的死服。 為了能夠節約服務器帶寬資源,同時讓少數剩余的玩家能夠玩得起來,就必須要要進行頻繁的合服,把若干個互不相干的服務器玩家,合并到一個服里面;這樣又開啟一波玩家競爭和收割。

合服

前面提到滾服和大服兩種模式,不管是哪種模式,合服的是時候,是需要將多個服的游戲數據合并在一起。不論數據庫采用的是mysql,redis或者mongodb,數據庫表的合并都是需要做到多服數據合并后的相容問題,不發生沖突或者遺漏。比如mysql,需要保證各個表合并時主鍵不沖突,如果業務有昵稱不重復的設定,還需要保證昵稱不重復。有時候合并還需要刪除僵尸數據,此時需要注意刪除的數據之間的邏輯關系是否一并清除,不能導致數據不一致,比如清除了一個半年不上線的玩家賬號數據,但是在好友或者幫派中還殘留關系。

單服架構

業務模式在一定程度上會決定技術的選型,在滾服模式里面,游戲的在線人數要求都比較低,通常一個單進程架構就足以支持。所謂單服架構,并不一定整個后臺只有一個服務器進程,可能會有其他輔助進程,但是主游戲邏輯只會有一個進程,同時架構也不支持游戲進程伸縮,達到該進程或者物理服務器上限,即從運營上重新開服,引導新的玩家進入新區,單服架構可以簡單理解為如下架構模式:

從圖中可見,每組服務器有自己獨立的游戲進程和數據庫,不同服務器之間的用戶是物理隔離的。該架構的優勢是簡單易開發,服務器獨立隔離,某組服務器需要停服調整或者宕機,不會影響其他服。缺點也來自單服獨立部署,每次開新服都要重新部署數據庫和游戲服務整套環境。合服的時候需要進行數據庫的物理合并和遷移。

單服架構下的合服,需要進行物理數據庫表的硬合并,需要注意主鍵字段是否沖突??梢酝ㄟ^兩種方法防止主鍵沖突:

合服的時候對所有主鍵進行修改,特別是uid,保證他們來自不同空間。

在設計之初即考慮合服的問題,從而數據在分配唯一uid的時候,即可為每個服進行分段處理,保證從一開始各個服的主鍵uid即不會沖突。

合服的步驟和操作一般都比較固定,成熟后可以針對自己特定的業務模式和表結構寫腳本統一處理。

大服架構

大服架構區別于單服架構是可以承載更多在線玩家,同時還有一定的伸縮性,一定程度上可以通過不斷部署新服務器來擴充在線容量。在滾服模式的游戲中,也可以采用大服的設計思路和架構,從而在運維管理和合服方面得到極大便利,架構示意如下:

當然,該示意圖和端游的分布式架構圖有相似之處,但是也有所區別,因為此處的業務場景是用在滾服游戲中。該架構是一個原理說明示意,并非是線上運營架構,不同開發者會有不同的具體思路和設計偏好,比如還有類似好友,工會等并未列出,此處僅進行原理說明分析。
從圖中可以看出,有多個不同的角色,說明如下:

數據庫,整個架構下只有唯一的DB,所有數據都集中保存;

DBServer,所有對數據庫的操作都是通過DBServer進行,確保業務邏輯對數據庫設計細節的分離;

Account/Name,對用戶ID或者昵稱的唯一性做保證,這個服務是全大區唯一;

GameServer,游戲邏輯服務,此處每個GameServer即是一個邏輯服,通過不斷部署新的GameSever即實現了開服;

Login,登錄邏輯和選路分配,此處是一鍵合服的關鍵所在,在合服策略配置里面保存了哪個服分配的哪個GameServer游戲進程地址,只需要通過調整這個策略配置即可控制用戶進入的GameServer進程;

大服架構用戶登錄流程:

用戶在客戶端能登陸界面選擇3服的入口,并點擊進入游戲。

Login模塊收到用戶進入s3的請求,從合服策略配置中查詢到s3的GameServer入口地址,返回。

客戶端收到s3的GameServer地址,直接發起到s3的鏈接請求。

GameServer3 處理登錄請求,并從DBServer獲取用戶信息返回給用戶,沒有信息則創建新角色。

登錄完成,進入了s3服。

和單服架構的合服區別

單服架構的合服,之所以要進行數據處理和遷移,主要是2個原因:

各個服數據庫處于分離狀態,需要物理合并到一起

主鍵唯一ID等信息有沖突,需要數據庫修復處理

因為這2個原因,導致單服合服需要做大量的數據處理,導出,拷貝,遷移等,加大了合服操作的流程復雜度和出錯的可能。從大服架構圖可以發現,單服架構的2個合服難處已經自然消除了。Account分配唯一ID,在DB里面存儲自然不會沖突;而且數據本來就放在一個庫里面的,不存在需要遷移的問題。

一鍵合服

通過以上分解可以發現,現在合服會極其方便;不用修改和遷移數據,甚至都不用停服,只需要通過一個工具在合服策略配置庫里面對選路信息進行修改,修改用戶的登錄的游戲服務器。比如提供一個web修改頁面,選擇s1,s2,s3服合并,默認合并后由gameserver1提供服務,gameserver2和gameserver3即可停止下架,只需要一個http請求,將s2,s3的gameserver地址修改成gameserver1,即實現了合并。
合服后用戶登錄流程:

用戶還是選擇3服的入口登錄游戲。

Login模塊得到用戶要進入s3服,查詢合服策略配置,得到s3服的服務地址,即gamesrver1,返回。

用戶得到gameserver1的地址,發起鏈接請求,進行登錄。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61985.html

相關文章

  • 云計算的那些事--談一談IAAS

    摘要:對于商業市場來說,特別是中國這樣一個云計算才剛剛起步的市場。反觀云計算售賣的一些商品,目前主要還是以服務器為主。云計算的本質是將計算能力轉化為標準化,可售賣的服務??梢哉f是云計算實踐的一個經典案例。有的人會問,云計算廠商需要提供哪些服務。 2015年伊始,國內云計算市場可謂風起云涌。各路群豪紛紛涌入這個市場。其中最活躍的領域當屬IAAS。阿里騰訊硝煙未盡,百度重新檢討了自己的PAAS戰略后,...

    KitorinZero 評論0 收藏0
  • 基于Redis游戲中的實時排行榜實現

    摘要:年月日前言前段時間剛為項目手游實現了一個實時排行榜功能主要特性實時全服排名可查詢單個玩家排名支持雙維排序數據量不大大致在區間開服合服會導致單個服角色數越來越多排行榜分類按照排行主體類型劃分主要分為角色軍團公會坦克該項目是個坦克手游大致情況 [TOC] Last-Modified: 2019年6月4日18:18:37 1. 前言 前段時間剛為項目(手游)實現了一個實時排行榜功能, 主要特...

    wangym 評論0 收藏0
  • 7月份前端資源分享

    摘要:更多資源請文章轉自月份前端資源分享的作用數組元素隨機化排序算法實現學習筆記數組隨機排序個變態題解析上個變態題解析下中的數字前端開發筆記本過目不忘正則表達式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛入門的前端工程師的前后端交互指南物聯網世界的 更多資源請Star:https://github.com/maidishike... 文章轉自:https://github.com/jsfr...

    pingan8787 評論0 收藏0

發表評論

0條評論

UnixAgain

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<