谷歌应用引擎中队列的“桶大小”是啥意思?
Posted
技术标签:
【中文标题】谷歌应用引擎中队列的“桶大小”是啥意思?【英文标题】:What is meant by 'bucket-size' of queue in the google app engine?谷歌应用引擎中队列的“桶大小”是什么意思? 【发布时间】:2011-04-14 00:57:46 【问题描述】:Google 应用引擎task queues 的配置为(示例)
<queue>
<name>mail-queue</name>
<rate>5/m</rate>
<bucket-size>10</bucket-size>
</queue>
这里,“桶大小”是什么意思?我在谷歌应用引擎文档中找不到关于此的全面文档。
将其指定为 10 是否意味着如果 100 个任务同时排队,则只有其中的 10 个将被放入队列中,其余的将被忽略?
【问题讨论】:
【参考方案1】:bucket-size 完美描述here:
限制队列处理的突发性,即更大的桶大小允许队列执行率的更大峰值。例如,考虑一个速率为 5/s 且存储桶大小为 10 的队列。如果该队列已经有一段时间不活动(允许其“令牌桶”填满),并且突然有 20 个任务入队,它将允许立即执行 10 个任务。但是在接下来的一秒内,由于令牌桶已经耗尽,并且正在以指定的 5/s 速率重新填充,因此只能再执行 5 个任务。
如果队列没有指定bucket_size,则默认为5。
对于您的情况,这意味着如果有 100 条消息排队,则只有 10 条消息被直接执行,每分钟再执行 5 条消息。您不会丢失任何消息,但如果您的存储桶大小和速率过低,它们会排队。
【讨论】:
+1 太棒了!此外,奇怪的是,'java' 任务队列文档没有这个信息,而'python' 文档有它!我的印象是 java 和 python 文档在内容方面是相似的。由于我没有在 java 下找到这个东西,所以我假设它也不会在 python 中!感谢您指出。 Aah.. 在 java 中也找到了它。但它不如python的全面。 code.google.com/intl/en/appengine/docs/java/config/queue.html 这是一个最新的链接:developers.google.com/appengine/docs/java/config/… 最大处理速率是500,但是最大桶大小只有100。在这种情况下它是如何工作的?如果burst小于处理速率有点奇怪,我是不是误会了什么? 更新了与@halfdan 发布的类似信息的官方链接:cloud.google.com/appengine/docs/python/config/queue?hl=en以上是关于谷歌应用引擎中队列的“桶大小”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章