遊戲伺服器儲存系統設計
本文內容源自騰訊遊戲學院程式公開課_伺服器第四節
原文連結https://www.cnblogs.com/OctoptusLian/p/9479120.html
一、資料儲存基礎
什麼是資料儲存?
執行資料儲存到硬碟上形成持久化資料。
data——>file(database)——>file system——>hard driver
資料變為檔案,存入檔案系統,檔案系統通過OS這一層落到硬碟上面。
資料庫 - 關係型資料庫
資料庫表設計與正規化
1NF,2NF,3NF
優點
減少資料冗餘
保證資料完整性
SQL語言提供了強大的查詢功能
問題
資料結構複雜情況下表結構難以維護
效能一般,容易產生效能瓶頸
可擴充套件性較差
資料庫 - NoSQL資料庫
NoSQL資料庫特點
Key - Value結構
支援結構化查詢
優點
易於維護
效能較高
可擴充套件性好
問題
容易產生資料冗餘
不支援SQL查詢
二、遊戲伺服器架構與資料儲存設計
遊戲業務的特點
響應速度要求非常高
100ms以上的延遲玩家就會有感知
資料更新頻率高
玩家資料每時每刻都在變化
獲取經驗,獲取金錢,獲取成就
update > read > insert > delete
解決方案
為了實現高速響應,玩家資料全部在記憶體中
在登入時從DB載入進記憶體
遊戲過程中的資料變更通過操作記憶體資料完成
遊戲伺服器架構介紹
分割槽分服伺服器架構(天涯明月刀、夢幻西遊)
Player 1——>Game Server 1——>Database 1
Player 2——>Game Server 2——>Database 1
Player 3——>Game Server 3——>Database 1
每個玩家可以選擇不同的伺服器進行遊戲,每個伺服器後面的儲存都是相互獨立的,這樣每個伺服器的儲存壓力也會變得比較小。
全區全服伺服器架構(王者榮耀、皇室戰爭、吃雞)
Player 1——>Game Server Cluster——>Database
Player 2——>Game Server Cluster——>Database
Player 3——>Game Server Cluster——>Database
遊戲伺服器資料庫選型
分割槽分服儲存特點——>選擇 RDBM(關係型資料庫)
單服資料量較少
請求量少
無需動態線上擴容
全區全服儲存特點——>選擇 NoSQL
資料量大
請求量大
需要動態線上擴容
使用MySQL作為遊戲資料庫
軟體工程思想:分離穩定和不穩定
穩定,使用MySQL表欄位,例如:NAME、職業、角色的性別、等級;
不穩定,打包放入GAMEBLOB裡面,再通過DR技術進行版本控制和管理,例如:道具、學會的技能;
混合式儲存設計
REDIS快取記憶體,MySQL真實落地。
遊戲伺服器存檔策略設計
Player——>Game Server 1(Player Runtime Data)<——(load)DB
遊戲存檔需求特點:update > read > insert > delete
定期自動存檔:3分鐘自動存檔
重要操作即時存檔:升級/下線/關服;獲得高價值道具
儲存緩衝佇列:削峰填谷
遊戲伺服器儲存容災介紹
熱備:主從熱備,自動切換
冷備:每日全量備份;關鍵操作前全量備份
注:此模型較簡單,真正設計時會比這個複雜的多。
運營日誌儲存
什麼是運營日誌?
遊戲中玩家重要行為的記錄
諸如登入記錄,等級變更,財產變化流水,交易記錄等資訊
運營日誌的用途有哪些?
運營分析遊戲中玩家的動態,做出運營決策的資料基礎
當發生異常時,追查玩家在遊戲內的活動軌跡的重要依據
運營日誌的儲存
資料量巨大,單服每日約5~10G(未壓縮)
永久存檔,涉及到遊戲收入,需要永久存檔備查
需要便於分析統計
儲存流程:Game Server——>Database——>磁帶。
相關文章
- 微機原理與系統設計筆記6 | 儲存器系統設計筆記
- 系統設計實踐(02)- 文字儲存服務
- LRMs機載儲存伺服器系統伺服器
- 儲存系統
- 軟體設計師23-儲存器系統02
- 動作遊戲系統設計概述遊戲
- 遊戲中的技能系統設計遊戲
- [計組 notes] Chapter 3 儲存系統APT
- win10系統遊戲截圖儲存在哪_如何開啟win10遊戲截圖儲存位置Win10遊戲
- RPG遊戲社交系統設計思路分析遊戲
- 遊戲分享系統設計第二步:分享系統的設計遊戲
- linux系統伺服器,nginx日誌切割儲存教程。Linux伺服器Nginx
- 計算機的硬體系統儲存器計算機
- 系統架構設計面試指南(02)-MQ和檔案儲存架構面試MQ
- 帶你瞭解遊戲陪玩系統原始碼前端常用的儲存方式遊戲原始碼前端
- 遊戲美學——洛奇的武器系統設計遊戲
- 儲存系統-cache-磁碟
- 基於 Flink+Pravega 的遊戲伺服器監控與調節系統設計遊戲伺服器
- 小程式 LRU 儲存設計
- 4.5PB!杉巖物件儲存中標天威視訊“中心儲存系統建設”物件
- 元件-實體-系統 (ECS \CES)遊戲程式設計模型元件遊戲程式設計模型
- 如何利⽤結構化思考,去設計遊戲系統?遊戲
- MacOS系統Docker預設儲存路徑遷移方法MacDocker
- 遊戲設計方法論——非玄學的遊戲設計知識譜系遊戲設計
- 3D遊戲程式設計與設計6——物理系統與碰撞3D遊戲程式設計
- DeFi/GameFi鏈遊NFT遊戲系統設計開發專案模型GAM遊戲模型
- 【RocketMQ】RocketMQ儲存結構設計MQ
- Apache Druid底層儲存設計ApacheUI
- 動態表單儲存設計
- 【高併發寫】庫存系統設計
- 10分鐘看懂,遊戲伺服器端資料儲存的特異性遊戲伺服器
- Unity遊戲框架設計之存檔管理器Unity遊戲框架
- 搭建一個遊戲系統,如何做好數值設計?遊戲
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 360自研分散式海量小檔案儲存系統的設計與實現分散式
- win10系怎麼備份已儲存的遊戲檔案Win10遊戲
- NFT鏈遊遊戲元宇宙系統技術開發設計詳情遊戲元宇宙
- 如何在Linux系統伺服器中測試儲存/磁碟I/O效能?Linux伺服器