《龍之谷》手遊伺服器資料管理

2021-07-11 05:54:35 字數 627 閱讀 3135

昨天聽同事聊起龍之谷的服務端架構,有些新穎和值得學習的地方,姑且在此總結,加深下理解,也算是做個筆記。

龍之谷的服務端架構主要的特點就是將資料分塊。服務端在設計資料時,按照不同功能將資料分塊,比如:玩家屬性,技能,幫派,排行塊等,每個模組就是乙個記憶體物件——keeper,這樣就能按功能模組來管理資料。

keeper是如何管理資料的呢?在伺服器啟動時,所有keeper都載入到記憶體。在keeper的內部維護乙個字典,這個字典以玩家id(uid)作為key,該模組的資料作為value。初始化為空,當使用keeper時傳入uid,keeper先檢測uid是否存字典中,如果存在就直接取資料,如果不存在,則去查詢資料庫。

keeper還有乙個作用就是優化存檔。每個字典中再維護乙個變數,標記當前資料是否發生改變,存檔時只存發生改變的的資料。同時,keeper的字典中會設定乙個上限,在記憶體中維持固定數量的玩家資料,當玩家資料達到上限後,使用lru演算法,替換到最久未使用的玩家資料。

手遊伺服器php架構比較

從swoole專案開始到現在,一直有人在問這個問題。今天來抽空講一下它。為什麼swoole非要使用純c來寫而不是php 來實現,核心的原因有2點 如sendfile eventfd timerfd pthread等等,這裡就不一一枚舉了,所以純php實現的 phpdaemon,reactphp,還有...

業餘寫個moba手遊系列之 連上伺服器

希望這次的系列文章,我能堅持寫完啊 先交代個背景。之前在a公司作為校招生培訓時做了個moba手遊,覺得自個當時太年輕,小團隊不敢自個內部孵化,就跑去某半成品專案組了,自己的moba也就沒繼續去做了。現在跳槽到了b公司,b公司規模很大,但是每天也都是業務邏輯為主,而且還是天天敲python。為了不荒廢...

談談龍之谷手遊相容測試的一百個坑

龍之谷 一款優秀的端遊移植到手遊平台,憑藉的豐富的遊戲內容和優秀的遊戲品質,公測首日便在暢銷榜登頂,取得了巨大的成功。遊戲內容不僅繼承了端遊的內容,還根據手遊操作方式以及平台特性進行了改進,使之更適合移動使用者操作,介面分部也更加合理。龍之谷與其他遊戲產品一樣,版本初期暴露的相容性問題很多,類似無法...