zoukankan      html  css  js  c++  java
  • 游戏服务器存储系统设计

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

    一、数据存储基础

    什么是数据存储?

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

    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——>磁带

  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/9479120.html
Copyright © 2011-2022 走看看