电子商务应用中的服务总线队列

时间:2014-08-06 06:32:48

标签: sql-server signalr azureservicebus

我们有一个在MS SQL上运行的电子商务应用程序。

我们偶尔会有闪购,一旦我们开始将所有订单插入数据库,我们网站的性能就会下降。我们可以在一分钟内插入大约1,500个订单,但在此之后该网站会挂起几分钟。只有在插入开始发生后,该站点才会挂起。

我一直在研究使用与SignalR混合的Azure Service Bus队列来管理订单流程,因为这是我一段时间以前建议的。我看到它发生的方式是(广泛的概述):

  1. 客户端在服务器上调用一个将订单插入队列的过程。
  2. 通知客户他们在队列中。
  3. 我们有一个工作流程,它处理队列中的订单并将其插入数据库。
  4. 服务器然后通知客户端订单已处理并将其移至付款页面。
  5. 我是SignalR的新手并且排队一般,所以我的问题是:

    1. 队列实际上是否会带来性能优势。如果是这样,为什么?
    2. 队列在这个实例中是否正确使用?

1 个答案:

答案 0 :(得分:1)

您提到的概述很有意义。看起来你应该能够在没有SignalR的情况下完成它,因为ServiceBus会在成功将消息插入队列后通知你。

并不是队列可以为1个请求提供更好的性能。放置到队列中的消息将被存储,直到您准备好处理它们为止。通过这样做,你不会遭受巅峰"问题,您将能够以您知道系统能够维持的速度从队列接收(可能500个订单/分钟或任何适合您的号码)。

因此,他们会在不关闭系统的情况下为每个请求提供更稳定的延迟。