使用Go,App Engine,Dedicated Memcache和Instance Memory实现分片计数器

时间:2014-02-18 10:16:31

标签: google-app-engine go

我们计划实施一个大规模扩展后端系统,基本上必须在相当短的时间内(大约5分钟)计算数十万最终用户的投票。

可以使用Go运行时和Dedicated Memcache服务在App Engine上完成实现。也许,数据存储将用于在投票期后保持计数器值。

我们当前的建筑理念和问题:

  • 我们计划将实例内存用于即时请求计数。假设只使用Go全局变量实际转换为“使用实例内存”,我们是否正确?

    • 我们计划将每个实例的总计数器值(全局变量的值)存储到一个待定义的间隔中的专用内存中,例如:每10秒或250个增量。我们可能会对这些memcached计数器进行分片,以避免单个Key / Items上的峰值负载。

    • 使用App Engine cron作业,我们可能会将Memcache计数器保留为长期使用。

你怎么看?这有意义吗?这是一个好方法吗?

1 个答案:

答案 0 :(得分:1)

对于类似的内容,您可能希望使用task queue机制(特别是pull queue机制)。这将允许您在单个操作中处理(计数+提交)多个投票任务。这可能比使用实例内存更可靠,因为任务队列将比任务重启更久。