我的每个用户每隔几秒就会轮询一次服务器。我需要保留一个在过去30秒内轮询的用户列表,以便我每隔几秒就排队等待一个任务。
我看到的显而易见的方法是每次用户轮询时更新数据存储条目,并查询在任务队列中最后N秒内具有时间戳的条目。我无法想象这种缩放。
有什么建议吗?
感谢。
答案 0 :(得分:2)
我已经为小型实体的写入基准测试,大约每秒1/20。如果您将轮询实体的密钥基于与用户关联的唯一值,那么您可以在更新它时通过密钥访问轮询实体,这是一个非常快速的哈希而不是搜索。
只要您不需要同时写入实体,这些写入就应该很好(听起来您不会这样做,因为每个用户都有一个)。只要确保不将poll实体放在同一个实体组中,如果这样做,写入一个将在写入期间冻结所有其他实体。
您可以查询在过去30秒内更新过的所有投票实体,这是一个读取,应该很快。
答案 1 :(得分:0)
每个用户拥有一个数据存储区实体,并且每次轮询时使用当前时间更新它应该可以正常工作 - 当然,它会为每个用户请求添加一点延迟。