关于跨服数据
最近好多老G说要做数据跨服的功能,比如跨区商城、货币跨区、跨服转区等;普遍提供的功能都是引擎读写文本,另外在使用工具同步文本内容,个人觉得这个操作很骚,之前做也做过关于数据同步的内容,但是涉及的数据也基本是属于存档型,不用考虑数据安全性、实时性等,总体说用文本同步做实时跨区功能风险很大:
一、数据的及时性
文本数据同步基本都会存在秒级别的误差,文本内容大的误差可能会更大,由于误差存在所以当并发请求大或者玩家有意而为之,那就会造成服务器数据错误。
*例1:跨服商城
如果有一个跨服商城存在,两边玩家同时购买一件库存为1道具,极有可能出现超卖的情况。如果老G觉得这无所谓,反正超卖了影响不大,反正是卖的,又不是送的,那请看例2。
例2:账号转区
玩家申请转区后在多个服务器同时领取转区的货币、充值,和上面的道理一样,同一个转区操作,被领取了两次。当场去世。
二、执行效率低下
当数据量达到一定大小的时候无论是引擎或者是同步用的工具对数据处理的效率都会呈指数的下降,这个时间不但会扩大及时性的问题,还会造成服务器卡顿等情况。
可靠的解决方案:
其实使用文本同步来实现也是无奈之局,并且也确实能实现功能,及时性和效率问题都可以通过实现手段来处理,达到实现功能的同时,还能保证可靠性。
及时性的问题跨服器可能基本都无法解决,大概的做法就是客户端加延迟执行处理结果,在延迟的时间内需要对数据做校验,并且保证对应数据在有结果之前是不会改变的。简单说就是操作数据前,给这条数据数据上"锁",保证它不会被多次使用,等待操作完再释放锁,或者删除数据。
不写了,打游戏去。。。