遊戲伺服器儲存系統設計
本文內容源自騰訊遊戲學院程式公開課_伺服器第四節
原文連結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 | 儲存器系統設計筆記
- LRMs機載儲存伺服器系統伺服器
- 系統統計資訊的儲存位置
- 系統設計實踐(02)- 文字儲存服務
- 儲存系統
- 軟體設計師23-儲存器系統02
- 高效能分散式計算與儲存系統設計概要分散式
- 分散式塊儲存系統Ursa的設計與實現分散式
- 把自編儲存過程設定為系統儲存過程儲存過程
- 儲存系統實現-構建自己的儲存系統(一)
- [計組 notes] Chapter 3 儲存系統APT
- 系統架構設計面試指南(02)-MQ和檔案儲存架構面試MQ
- 系統 儲存過程儲存過程
- 資料儲存--面向列的儲存設計
- 計算機的硬體系統儲存器計算機
- linux系統伺服器,nginx日誌切割儲存教程。Linux伺服器Nginx
- ARM體系中儲存系統
- 儲存系統-cache-磁碟
- 第四篇:GPU 並行程式設計的儲存系統架構GPU並行行程程式設計架構
- 小程式 LRU 儲存設計
- 4.5PB!杉巖物件儲存中標天威視訊“中心儲存系統建設”物件
- 動作遊戲系統設計概述遊戲
- 遊戲中的技能系統設計遊戲
- MacOS系統Docker預設儲存路徑遷移方法MacDocker
- 教你在Ubuntu系統下儲存螢幕亮度設定Ubuntu
- 儲存與資料庫系統資料庫
- 遊戲分享系統設計第二步:分享系統的設計遊戲
- 優惠劵系統庫存設計淺談
- 【高併發寫】庫存系統設計
- 進銷存系統資料庫設計資料庫
- 檔案系統儲存與oracle資料庫儲存對比Oracle資料庫
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 動態表單儲存設計
- 【RocketMQ】RocketMQ儲存結構設計MQ
- 分散式儲存高可用設計分散式
- 360自研分散式海量小檔案儲存系統的設計與實現分散式
- 浪潮資訊孫斌:浪潮儲存系統設計的技術探索、選擇與思考