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#实现读取DataSet数据并显示在ListView控件中的方法
这篇文章主要介绍了C#实现读取DataSet数据并显示在ListView控件中的方法,涉及C#操作DataSet及ListView控件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下2015-10-10C#使用StreamReader和StreamWriter类读写操作文件
这篇文章介绍了C#使用StreamReader和StreamWriter类读写操作文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-05-05datatable生成excel和excel插入图片示例详解
excel导出在C#代码中应用己经很广泛了,下面讲了datatable生成excel、复制sheet页、删除sheet页、选中sheet页、另存excel文件、excel中插入图片等功能2014-01-01
最新评论