ketoo / NoahGameFrame

A fast, scalable, distributed game server engine/framework for C++, include the actor library, network library, can be used as a real time multiplayer game engine ( MMO RPG/MOBA ), which support C#/Lua script/ Unity3d, Cocos2dx and plan to support Unreal.
https://github.com/ketoo/NoahGameFrame/wiki
Apache License 2.0
3.92k stars 1.09k forks source link

DBProxy存储玩家数据时,怎么解决的并发存储的问题? #239

Closed Ricardo666666 closed 4 years ago

Ricardo666666 commented 4 years ago

DBProxy存储数据的时候用的异步的方式,就有可能产生冲突的情况。 比如:极短的时间内,同时更新玩家的同一数据多次,就可能出现旧的数据覆盖新的数据的情况。 这个问题在NF中是咋解决的呢?(脏数据?每个玩家的存储的时候按顺序存?)

ketoo commented 4 years ago

1:为什么会出现极短的时间内出现多次玩家数据同步? 2:对于gamesever来说,存储是异步的,但是对于db来说,存储是同步的,只要send message to db的时候,发送的是同一个db server,就不会存在你说的覆盖问题,因为永远是按照顺序存储。

致于如何确保通一个玩家的消息一直发送到某一个db server,请参考一致性hash到相关内容,send的接口内部都有包含那一部分。因此,你说的那个情况,永远不会发生。

Ricardo666666 commented 4 years ago

没看到一致性hash 以为gameserver发送的请求是随机到某一个dbserver