时间:2021-05-20
本文实例为大家分享了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(); }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
轮询算法简介在工作中很多人都使用到了nginx,对nginx得配置也是烂熟于心,今天我主要想介绍一下nginx轮询算法得几种底层实现方式。简单轮询算法这种算法比
本文实例讲述了PHP实现负载均衡的加权轮询方法。分享给大家供大家参考,具体如下:1.负载均衡算法有哪些?轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对
导读:本文给出了使用C#实现选择发排序的算法usingSystem;namespaceSelectionSorter{publicclassSelectionS
导读:本文介绍了使用C#实现插入法排序的算法usingSystem;namespaceInsertionSorter{publicclassInsertionS
c#轮询算法 这两天做东西,业务上有个特殊的需求,在用户访问页面的时候,针对某一行代码进行控制,按照概率来进行显示,我做的是针对当前页面的曝光进行处理,曝光代