Azure Service Bus可伸缩性

时间:2012-08-29 08:16:28

标签: azure scalability servicebus

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

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

还想知道是否有人使用Topic / Queue进行了任何容量测试,我很想看到这些结果......

谢谢, 人员Prasanna

4 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:8)

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

  1. Azure 自动扩展可以监控队列中的消息(或CPU负载) 并启动或停止实例以维持该目标。
  2. Service Bus推出了分区队列(& topics)。这允许您通过多个队列发送消息,但它们看起来像是您的API的单个队列。显着增加队列的吞吐量。
  3. 在您这样做之前,我建议您尝试: -

    • Async&批量写入队列。
    • 更改“读取”上的“预取”参数。
    • 另请查看Receive.OnMessage()以确保您获得可用的毫秒消息。

    这样可以将你的性能从每秒约5条消息提高到每秒100或者每秒1000次。

答案 2 :(得分:2)

服务总线有其“容量和配额”的限制,请查看本文以获得对这些内容的非常好的概述:http://msdn.microsoft.com/en-us/library/windowsazure/hh767287.aspx

我建议您联系当地的MSFT专家,如果您的用例将突破Azure Service Bus的界限,MSFT在Redmond(世界各地)都有专门的团队,可以帮助您设计和推动这些界限大规模,这是Windows Azure CAT(客户咨询团队)。他们的目标是解决现实世界中的客户问题,听起来你可能有一个......

您需要执行并加载测试,以根据您的具体情况获得上述问题的所有答案。

Azure CAT团队在服务总线(一般是Azure)上有大量关于容量和负载测试的指标,这些指标并非总是公开可用,所以如果可以,请再次联系...

答案 3 :(得分:1)

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

相关问题