谷歌应用引擎中队列的“桶大小”是啥意思?

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

以上是关于谷歌应用引擎中队列的“桶大小”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

SPQ是啥意思

这个队列属性(iOS Audio Queues)是啥意思?

“队列段(1796152)作为段持续时间将超出缓冲区限制”是啥意思?

python分布式爬虫是啥意思

消息队列(mq)是啥?

q.push(cur);啥意思(在c++里),是将整个结构体推入fifo队列吗