/// <summary> /// 加权轮询算法 /// </summary> public static class WeightRoundRobin { private static object obj = new object(); private static int pos = 0; static Dictionary<string, int> dic = new Dictionary<string, int> { { "192.168.1.12", 1}, {"192.168.1.13", 1 }, { "192.168.1.14", 3}, { "192.168.1.15", 1}, {"192.168.1.16", 1}, {"192.168.1.17", 1 }, { "192.168.1.18", 1}, { "192.168.1.19", 1} }; public static string roundRobin() { //獲取ip列表list List<string> it = dic.Keys.ToList(); List<String> serverList = new List<string>(); foreach (var item in it) { int weight = 0; dic.TryGetValue(item, out weight); for (int i = 0; i < weight; i++) { serverList.Add(item); } } string server = null; lock (obj) { if (pos >= serverList.Count) { pos = 0; } server = serverList[pos]; pos++; } return server; } }
时间: 2024-11-05 14:45:00