2

我有个问题。

我认为 Microsoft 的 Azure 队列旨在支持本文所建议的大量消息,并且我读到您能够存储 100TB 的消息(帐户的最大容量)。因此,您只能将一个队列用于所有工作人员角色。

但我发现一篇文章只向我们展示了一个按工作角色实例排列的队列。

我认为文章的其余部分是严肃的,所以我不知道对此有何看法。

在某些情况下,多个队列更好吗?

4

1 回答 1

4

如果您正在查看存储,则无论您有 1 个队列还是 100 个队列,限制都是相同的。但是您必须了解性能影响。在存储帐户中,性能基于分区(例如,Fabric Controller 能够将更多资源分配给热分区)。

当您使用 Windows Azure 存储队列时,1 个队列就是 1 个分区。这带有一些可扩展性目标。对于队列,这意味着 1 个队列应该能够处理 500 条消息/秒。在此处阅读有关它的更多信息:Windows Azure 存储抽象及其可扩展性目标

现在,这是您定义架构时的一个重要因素,它取决于您将使用队列的目的。如果您从未期望达到每秒 500 条消息,那么您应该为所有工作人员使用一个队列。但是,如果您认为超出此限制(即使不会立即发生),您将需要建立一个良好的架构来处理这个问题。这不仅仅意味着 1 个工作人员的 1 个队列。考虑不同进程的不同队列,在子进程中拆分进程并为每个子进程使用队列,让您的工作人员轮询不同的队列,考虑循环系统,......

还可以考虑查看类似这样的现有实现: Partitioned CloudQueue - Azure Storage Queue without scaling limits。我还建议您查看客户咨询团队的网站,他们有许多关于队列可扩展性的有趣文章(您引用的第一篇文章来自 CAT 网站)。

于 2012-06-27T09:36:35.817 回答