玩过游戏的都知道游戏里都有定点重置的功能,比如商店刷新,副本刷新什么的。最近在做手游服务端,做到公会这一块了,公会里的每个成员都有贡献度,贡献度是一个星期重置一次(即每周一0点重置)。想请教各位大神,我这块应该如何设计,我目前想到的方案有2种:
1.服务器上跑一个定时任务,到了重置时间执行重置命令。但是这样会有一个问题就是,当玩家数量庞大的时候(假如100万),重置的时候就要一次性更新100万条数据,不知道数据受不受得了啊。而且每次重置都是重置所有玩家,这里面肯定还有好多僵尸号。
2.每个玩家各自给一个变量,用来记录重置时间(实际上所有玩家这个时间都是一样的),然后玩家登录的时候我就比对这个时间,如果符合条件就重置。但是这就有一个问题就是,如果过了重置时间这个玩家没登录,那么在公会列表里别的玩家看到这个玩家的贡献度还是上周的数据(本应该是0,即重置后的数据才对)。
- 读和写分库
- 为抗压,加mq
@i5ting 那也就是采用第一种方案了?mq是指消息队列吗?
一个星期对应一个表 From Noder
方案2 懒重置 把粒度提升为工会
还有一点 你考虑的玩家数是错误的 我们应该考虑的是峰值同时在线数 而不是注册玩家数 如果你说单服10万同时在线是不可能 所以你的结论也是不对的
@weierbufan mq是啥=.=
@kentkwan 谢谢!
应该是 message queue
@leiwei1991 多谢!
@imhered 就是指的消息队列message queue
@weierbufan 多谢!
@kentkwan 明显这个方案啊 必须懒重置