什么是跟踪谷歌应用引擎中的当前用户的模式?

时间:2010-06-23 03:16:59

标签: google-app-engine google-cloud-datastore

我的每个用户每隔几秒就会轮询一次服务器。我需要保留一个在过去30秒内轮询的用户列表,以便我每隔几秒就排队等待一个任务。

我看到的显而易见的方法是每次用户轮询时更新数据存储条目,并查询在任务队列中最后N秒内具有时间戳的条目。我无法想象这种缩放。

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:2)

我已经为小型实体的写入基准测试,大约每秒1/20。如果您将轮询实体的密钥基于与用户关联的唯一值,那么您可以在更新它时通过密钥访问轮询实体,这是一个非常快速的哈希而不是搜索。

只要您不需要同时写入实体,这些写入就应该很好(听起来您不会这样做,因为每个用户都有一个)。只要确保不将poll实体放在同一个实体组中,如果这样做,写入一个将在写入期间冻结所有其他实体。

您可以查询在过去30秒内更新过的所有投票实体,这是一个读取,应该很快。

答案 1 :(得分:0)

每个用户拥有一个数据存储区实体,并且每次轮询时使用当前时间更新它应该可以正常工作 - 当然,它会为每个用户请求添加一点延迟。