Sql Server 读写分离
链接: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)); //}