Azure Service Bus可伸缩性

phe*_*bar 13 scalability servicebus azure

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

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

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

谢谢,Prasanna

Cle*_*ers 12

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

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


小智 8

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

  1. Azure Auto-Scale可以监视队列(或CPU负载)中的消息,并启动或停止实例以维护该目标.
  2. Service Bus引入了Partitioned Queue(和主题).这允许您通过多个队列发送消息,但它们看起来像是您的API的单个队列.显着增加队列的吞吐量.

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

  • Async和Batched写入队列.
  • 更改Reads上的Prefetch参数.
  • 另请查看Receive.OnMessage()以确保您获得可用的毫秒消息.

这样可以将你的性能从每秒约5个消息提高到每秒100或1000个.