如何使有效服务高度可用?

Jad*_*ias 8 .net load-balancing high-availability failovercluster windows-server-2008

我知道,与Network Load BalancingFailover Clustering我们可以使被动服务的高可用性.但是活跃的应用呢?

示例:我的一个应用程序以固定间隔从外部资源检索一些内容.我想象了以下场景:

  1. 在一台机器上运行它.问题:如果此实例丢失,则不会检索内容
  2. 在群集的每台计算机中运行它.问题:将多次检索内容
  3. 在集群的每台机器中都有它,但只在其中一台机器上运行它.每个实例都必须检查某种公共资源,以决定轮到它完成任务.

当我在思考解决方案#3时,我想知道应该是什么共同资源.我曾想过在数据库中创建一个表,我们可以用它来获取全局锁.

这是最好的解决方案吗?人们通常如何做到这一点?

顺便说一下,它是在Windows Server 2008上运行的C#.NET WCF应用程序

Pet*_*ean 4

针对此类问题,他们发明了消息队列。想象一下当您的集群应用程序全部监听消息队列(集群本身:-))时的情况。在某个时间点,一个实例会收到您下载外部资源的初始命令。如果成功,您的实例将刷新该消息,并发布另一条消息以供稍后执行,该时间等于“运行时间”+“间隔”。但如果实例在处理过程中死亡,那不是问题。消息在队列中回滚(超时后),并且其他实例可以拾取它。一些事务,一些消息队列

我在 Java EE 方面,因此可以帮助您了解编码细节