C#实现Nginx平滑加权轮询算法

 更新时间:2018年07月24日 09:23:02   作者:Gangle  
这篇文章主要为大家详细介绍了C#实现Nginx平滑加权轮询算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C#实现Nginx平滑加权轮询算法的具体代码,供大家参考,具体内容如下

代码很简单,算法很经典! 

1. 定义实体类

public struct ServerConfig
 {
  //初始权重
  public int Weight {get;set;}

  //当前权重
  public int Current {get;set;}

  //服务名称
  public string Name {get;set;}
 }

2. 算法

public static int NextServerIndex(ServerConfig[] serverConfigArray)
 {
  int index = -1;
  int total = 0;
  int size = serverConfigArray.Count();
  for(int i = 0; i< size; i++)
  {
   serverConfigArray[i].Current += serverConfigArray[i].Weight;
   total += serverConfigArray[i].Weight;
   if (index == -1 || serverConfigArray[index].Current < serverConfigArray[i].Current)
   {
    index = i;
   }
  }
  serverConfigArray[index].Current -= total;
  return index;
 }

3.调用

static void Main(string[] args)
  {       
    var sv = new ServerConfig[] {
      new ServerConfig{Name="A", Weight = 4},
      new ServerConfig{Name="B", Weight = 2},
      new ServerConfig{Name="C", Weight = 1}
    };
    int index = 0;
    int sum = sv.Sum(m => m.Weight);
    for(int i=0; i<sum; i++)
    {
      index = NextServerIndex(sv);
      Console.WriteLine("{0}{1}", sv[index].Name, sv[index].Weight);
    }
    Console.Read();
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#使用NPOI进行Excel和Word文件处理

    C#使用NPOI进行Excel和Word文件处理

    NPOI是一个基于.NET的API,用于读写微软的OLE 2 Compound Document formats,如Microsoft Office Excel和Word,下面就跟随小编一起来看看它的具体操作吧
    2024-03-03
  • c#基础系列之ref和out的深入理解

    c#基础系列之ref和out的深入理解

    有过C#基础知识的都应该清楚Ref和Out的使用方法,所以下面这篇文章主要给大家介绍了关于c#基础系列之ref和out的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • C#中执行SQL的几种方法讲解

    C#中执行SQL的几种方法讲解

    这篇文章介绍了C#中执行SQL的几种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#实现在线更新软件

    C#实现在线更新软件

    winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,面对这个实际问题,在最近的一个小项目中,本人设计了一个通过软件实现自动升级技术方案,弥补了这一缺陷,有较好的参考价值
    2015-05-05
  • 自定义时间格式转换代码分享

    自定义时间格式转换代码分享

    自定义时间格式转换,如"2012年5月14日"的日期字符串,大家参考使用吧
    2013-12-12
  • 小菜编程成长记(一 面试受挫——代码无错就是好?)

    小菜编程成长记(一 面试受挫——代码无错就是好?)

    小菜编程成长记(一 面试受挫——代码无错就是好?)...
    2006-10-10
  • 详解C#中的out和ref

    详解C#中的out和ref

    本文主要介绍了out和ref的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • C#字符串的常用操作工具类代码分享

    C#字符串的常用操作工具类代码分享

    这篇文章主要介绍了C#字符串的常用操作工具类代码分享,需要的朋友可以参考下
    2014-04-04
  • ZooKeeper 实现分布式锁的方法示例

    ZooKeeper 实现分布式锁的方法示例

    这篇文章主要介绍了ZooKeeper 实现分布式锁的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • C# WebApi Get请求方式传递实体参数的方法示例

    C# WebApi Get请求方式传递实体参数的方法示例

    这篇文章主要给大家介绍了关于C# WebApi Get请求方式传递实体参数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论