【问题标题】:Google App Engine Go score counting and savingGoogle App Engine Go 分数计算和保存
【发布时间】:2011-12-09 22:37:14
【问题描述】:

我想在 Go 中制作一个简单的 GAE 应用程序,让用户以两种方式投票和存储他们的答案。第一种方式将是原始数据(“投票给 X”的数据库存储),第二种方式将是这些投票的运行计数(“12 票给 X,10 票给 Y”)。在多人同时访问应用程序的情况下,存储这两个值的有效方法是什么?如果我从 Datastore 中检索数据,对其进行更改并将其保存回一个实例,另一个实例可能想要并行执行相同的操作,我不确定最终结果是否正确。

【问题讨论】:

    标签: database google-app-engine parallel-processing go


    【解决方案1】:

    这似乎是一个好方法,将所有投票事件简单地存储为单独的实体(“投票给 X”的方式)并使用 Task Queue 进行重新计算(“12 票给 X,10 票对于 Y" 方式),因此重新计算是离线和按顺序完成的(没有任何竞争和其他并发问题)。然后,您必须每隔一段时间将重新计算任务放入队列,以便更新结果。

    任务队列不允许添加与现有任务同名的另一个任务,但不允许检查特定任务是否已经入队,因此可能只是尝试将同名任务添加到队列中足以确保不存在多个重新计算任务。

    另一种方法是使用 goroutine 等待来自输入通道的 poke 以重新计算结果。我没有在 App Engine 上运行过这样的 goroutine,所以我不确定这种方法的一般行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多