《數據庫游戲行業最佳實踐-企業級云原生數據庫最佳實踐分論壇(19頁).pdf》由會員分享,可在線閱讀,更多相關《數據庫游戲行業最佳實踐-企業級云原生數據庫最佳實踐分論壇(19頁).pdf(19頁珍藏版)》請在三個皮匠報告上搜索。
1、數據庫游戲行業最佳實踐王若(百潤)阿里云高級技術專家Alibaba Cloud Database in Gaming ServiceContents目錄01游戲架構中數據庫的應用和需求分析02游戲中Redis/Tair的技術水位03MongoDB的游戲最佳實踐游戲架構中數據庫的應用和需求分析GameServerGameServerGameServer接入層AdminServer 用戶登陸態,歷史記錄 角色數據,商城 游戲region/server分服管理 版本控制,全局活動1.SNS,對戰匹配2.排行榜,鎖3.歷史記錄,選角,角色預覽等數據庫場景LogServer/BossCrossMsg/B
2、attle 工單緩存/分析加速 跨服數據 Mailbox Push服務緩存場景 行為日志,緩存Alibaba Cloud Database in gaming servers(分區分服)PolarDBAnalyticDBTairTairTairMongoDBLindorm 運營分析 Anti-cheat 報表 用戶,賬號 資金和交易Alibaba Cloud Database in gaming servers(全球同服)GameServer1NGameServer1N接入服GameServer1NCache SvrGameServer1NGameServer1N接入服GameServer1N
3、Cache SvrGameServer1NGameServer1N接入服GameServer1NCache Svr北京節點歐洲節點北美節點Auth svrBilling svrRanking svr全局服務Tair ClusterMongoDB ClusterAnalyticDB游戲行業對數據庫的整體需求 擴縮容平滑:有很好的平順性,和鏈接保持能力 抗壓能力/熱點等:注冊/登錄風暴,熱門活動 多可用區容災:從備份容災走向跨域多活 從備份恢復,到能夠支持任意時間點,任意key的恢復能力 支持數據內省,清洗等 產品搭配靈活,規格彈性好,安全 冷熱歸檔和分層存儲 不可忽視的運維成本 適應高速迭代;S
4、AAS服務化和可復用框架支持 半結構化數據:高效API和更多數據結構(ORM)高可靠性高可運維低成本快速開發多樣化服務高效運維高速迭代可靠容災游戲行業更青睞云數據庫 Tair/MongoDB 原生JSON支持 Schema-Free 高動態擴展性 SAAS服務和可復用框架支持 云原生:高效備份/恢復 任意時間的數據恢復 清洗和導出:合服,滾服 平滑擴縮容(鏈接保持)高精度HA 跨域容災和全球多活 多樣化數據結構(modules)計算支持(with compute)數據庫的自治和智能化游戲中Redis/Tair的技術水位Redis/Tair當前游戲能力技術水位大圖Redis社區版容災阿里云Red
5、is阿里云原生Tair擴縮容數據安全運維增強流計算存儲介質module30s HA簡單容災7s HA多可用區7s HA多可用區/跨域多活停機閃斷無感擴縮容全量備份恢復至上一次備份自動全量備份恢復至上一次備份自動全量+增量備份Key級任意時間點恢復大/熱Key分析操作審計Event NotifyEvent NotifyEvent Notify即將上線無感知HASAAS多活Tair CDCDRAMDRAMDRAM/PMEM/ESSD半同步redisearchredisjsonTairJson/TairGisTairZsetTairSearch大/熱Key分析+熱Key加速操作審計熱點散列JSON.
6、SET user1234.weapon excaliburJSON.APPEND user1234.aura might場景:Tair的全球多活在游戲中的使用 全球同服:-全球商城+背包系統-用戶跨服對戰(中/美漫游)-本地讀寫獲取低時延服務體驗-以JSON存儲用戶背包及角色數據(TairDoc)Tair雙向多活-基于可靠的流式binlog導入導出協議-可靠的SLA保障(獨立復制資源)-全球同服的高效cache server-全球多活的session系統場景:任意時間點數據恢復(PITR)RecoverMonday:00:00:00 set key1 2500:00:01 zadd k2 1
7、2523:58:05 set key1 val23:59:59 zadd k2 1 25Tuesday:00:00:00 incr key1 100:00:01 sadd k am23:58:05 lpush l1 et23:59:59 zadd k2 23 77Wednesday:00:00:00 set k9 9900:00:01 incr k9 123:58:05 set key1 val23:59:59 zadd k2 1 25Thursday:00:00:00 set key1 val14:04:55 incr key114:04:56 FLUSHALL23:59:59 rpop l
8、1Friday:00:00:00 del l100:00:01 zadd k2 7 2523:58:05 decr key1 123:59:59 del key1CurrentDatasetMonday:00:00:00 set key1 2500:00:01 zadd k2 1 2523:58:05 set key1 val23:59:59 zadd k2 1 25Tuesday:00:00:00 incr key1 100:00:01 sadd k am23:58:05 lpush l1 et23:59:59 zadd k2 23 77Wednesday:00:00:00 set k9 9
9、900:00:01 incr k9 123:58:05 set key1 val23:59:59 zadd k2 1 25Thursday:00:00:00 set key1 val14:04:55 incr key1HistoryDatasetPITR Restore atThursday 14:04:55Clone實例:創建新的實例,將數據恢復至新實例 切換實例的VIP,可以回滾 任意時間點的數據恢復-Backup/Restore的終極形態-支持按秒級的數據恢復(可工單支持到按條)-防止刪庫跑路場景-Clone&Switching:隨時回切-支持按key和key pattern(glob
10、regx)恢復 場景-高級數據安全-游戲回檔-版本降級TairHash:支持subkey設置超時的hash結構CAS/CAD:string語義增強,包含在TairString中TairString:支持并發的string,兼容memcache語義TairZset:多級排行榜簡單常用數據結構 最常用集成,極大減少開發 阿里內部經驗總結,高度穩定TairDoc:兼容reJSON+JSON Pointer,支持XML/YAMLTairBloom:兼容RedisBloom,高性能布隆過濾器TairRoaring:兼容RoaringBitmap,咆哮位圖業內常用模塊 社區用量最大的一些模塊,兼容標準 大
11、量的增強和擴展,問題修復兼容社區并增強高效開發快速構建TairGIS:地理位置結構化,支持2D索引,覆蓋GEOTairCPC:CPC去重,構建實時在線風控安全系統TairTS:時序數據存儲,構建亞秒級監控系統TairSearch:兼容ES語義的高性能搜索引擎重量級行業模塊 復雜:用于構建和體系化解決一類問題 專注:目前此類解決方案的最優方案簡化整體服務框架Tair(Redis企業版)支持的數據結構模塊(modules)場景:高性能分布式鎖(CAS/CAD)設置SET resource_1 random_value NX EX 5刪除CAD resource_1 my_random_value續
12、約CAS resource_1 my_random_value my_random_value EX 10 CAS/CAD 是對redis string的擴展 分布式鎖實現的問題 續約(使用CAS)https:/ TairString/TairHash已經開源https:/ exzadd taobao_pk 1000#2000#3000.3 LiJiaQi(integer)1Tair:6379 exzadd taobao_pk 1000#1500#5000.1 WeiYa(integer)1Tair:6379 exzrevrange taobao_pk 0-1 withscores1)LiJi
13、aQi2)1000#2000#3000.30000000000023)WeiYa4)1000#1500#5000.1000000000004”Tair:6379 exzincrby taobao_pk 10#0#0 LiJiaQi1010#2000#3000.3000000000002Tair:6379 exzrevrange taobao_pk 0-11)LiJiaQi2)WeiYa 原生支持多(任意)維度排序,無精度丟失問題 支持incrby語義,便于做增量更新操作 結合SDK支持可擴展分布式排行榜-解決Redis sorted-set單點問題-SDK支持游戲的云數據庫周邊設施(DTS/D
14、AS)DTS(Data Transmission Service)數據傳輸服務-適用于游戲的合服,滾服-內置CDC(Changed Data Capture)+ETL(Extract-Transform-Load)-基于可靠binlog協議,支持全量導出和清洗(bootstrap)-支持內置的Filter/Map/Branch/Project算子等DAS(Database Autonomy Service)數據庫自治服務-智能診斷和運維和auto-pilot-經驗前饋和狀態反饋達到高精度自運維:帶寬,熱點,優化建議-Tair with DAS,可觀測性:實時bigkey,hotkey,審計,內
15、存視圖-可觀測,可解釋,到可控mapmapfilterfilter 過濾緩存數據(按key)按條件過濾玩家(等級等)沖突消解:如用戶自定義昵稱 值變更:如合服的金幣補償等GameServer1GameServer2New GameServer2ETLETLCDCCDCCDCCDCDTSDTS ServiceService圖:使用DTS進行游戲的合服圖:Tair使用DAS進行實時bigkey/hotkey監測MongoDB的游戲最佳實踐使用MongoDB應對游戲數據庫常見痛點常見痛點MongoDB版本更新、活動舉辦經常需要調整字段用戶數據不斷增長,單機寫入性能瓶頸凸顯大規模數據分析難度大、性能低
16、下失效數據堆積造成性能下降、體驗變差原生分布式,輕松擴容Schema FreeAggregate&ShardingTTL-index 全自動清理需要的新能力更近不及時云MongoDB 5.0國內首發從開發運維視角看阿里云MongoDB 靈活文檔模型-適合游戲半結構化的人物屬性-對JSON/BSON的CRUD語義支持更完善 靈活規格-高可用副本集:分區分服場景-高可擴展分片集群:全球同服場景 特色場景-2D-GIS,TTL等索引適合游戲用戶拓展-Aggregation和TimeSeries(after 5.0)客戶挖掘 Backup/Restore:游戲快速回檔-阿里云 MongoDB 云盤高效快照備份恢復-阿里云 MongoDB 高效任意時間點備份恢復 彈性擴縮容-阿里云 MongoDB垂直規格升降級-阿里云 MongoDB水平加減節點 阿里云 MongoDB 端到端安全解決方案 游戲運營分析:只讀節點負載隔離THANKS