C#实现Nginx平滑加权轮询算法
程序员文章站
2023-12-13 11:14:22
本文实例为大家分享了c#实现nginx平滑加权轮询算法的具体代码,供大家参考,具体内容如下
代码很简单,算法很经典!
1. 定义实体类
pub...
本文实例为大家分享了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(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。