15

我试图了解如何使 Azure 服务总线主题可扩展以处理来自 50 多个不同客户端的 >10,000 个请求/秒。我在 Microsoft 找到了这篇文章 - http://msdn.microsoft.com/en-us/library/windowsazure/hh528527.aspx。这为扩展 Azure 服务总线提供了很多良好的输入,例如创建多个消息工厂、异步发送和接收、批量发送/接收。

但所有这些输入都来自发布者和订阅者客户端的角度。如果运行 Topic 的节点无法处理大量事务怎么办?我如何监控它?如何让主题在多个节点上运行?对此的任何意见都会有所帮助。

还想知道是否有人对主题/队列进行了任何容量测试,我很想看到这些结果......

谢谢,普拉萨纳

4

4 回答 4

13

如果您每秒需要 10K 或 100K 或 1M 或更多请求,请查看高速公路上正在执行的操作。更多的交通,更多的车道。

通过在多个实体之间划分流量,您可以有效地从服务总线中获得任意流量。服务总线提供了许多关于可靠性的保证,例如,一旦我们从您那里获取消息,我们就不会丢失消息,或者我们分配无间隙序列号,并且这会对单个实体(如单个主题)产生吞吐量影响。这就像高速公路只能每小时处理 X 辆汽车。创造更多的车道。

于 2012-08-30T00:19:07.017 回答
8

自从这些回复以来,微软已经发布了大量的新功能。

  1. Azure自动缩放可以监视队列中的消息(或 CPU 负载)并启动或停止实例以维护该目标。
  2. 服务总线引入了分区队列(和主题)。这使您可以通过多个队列发送消息,但对于您的 API,它们看起来就像一个队列。显着增加队列的吞吐量。

在你这样做之前,我建议你尝试: -

  • 异步和批量写入队列。
  • 更改 Reads 上的 Prefetch 参数。
  • 还要查看 Receive.OnMessage() 以确保您在可用的毫秒内收到消息。

这会将您的性能从每秒约 5 条消息提高到每秒 100 条或 1,000 条。

于 2014-03-17T02:44:59.973 回答
3

服务总线有其限制“容量和配额”,请查看这篇文章以获得对这些的非常好的概述:https ://docs.microsoft.com/en-gb/azure/service-bus-messaging/service-bus-天蓝色和服务总线队列比较对比

如果你有一个可以突破 Azure 服务总线边界的用例,我建议你联系当地的 MSFT 专家,MSFT 在雷德蒙德(世界各地)有专门的团队可以帮助你大规模设计和突破这些边界,这是 Windows Azure CAT(客户咨询团队)。他们的目标是解决现实世界的客户问题,听起来你可能有一个......

您需要进行性能和负载测试,以根据您的具体情况获得上述问题的所有答案。

Azure CAT 团队有大量关于使用服务总线(通常是 Azure)进行容量和负载测试的指标,这些指标并不总是公开可用的,所以如果可以的话,请再次联系...

于 2012-08-29T09:18:57.983 回答
1

如果它可以处理这么多请求,那么您要确保以不会达到主题最大大小的方式接收消息。您可以在 Azure 中使用辅助角色的多个实例来侦听特定订阅,这样您就能够更快地处理消息,而不会接近最大大小。

于 2012-08-29T21:35:29.063 回答