1

我即将建立一个新系统,我想要最大的可用性!我将不得不使用Windows!

我将让客户使用 Web 服务与我的系统交谈。我还将从周围的系统中获取数据。该数据使用消息传递、MQ 系列和 MSMQ 传递。系统将产生一些数据,这些数据使用队列发送回周围的系统。

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

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

我认为也许 NServiceBus会满足我的需求。根据上述,我有几个问题。

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

欢迎任何建议!

4

2 回答 2

1

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

通过查看描述,您的系统由 WebService 端点、多个数据库和排队基础设施组成。如果要实现完全的高可用性,则必须确保没有单点故障。为了做到这一点,你需要,

  1. 用于 Web 服务端点(2 个或更多服务器)的负载平衡 Web 场
  2. 队列和依赖于这些队列的应用程序的应用程序集群。
  3. 高度可用的数据库服务器,再次集群。
  4. 最重要的是一个好的 SAN。

但是,如果您指的是对消费者可用,您只需要确保目标队列和 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]
于 2013-01-26T08:36:12.473 回答
-1

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

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

于 2013-01-22T18:53:05.737 回答