C# .net主动-被动群集算法

C# .net主动-被动群集算法,c#,.net,cluster-computing,high-availability,C#,.net,Cluster Computing,High Availability,我有许多Windows服务器。我希望在每个服务器上运行同一个Windows服务(用.NET编写)的一个副本,以便在任何时候只有一个服务器是“主动”的,而所有其他服务器都是被动的。如果主动windows服务关闭,那么在很短的时间后,剩余的被动windows服务中只有一个将变为主动 有什么简单的方法可以做到这一点吗?好吧,你需要让它们保持同步,最简单的方法是在数据库中的某个地方有一个他们都可以访问的条目。让主动服务每隔这么多分钟更新一行等。如果在特定时间内未找到更新,则其他服务可以将其视为活动更新已

我有许多Windows服务器。我希望在每个服务器上运行同一个Windows服务(用.NET编写)的一个副本,以便在任何时候只有一个服务器是“主动”的,而所有其他服务器都是被动的。如果主动windows服务关闭,那么在很短的时间后,剩余的被动windows服务中只有一个将变为主动


有什么简单的方法可以做到这一点吗?

好吧,你需要让它们保持同步,最简单的方法是在数据库中的某个地方有一个他们都可以访问的条目。让主动服务每隔这么多分钟更新一行等。如果在特定时间内未找到更新,则其他服务可以将其视为活动更新已脱机。当然,这里的问题是,如果数据库离线,那么服务将出现问题,因此可能是单点故障。不过,您也可以通过将db集群化来缓解这一问题


您也可以让它们像点对点网络一样相互通信,但这将是更多的工作,基本上是相同的结果,尽管这种方法确实有它的好处。

集群数据库方法是我目前的解决方案。这是一个我想要的对等解决方案,但没有想到一种方法来避免可能导致多个活动的时间问题。最简单的方法是让所有人检查服务是否在不同的时间间隔处于活动状态。一旦一个服务意识到没有活动服务在运行,让它与所有其他服务进行通信,并告诉他们“嘿,我知道了,不需要醒来。”当其他服务睡觉时,它会变成活动服务。