.net - 如何让主动服务高可用?

标签 .net windows-server-2008 load-balancing high-availability failovercluster

我知道 Network Load BalancingFailover Clustering我们可以制作被动服务高度可用。但是 呢?活跃的应用程序 ?

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

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

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

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

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

    最佳答案

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

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

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

    相关文章:

    php - 如何为 MySQL 远程数据库连接设置 Windows Server 2008?

    c++ - 找不到 ahadmin.h 文件

    mysql - 有没有办法将 DB 用户密码传递到命令行工具 mysqladmin 中?

    kubernetes - Traefik 负载平衡重量未按预期工作

    multithreading - 负载平衡SOAP请求

    c# - WPF如何优化布局/渲染周期?

    .net - 提供 "hot swap"/在运行时更改程序集的能力,而无需重新启动进程

    c# - 如何在 C# 的 getter 和 setter 方法中进行验证?

    c# - 为什么 JSON.NET 在反序列化时不使用继承

    amazon-web-services - AWS EC2 Autoscaling : Defining a master instance, 永不终止