链接:https://blog.csdn.net/qq_36445227/article/details/108889448
负载均衡代码:
public class ConnString
{
private static List<string> ReadConnStringList = new List<string>() { "ReadDB1", "ReadDB2", "ReadDB3" };//模拟连接字符串
private static string WriteConnString = "WriteDB";
private static int index = 0;
private static List<int> Scoure = new List<int>() { 1, 2, 6 };
private static List<string> ReadScourList = new List<string>() { };
static ConnString()
{
int tempindex = 0;
foreach (int item in Scoure)
{
for (int i = 0; i < item; i++)
{
ReadScourList.Add(ReadConnStringList[tempindex]);
}
tempindex++;
}
}
public static string GetConnStringMethod(CnnEnum cnn )
{
string str = string.Empty;
switch (cnn)
{
case CnnEnum.Read:
str = GetReadStr();
break;
case CnnEnum.Write:
str=WriteConnString;
break;
default:
break;
}
return str;
}
/// <summary>
/// 轮询策略
/// </summary>
/// <returns></returns>
public static string GetReadStr()
{
// return ReadConnStringList[index++% ReadConnStringList.Count];//轮询策略
return ReadScourList[new Random(index++).Next(0, ReadScourList.Count)];//权重策略
}
public enum CnnEnum
{
Read,
Write
}
}
测试代码
//for (int i = 0; i < 10; i++)
//{
// Console.WriteLine(ConnString.GetConnStringMethod(ConnString.CnnEnum.Read));
//}