我知道,使用Network Load BalancingFailover Clustering,我们可以使被动服务高度可用。但是事件应用呢?

示例:我的一个应用程序以固定的间隔从外部资源检索了一些内容。我已经想象过以下情况:

  • 在一台机器上运行它。问题:如果此实例掉落,将无法检索内容
  • 在集群的每台计算机上运行它。问题:内容将被多次检索
  • 在群集的每台计算机上都有它,但只能在其中一台计算机上运行它。每个实例都必须检查某种公共(public)资源,以决定是否轮到自己执行任务。

  • 当我在考虑解决方案3时,我想知道应该使用什么通用资源。我已经考虑过在数据库中创建一个表,我们可以在其中使用它来获取全局锁。

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

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

    最佳答案

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

    我在Java EE方面,可以为您提供详细的编码信息

    关于.net - 如何使活跃的服务高度可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2655933/

    10-12 18:52