前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LollipopGo游戏服务器-数据一致性设计

LollipopGo游戏服务器-数据一致性设计

作者头像
李海彬
发布2020-04-07 18:40:21
1.1K0
发布2020-04-07 18:40:21
举报
文章被收录于专栏:Golang语言社区Golang语言社区

本期课程给大家谈谈数据一致性,因为经常有同学问到,今天就给大家讲讲,数据一致性大致可分为三类:

  1. 时间点一致性。 时间点一致性指数据在任意时刻都是一致的。
  2. 事务一致性。 事务一致性指的是再一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。
  3. 应用一致性。 应用一致性指的是应用一致性可以看做是约束一致性中的一种。上面的事务一致性代表的是单一数据源,如果数据源是多个,比如数据源有多个数据库,文件系统,缓存等。那么就需要我们应用一致性,这里也看做是分布式事务一致性。

针对于游戏服务器数据一致性可能与目前我们所知道的分布式数据一致性有所不同,游戏服务器数据更新多以玩家数据更新为主,同时大多数游戏服务器框架都设计有DBserver,游戏架构设计与分布式或者微服务的设计就避免了不一致的风险。

LollipopGo X2.5架构

LollipopGo架构本身就设计有DBserver,玩家的数据缓存更新都是以DB更新成功为主,如果存在以下情况:

玩家在游戏服或者战斗服导致金币变化,通过协议更新到大厅或者主场景服务器,主场景服务器再更新到DBserver进行数据保存到数据库。如下图:

如果大厅服或者主场景服更新数据到DB服更新失败这种情况下,大厅服或者主场景服及DB服会将更新失败的log发送给Logserver,同时大厅服或者主场景服不会更新玩家金币变化的缓存,同时会同步给游戏服,金币进行回滚操作。本期视频会在B站:Golang语言社区,近期更新。

如果大家有不同的观点可以在文章下面留言,同时说说你对游戏服数据一致性的一些看法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档