首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google中保持一致计数

在Google中保持一致计数
EN

Stack Overflow用户
提问于 2015-05-01 14:56:43
回答 4查看 264关注 0票数 0

我正在寻找一个非常常见的问题,谷歌应用程序引擎平台上的建议,以保持一致的计数器。我有一个任务要加载域的组,然后为每个组创建一个任务,以便在单独的任务中加载其组成员。现在,由于有成千上万的团体和成员,将有太多的任务。我将创建一个任务来获取一页组,在该任务中,我将为每个组创建多个任务以获得其members.Now,为了知道是否加载了所有组,我有逻辑只检查nextPageToken,然后将组加载标志设置为finished。

但是,由于每个组将有单独的任务来加载成员,我需要跟踪所有组成员的任务是否已经完成。现在,我遇到了一个问题,就是访问单个numGroupMembersFinished计数的各种任务都会产生并发问题,并且计数会在某个地方损坏,并且不会返回正确的数据。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-01 17:20:56

我的回答是一般性的,因为你的问题没有任何代码或建议的解决方案,因为你没有说你打算把这个计数器放在哪里。

网络上的许多文章都涵盖了这一点。谷歌用于“分片计数器”,用于在O(1)时间内快速计算数据存储实体的半可伸缩性方法。

更重要的是,查看memcache api。它具有一个存储在那里的原子增量/减量计数器的函数。保证不会出现并发问题,但是您仍然需要一些方法来恢复和/或反复检查memcache条目是否被逐出,也许还需要将计数存储在异步设置的实体中,并“按键获取”,以始终获取其最新值。

这仍然不是100%防弹的,因为缓存可能会被逐出,因为您有很多次同时尝试修改它,因此备份数据存储实体可能会遗漏一个"set“。

你需要计算,根据你的预期并行使用,如果这些机会错过一个增量/减少是更大的彗星击中地球。希望你不会用在空中交通控制器上。

票数 2
EN

Stack Overflow用户

发布于 2015-05-01 18:11:16

您可以使用MapReduce或管道API:

https://github.com/GoogleCloudPlatform/appengine-mapreduce https://github.com/GoogleCloudPlatform/appengine-pipelines

允许您将问题分解为较小的、可管理的部分,这样库就可以处理任务之间的信令/阻塞的所有细节,收集结果,并在完成任务后将其返回给您。

Google /O 2010 -使用Google的数据管道:

TU7rtc

Google /O 2011:使用App管道API:进行大规模数据分析

TYA2ZY

Google I/O 2011:应用引擎MapReduce:

https://www.youtube.com/watch?v=EIxelKcyCC0

Google /O 2012 -构建谷歌规模的数据管道:

https://www.youtube.com/watch?v=lqQ6VFd3Tnw

票数 1
EN

Stack Overflow用户

发布于 2015-05-06 21:44:59

Zig提到了,下面是Google自己实现计数器的方法的链接:

counters

我复制粘贴(重命名了一些变量,等等)可配置的切分计数器进入我的应用程序,它的工作很棒!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29989263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档