今天面试被问了这个问题。
具体背景是
某个RPG游戏有一个任务系统
整个系统包含几十万个不同的任务
但是每个任务玩家只能领取一次
每个服务器有几十万个玩家
请设计一个时间复杂度和空间复杂度都较为低的方案
请问这个问题应该怎么设计啊
每个玩家直接存储每个任务都完成情况的话,显然空间太大了
1、每个服务器加个缓存。玩家领取后将玩家的ID作为key放到缓存中,值为1.
2、或者加个缓存的集群,根据服务器ID分派到各自的服务器上面处理。
3、对于缓存来说,几十万不算很大
应该在玩家客户端数据库上存储对应的任务完成情况,性能最优
但是会有数据同步的问题
把这块功能放到数据库里面,把人物ID放到数据库里面。每个人注册的时候会有一个唯一的ID。接取任务的时候把任务的唯一ID传给玩家。