本期课程给大家谈谈数据一致性,因为经常有同学问到,今天就给大家讲讲,数据一致性大致可分为三类:
针对于游戏服务器数据一致性可能与目前我们所知道的分布式数据一致性有所不同,游戏服务器数据更新多以玩家数据更新为主,同时大多数游戏服务器框架都设计有DBserver,游戏架构设计与分布式或者微服务的设计就避免了不一致的风险。
LollipopGo X2.5架构
LollipopGo架构本身就设计有DBserver,玩家的数据缓存更新都是以DB更新成功为主,如果存在以下情况:
玩家在游戏服或者战斗服导致金币变化,通过协议更新到大厅或者主场景服务器,主场景服务器再更新到DBserver进行数据保存到数据库。如下图:
如果大厅服或者主场景服更新数据到DB服更新失败这种情况下,大厅服或者主场景服及DB服会将更新失败的log发送给Logserver,同时大厅服或者主场景服不会更新玩家金币变化的缓存,同时会同步给游戏服,金币进行回滚操作。本期视频会在B站:Golang语言社区,近期更新。
如果大家有不同的观点可以在文章下面留言,同时说说你对游戏服数据一致性的一些看法。