如何实现高可用性?

时间:2013-01-22 10:16:24

标签: windows message-queue nservicebus

我即将建立一个新系统,我希望获得最大可用性!我将不得不使用Windows!

我将让客户使用webservices与我的系统交谈。我还将从周围系统获取数据。此数据使用消息传递,MQ系列和MSMQ提供。 系统将生成一些使用队列发送回周围系统的数据。

新数据进入系统后,不同的进程将使用此数据执行不同的任务,如打印,写入数据库等。

为了实现高可用性,我计划在两台不同的机器上并行运行两个版本的系统。客户端将尝试使用正确响应的第一台服务器。 我认为一个理想的灵魂是来自两个服务器中任何一个的输入数据放在COMMON队列中(在第三台机器上?)。队列中的数据可以由两个服务器上的进程选取(想想生产者 - 消费者模式)。

我认为可能 NServiceBus 符合我的需求。根据以上内容,我有几个问题。

  • 队列可以在两台服务器之间共享吗?如果数据下降,我不希望数据卡在服务器上。我希望其他服务器继续处理。
  • 不同机器上的两个(或更多)“消费者”/进程可以从公共队列中选择数据吗?

欢迎任何建议!

2 个答案:

答案 0 :(得分:1)

NSB分销商的目的不是解决可用性问题,而是解决规模问题,分销商帮助以低成本扩展系统。

通过查看说明,您的系统包含WebService端点,多个数据库和排队基础结构。如果要实现完全高可用性,则必须确保没有单点故障。为了做到这一点,你需要,

  1. 用于Web服务端点(2台或更多服务器)的负载平衡Web场
  2. 依赖于这些队列的队列和应用程序的应用程序集群。
  3. 高度可用的数据库服务器,再次聚集。
  4. 在一切都很好的SAN之上。
  5. 但是,如果您指的是可供消费者使用,则只需确保目标队列和Web服务端点可用。并确保整体架构促进延迟执行。

    两个或多个应用程序可以远程读取MSMQ队列,但这是您不想做的事情,因为它基于DTC。这是一个真正的性能杀手。

    一些参考文献

    • [http://blogs.msdn.com/b/clustering/archive/2012/05/01/10299698.aspx] [1]
    • [http://msdn.microsoft.com/en-us/library/ms190202.aspx] [2]

答案 1 :(得分:-1)

简而言之,您需要使用经销商...... http://support.nservicebus.com/customer/portal/articles/859556-load-balancing-with-the-distributor

这里的关键是分发服务器节点是单点故障,因此您希望在群集上运行它。

相关问题