【问题标题】:WCF Windows Service failover mechanism (Communication between two WCF windows services)WCF Windows 服务故障转移机制(两个 WCF Windows 服务之间的通信)
【发布时间】:2012-12-09 13:05:59
【问题描述】:

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

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

非常感谢您对如何实现相同行为的专家意见。

问候!

【问题讨论】:

    标签: wcf windows-services msmq failover


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 感谢休的回复。因此,根据您的建议,任何一个选项都必须在服务器中进行配置,而不是对我现有的服务进行更多更改,这对吗?
    • 嗨@DotNetDude 是的,它是正确的。两种主动-主动配置都应该可以在不改变实际服务本身的情况下实现。请注意,在完全冗余的情况下,您的目标端点将需要能够处理重复请求(当您正在广播时)。
    • 休,给你更多的信息。就我而言,Windows 服务是生产者服务。在启动服务时,会自动调用定期(每 15 秒)返回一组值的方法。另外,因为我有两个实例在同一个地理区域和同一个域中运行。您如何看待两者之间发生的故障转移?
    • 这取决于您是在谈论故障转移还是灾难恢复。在我上面的示例中,故障转移只是为您提供高可用性 - 并降低业务中断 - 而不是 DR。显然,服务越不同,整个系统对本地故障的弹性越大,但我认为将两者托管在同一域/地理区域内是完全令人满意的。对于灾难恢复,您可能需要让基础架构和运营人员参与解决方案,并且可能必须在不同的域/区域中复制相同的高可用性配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多