当前位置: 移动技术网 > IT编程>开发语言>c# > C#实现Nginx平滑加权轮询算法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了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();
  }

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网