WCF Windows服务故障转移机制(两个WCF Windows服务之间的通信)

时间:2012-12-22 00:09:08

标签: wcf windows-services msmq failover

我需要为以下场景设置故障转移机制。我有一个WCF窗口服务,它将有4个实例(位置“A”将有一个主(PA)和辅助(SA)和位置“B”将有两个实例主(PB)和辅助(SB))。 在任何给定时间,每个位置中的一个实例应该启动并运行(即活动)而另一个实例是非活动的。一次考虑一个位置,辅助(非活动)应该能够PING主要(活动)以获取健康信息。如果没有发现它是“健康的”,则辅助(非活动)应该自行激活。

如果主要和次要被认为是在两台不同的机器/同一台机器上,解决方案有多么不同?

我很感激您就如何实现相同行为提出专家意见。

问候!

1 个答案:

答案 0 :(得分:2)

我认为你应该重新考虑你的故障转移策略。

配置服务以在主动 - 被动故障转移/负载平衡配置中运行存在许多问题

  1. 需要复杂的管理 - 服务需要彼此了解,这会产生复杂性和耦合。
  2. 您可以删除邮件/请求 - 例如,服务A会丢失处理邮件,然后服务B将不会处理该邮件,除非服务B有某种方式知道邮件未被处理。
  3. 我实施了两种主动 - 主动服务配置模式:过滤器完全冗余

    在过滤器配置中,消息/请求将通过网络负载平衡器传入其中一个可用服务。

    在完全冗余配置(我更喜欢的配置)中,消息/请求同时广播到所有可用服务。这意味着您将多个相同的呼叫副本发送到每个服务,并且它们会同时处理。

    这两种故障转移配置都会给您带来好处,但我认为完全冗余配置更好,因为您不需要负载均衡器。