1

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

如果将 Primary 和 Secondary 视为在两台不同的机器/同一台机器本身上,解决方案会有多大不同?

对于如何实现相同行为,我将不胜感激您的专家意见。

问候!

4

1 回答 1

2

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

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

  1. 需要复杂的管理 - 服务需要相互了解,这会产生复杂性和耦合。
  2. 您可以丢弃消息/请求 - 例如,服务 A 在处理消息时失败,那么服务 B 将不会处理该消息,除非服务 B 有某种方式知道该消息未被处理。

我已经实现了两种主动-主动服务配置模式:依次过滤完全冗余

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

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

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

于 2012-12-22T12:43:25.937 回答