本文实例为大家分享了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(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论