2013-01-22 53 views
1

我即将建立一个新的系统,我想要最大的可用性!我将不得不使用Windows!如何实现高度的可用性?

我会让客户使用webservices与我的系统通话。我也会从周围的系统获取数据。这些数据使用消息传递,MQ系列和MSMQ提供。 系统将产生一些使用队列发回周围系统的数据。

后新的数据已经到了系统中不同的进程将使用这些数据做不同势任务,如打印,写入数据库等

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

我认为也许NServiceBus会适合我的需要。根据上述我有几个问题。

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

欢迎任何建议!

回答

1

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

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

  1. 负载平衡的Web场的Web服务端点(2个或更多服务器)的队列和应用程序依赖于这些队列
  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]
相关问题