游戏缓存服务器
众所周知游戏缓存服的作用是为了减轻数据库压力,提高玩家数据的访问速度。
缓存服务器有一个很重要的问题:何时向数据库中同步?
在游戏跨天的时候,有很多数据要保存,比如玩家的每日任务等。假如有大量玩家在线跨天,那么这些玩家的数据将是一个很大的数据量,所以需要为此制定一个策略。
从Jenkins的定时构建可以得到一个灵感。在Jenkins中,如果有一个定时任务,期望周一到周五每天0点构建一次,为了让它在系统上均匀的负载,可以用H 0 * * 1-5
。这样这个任务可能是0点13分50秒构建,而不是0点整。它是用作业名称的哈希值计算出一个时间,避免和其他任务挤到一起。
游戏缓存服也可以这么用,当大量玩家数据发过来要同步到数据库中时,可以将玩家的id%300,300就是60秒*5,之后得到一个秒数,之后加在当前时间上,表示这个玩家的数据下次保存的时间。缓存服上再加个定时器,定时判断是否有玩家的数据需要保存。这样将向数据库同步数据的任务分散到一段时间中,就能避免大量玩家数据同时保存带来的压力。