现在游戏后端是怎么做存储的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
noahsophie
V2EX    游戏开发

现在游戏后端是怎么做存储的?

  •  
  •   noahsophie 2020-08-27 20:32:19 +08:00 4777 次点击
    这是一个创建于 1936 天前的主题,其中的信息可能已经有所发展或发生改变。

    目前的做法是玩家数据直接在内存操作,然后定时同步到 mysql (重要数据会实时同步),但是服务器宕机这块要怎么处理?

    11 条回复    2020-09-19 00:32:24 +08:00
    Mutoo
        1
    Mutoo  
       2020-08-27 20:37:55 +08:00   3
    宕机=回档+发玩家补尝邮件
    dabaibai
        2
    dabaibai  
       2020-08-27 21:06:05 +08:00
    宕机无解. 回档是必然
    wysnylc
        3
    wysnylc  
       2020-08-27 21:16:37 +08:00 via iPhone
    双写备份
    feelapi
        4
    feelapi  
       2020-08-27 21:37:21 +08:00
    https://github.com/viabtc/viabtc_exchange_server
    比特币交易所引擎,可以作为参考。
    xuanbg
        5
    xuanbg  
       2020-08-28 08:40:35 +08:00
    @feelapi 用这个方案估计大家都不能愉快滴玩游戏了。。。

    可靠性越高,系统复杂度就越高,可用性也就越低。游戏嘛,还是回档+补偿就完了,最简单。研发满意、策划满意、运营满意、玩家满意,你还有啥不满意的?
    looplj
        6
    looplj  
       2020-08-28 10:09:46 +08:00
    游戏我的理解确实都是在内存中操作的。
    有没有这种玩法:操作日志可以写 kafka,通过 kafka 同步数据到数据库,比定时同步数据要准确点吧。
    如果写 kafka 也影响延迟,可以异步写。
    noahsophie
        7
    noahsophie  
    OP
       2020-08-28 10:16:56 +08:00
    @ZSeptember 我们做的是分区分服的架构,定时同步主要是为了减少 db 的压力,所以你写到 kafka 里然后在写到 db,最终的压力都 db 上,没有必要
    takemeaway
        8
    takemeaway  
       2020-08-28 10:52:55 +08:00
    又要快,又要好,世间事无两全。
    hello321
        9
    hello321  
       2020-08-28 11:47:58 +08:00
    哈哈 是这样
    @xuanbg
    dogfeet
        10
    dogfeet  
       2020-09-10 11:05:27 +08:00
    C++ 的服务端吗?说个非 C++ 的方式,填业务逻辑的地方是框架预留的地方,都做了异常的检测。服务挂掉的时候框架会提供指定的异常回调处理。一般情况下在这里记录日志加回写数据。半年的研发周期本身就应该让宕机的概率变的很低。挂掉还有机会回写将数据丢失的可能性进一步降低(当然,要保证回调里面不再或几乎不会出现异常)。
    但是,这样还是不能解决数据一致性问题,比如修改数据一半挂掉。这种情况下回写的数据是不完整的。这种只能通过业务逻辑中的日志来记录。非极端情况下是能将玩家数据恢复到之前一致的。
    以前特别纠结这种问题,总想为什么没有既能完全保证数据一致性,性能又好,心智包袱又小的方案,让写业务逻辑的时候无脑一点。现在想想真的太难,老老实实做好日志记录,关键数据一致性问题能通过日志追踪复原到比较理想的状态也差不多了。

    就是 mysql 这种,ACID 不开串行异常级别,一致性也不能支撑完全的无脑的开发。
    比如扣减余额,转账这种。默认可重复读级别并不能解决并发的问题。只要允许 2 个事务一起操作该数据,一样余额能成负。最终还是需要额外处理。
    huangwei1024
        11
    huangwei1024  
       2020-09-19 00:32:24 +08:00
    独立 db server,介于游戏进程和数据库之间
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3232 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 11:38 PVG 19:38 LAX 03:38 JFK 06:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86