使用MS Queue的好处

时间:2010-10-06 08:09:06

标签: scalability msmq reliability

如何使用像MSMQ这样的东西有助于提高可扩展性和可靠性? 在一个Web服务器到一个数据库服务器的情况下,它有帮助吗?

任何评论或链接将不胜感激。 感谢

编辑: Web服务器将运行WCF,公开SOAP样式的Web方法。展望未来,还有可能存在多个Web服务器。

3 个答案:

答案 0 :(得分:2)

队列(特别是容错和持久队列)允许组件之间的通信,并最终允许队列编写器与读取器异步。这意味着可以根据队列利用率扩展读取器和编写器。

考虑为Web请求提供服务的简单示例。如果将大量操作推入队列,则另一组组件可以读取队列并处理请求,而不会影响编写器,从而允许HTTP侦听器为更多请求提供服务,因为它没有被绑定。随着队列中项目数量的增加,可以使更多读者上线处理它们。

在可靠性方面,如果队列可靠,则组件之间的消息不会丢失,因此通信本质上更可靠。读者和作者可能会起伏不定,但只要消息是安全的,那么你就拥有了比消息丢失更可靠的系统的基础。

实际上,您创建的系统具有较低的运行时耦合,因此一点处的故障不一定会在系统范围内传播。允许更容易地采用容错策略。

答案 1 :(得分:1)

与数据库通信的Web服务器看起来不像MSMQ可以从中受益的情况。

但是,如果您有Web服务器,域服务器和数据库服务器,那么它们就完全不同了。在这种情况下,Web服务器可以通过MSMQ与域服务器通信(保证传送和事务方式 - 可靠性)。当您引入其他Web服务器时,体系结构不会发生一些变化,因此可实现可伸缩性。

总是很好地阅读CQRS。

答案 2 :(得分:0)

是的,如果您需要异步处理并且合理保证将执行放置在队列上的任务,则1个Web /数据库服务器方案中存在值。它不提供高可用性(运行MSMQ的服务器可能会失败,等等)。

如果您需要更多信息,请提供特定于实施的详细信息。