游戏数据一致性的一点想法

在手游服务器中, 往往会碰到修改其他玩家离线数据的需求, 这个时候如何保证数据的一致性?

数据独占锁

因为多写从而导致数据不一致的概率比较低, 所以这种方法还是可行的, 但是要注意锁的粒度.

乐观锁

最常见的做法是带版本号的写操作, 如果版本号失败, 则事务失败, 由发起方在业务层做处理. 这种做法比较简单, 但是需要业务做适度的容错处理.

无锁设计

写唯一. 为了保证唯一的写, 需要将数据的修改记录下来, 比方说放到一个队列中, 再有持有写权限的进程顺序操作, 最典型的就是邮件系统.

这几条做法都可以, 设计时应该参照实际情况选取.