1樓:尹朶月
<>需求:擴容和容災在全區分線模型下,遊戲玩家可以隨便選擇任何乙個伺服器登入,自己的帳號資料都可以提取出來玩。這種顯然比每或嫌個伺服器重新「練」乙個號要省事的多。
而且這樣也可以和朋友們約定去乙個負載較低的伺服器一起玩,而不用苦苦等待某乙個特定的伺服器變得空閒。然而,這些好處所需要付出的代價,是在儲存層的分散式設計。這種設計有乙個最需要解決的問題,就是遊戲伺服器系統的擴容和容災。
從模型上說,擴容是加入新的伺服器,容災是減掉失效的伺服器。這兩個操作在無狀態的伺服器程序上操作,都只是更新一下連線配置表,然後重啟一下即可。但是,由於遊戲存在大量的狀態,包括執行時記憶體中的狀態,以及持久化的儲存狀態,這就讓擴容和容災需要更多的處理才能成功。
最普通的情況下,在擴容和容災的時候,首先需要通知所有玩家下線,把記憶體中的狀態資料寫入持久化資料程序;然後根據需要的配置,把持久化資料重新「搬遷」到新的變化後的伺服器衝猜上。——如果乙個遊戲有幾千萬使用者,這樣的資料搬遷將會耗時非常長,玩家也被迫等待很長的時間才能重新登入遊戲。所以在這種模型下,對於資料儲存的設計是最關鍵的地方。
分割槽分服的關係型資料庫我們常常散團型會使用mysql這種關係型資料庫來存放遊戲資料。由於sql能夠表述非常複雜的資料操作,這對於遊戲資料的一些後期處理有非常好的支援:如客服需要發獎勵,需要撤銷某些錯誤的運營資料,需要封停某些特徵的玩家……但是,分散式資料庫也是最難做分佈的。
一般來說我們都需要通過某一主鍵欄位做分庫和分表;而另外一些如唯一關鍵字等資料,就需要一些技巧來處理。<>
2樓:菲菲
所有的物件都放在記憶體,20萬使用者以下無壓力。
如果遊戲的使用者很多,例如超過50萬,記憶體就會不夠,可使用lru演算法來淘汰一些資料。
流程:收到使用者請求餘禪 - 在記憶體查詢豎差塵使用者物件 - 如果不存在就從資料庫中載入- 放入記憶體cache-如果cache中的使用者超過20萬 - 用lru演算法淘汰最古老的使用者資料。
避免同步的io操作,所有會發生寫資料庫的操作:例如角色獲得了經驗,要更新資料庫;這類和遊戲邏輯相關、安全性要求不高的儲存操作,一律用非同步操作,由後臺的資料庫儲存執行緒定期儲存。
流程:如果要儲存到資料庫 - 檢查該物件是否已有標誌為在儲存佇列中 - 如果為假 - 將物件放入儲存佇列。 後臺儲存執行緒的流程:
從佇列中獲取要儲存的物件 - 儲存 - 置儲存標誌位為假。
記憶體cache + 非同步儲存模式,併發 每秒1000+ 不會有任何壓力,而且正常慶耐情況下每個請求的處理時間不會超過50毫秒。
郵件操作一定產生大量io操作,而且都是同步操作,可用上面的cache機制處理,或者專門的郵件伺服器。
如果是dnf之類的格鬥類遊戲,因為對系統響應的時間要求特別高,50毫秒都嫌慢,這種情況下,瓶頸是在網路上,可用udp包來解決。搜尋udp,有大量文件。<>
3樓:筱磊
orcale公司有一款叫coherence的產品,就是一種亂廳能很好解決以上問題的「能分散式使用」的產品。他利用區域網的組播功能來做節點間的狀態同步,同時採用節點互相備份的方案來分佈資料。這款產品還使用map介面來提供功能。
這讓整個快取系統既使用簡單又功能強大。更重要的是,它能讓使用者對於資料的存取特性做配置,從而提供使用者可接受的資料風險下的更高效能——本地快取。由於遊戲的資料,真正變化頻繁的,往往不是「關鍵」的需要安全保障資料,如玩家的位置、玩家在某次戰鬥中的hp、子彈怪物的位置等等。
而那些非常重要的資料,如等級、裝備,又變化的不頻繁。這就給了開發者針對資料特性做優化以很大的空間。而且,大部分資料的讀、寫頻率都有典型的不平衡狀態。
普遍遊戲資料都是讀多寫少。少量的日誌、上報資料是寫多、幾乎不讀。對於快取系統來說,有三個重要的因數決定了在遊戲開發中的地位。
首先是其使用的便利性,因為遊戲的資料結構變化非常頻繁,如果要很繁瑣的配置資料結構,則不會適合遊戲開發;其次是要能提供近似本地記憶體的效能,由於遊戲伺服器邏輯基本上都是在頻繁的讀寫某一特定資料塊,如玩家位置、經驗、hp等等,而且遊戲對於處理延遲也有較高的需求(web應用在2秒以內都可以忍受,遊戲則要求最好能在20ms以內弊粗完成)。要能同時滿足這兩點,是不太譁卜隱容易的。<>
乙個終極的問題,人類終極問題是什麼呢?
你覺得自己比不上一塊香皂嗎。人類終極問題是什麼呢?這是哲學式的命題,終極指的是本原性 根本性的問題,找到這個裂喊問題並從這個問題出發,能夠衍生出人類的所有的相關問題。人的生存狀態,顯然不是人生的終極問題,人的生存本身只是為追究終極問題提供一種可能性和物質載體,但是不能必然導致終極問題的產生,否則,其...
蝶閥系列閥門安裝時必須注意的幾個問題是什麼
1 蝶閥系列閥 門安裝管道法蘭需要符合dnn2501或ansib16.5標準。蝶閥和球閥在安裝時要注意什麼?蝶閥安裝注意事項 1 在安裝時,閥瓣要停在關閉的位置上。2 開啟位置應按蝶板的旋轉角度來確定。3 帶有旁通閥的蝶閥,開啟前應先開啟旁通閥。4 應按製造廠的安裝說明書進行安裝,重量大的蝶閥,應設...
孩子進入初中後,你覺得最困惑的家教問題是什麼 請結合具體事例表述
就是作業不會寫呀!就是要多交流呀!由於孩子到了青春期,行為變得難以讓人琢磨,變得不易與人交流,學習顯得有些浮躁,所以最需要的也是最難的,就是合理引導學生心理健康發展 孩子進入初中後,你覺得最困惑的家教問題是什麼?請結合具體事例表述。初中生進入青春期,也產生了叛逆心理,這一時期家長要多與孩子溝通,家長...