这篇文章主要为大家详细介绍了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#实现Nginx平滑加权轮询算法


基础教程推荐
猜你喜欢
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C# 解析XML和反序列化的示例 2023-04-14
- C#中的Linq to JSON操作详解 2023-06-08
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#中 Json 序列化去掉null值的方法 2022-11-18
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- Unity shader实现高斯模糊效果 2023-01-16