本文内容源自腾讯游戏学院程序公开课_服务器第四节

一、数据存储基础

什么是数据存储?

运行数据保存到硬盘上形成持久化数据。

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)

游戏存盘需求特点:update > read > insert > delete

定期自动存盘:3分钟自动存盘

重要操作即时存盘:升级/下线/关服;获得高价值道具

存储缓冲队列:削峰填谷

游戏服务器存储容灾介绍

热备:主从热备,自动切换

冷备:每日全量备份;关键操作前全量备份

注:此模型较简单,真正设计时会比这个复杂的多。

运营日志存储

什么是运营日志?

游戏中玩家重要行为的记录

诸如登录记录,等级变更,财产变化流水,交易记录等信息

运营日志的用途有哪些?

运营分析游戏中玩家的动态,做出运营决策的数据基础

当发生异常时,追查玩家在游戏内的活动轨迹的重要依据

运营日志的存储

数据量巨大,单服每日约5~10G(未压缩)

永久存档,涉及到游戏收入,需要永久存档备查

需要便于分析统计

存储流程:Game Server——>Database——>磁带。

游戏道具存储mysql_游戏服务器存储系统设计相关推荐

  1. 华为服务器存储系列,华为 服务器 存储相关资料(示例代码)

    防火墙设备包链接:https://pan.baidu.com/s/1oBB6PDEJBGa8rap2C0qumQ 提取码:ocp0 添加本地连接:hdwwiz windows 2012 R2安装序列号 ...

  2. Unity打包安卓如何存储本地游戏数据?

    一.前言 平时项目得数据文件文件一般都使用Resources.Load或者Application.streamingAssetsPath这两中方式读取,但是项目打包成Android或IOS时这些路径获 ...

  3. Unity(游戏)中五种数据存储的方法

    Unity(游戏)中五种数据存储的方法 一.PlayerPrefs unity3d提供了一个用于本地持久化保存与读取的类-------PlayerPrefs.工作原理很简单,以键值对的形式将数据保存在 ...

  4. 游戏服务器技能系统,MMORPG游戏服务器技能系统设计【上篇】 - 踏踏实实,认真工作 - CSDN博客...

    MMORPG游戏服务器技能系统设计[上篇] 收藏 本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖 ...

  5. 第十三课 斗地主项目课③游戏音乐与音效及本地存储

    一.动态加载资源 1.静态加载 通过把资源挂载在场景上节点上或者场景节点的组件上 cc.director.load("hallScene")//场景切换的同时加载场景资源 静态加载 ...

  6. 【读书笔记《Android游戏编程之从零开始》】20.游戏开发基础(游戏数据存储)...

    对于数据的存储,Android 提供了4种保存方式. (1)SharedPreference 此方法适用于简单数据的保持,文如其名,属于配置性质的保存,不适合比较大的情况,默认存放在手机内存里 (2) ...

  7. Springboot游戏道具在线交易平台毕业设计源码171956

    Springboot游戏道具在线交易平台 摘 要 现今人们的生活方式逐渐丰富,电脑和网络已经融入了人们生活中的滴滴点点,无时不刻的影响着我们的日常生活,网络游戏已经进入到了大多数人的生活之中.在游戏的 ...

  8. (附源码)springboot游戏道具在线交易平台 毕业设计171956

    Springboot游戏道具在线交易平台 摘要 现今人们的生活方式逐渐丰富,电脑和网络已经融入了人们生活中的滴滴点点,无时不刻的影响着我们的日常生活,网络游戏已经进入到了大多数人的生活之中.在游戏的世 ...

  9. (附源码)springboot游戏道具在线交易平台 毕业设计171956

    Springboot游戏道具在线交易平台 摘要 现今人们的生活方式逐渐丰富,电脑和网络已经融入了人们生活中的滴滴点点,无时不刻的影响着我们的日常生活,网络游戏已经进入到了大多数人的生活之中.在游戏的世 ...

最新文章

  1. Effective java笔记3--类和接口2
  2. ORA-03113: end-of-file on communication channel Process ID: 252 Session ID: 1 Serial number: 3
  3. 【面试题】Ajax的原理和优缺点总结
  4. python必考面试题目
  5. DML,DDL,DCL,DQL的区别
  6. 设计模式笔记(21)---备忘录模式(行为型)
  7. SSM高校实验室安全培训系统设计与实现.docx
  8. 西门子plc与ABB510变频器modbus通讯
  9. php 图片木马,php图片木马实现原理
  10. 钢琴作品常用体裁名称及曲式
  11. 解决 remote Support for password authentication was removed on August 13, 2021.
  12. tensorflow的安装和求解泊松方程
  13. 计算机是干嘛的不会打字能学吗,不会打字能学护士吗不会使用电脑?
  14. 基于XBee进行ZigBee组网(二)——ZigBee网络与XCTU的使用
  15. ros订阅相机深度信息_基于深度相机 RealSense D435i 的 ORB SLAM 2
  16. UnixLinux 读书摘抄(简介)
  17. 进阶之路(中级篇) - 015 串口控RGB三色灯
  18. mysql去年同期_sql统计 本期 ,上期 ,去年同期 数据
  19. AdGuard for Mac
  20. 【推荐】雪亮工程解决方案社会治安综合治理防控平安乡村综治整体技术(共50份,933M)

热门文章

  1. HTML5良好的设计理念
  2. java零钱换整程序_Java程序,告诉您从1美分到99美分的零钱要发...
  3. Emotion英语——Point
  4. 图像处理之_仿射变换与透视变换
  5. Nokia N900 OTG功能实现
  6. vCenter Server目录/storage/core,/storage/log 空间不足问题解决
  7. 企业级博客项目笔记(二)
  8. 上海市企业及个人网站备案的要求是什么
  9. 上班时间“划水”、下班时间“加班”。钱和命,孰轻孰重?
  10. Rocket.Chat