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));
            //}

  

posted @ 2021-08-10 13:23  萌橙  阅读(154)  评论(0编辑  收藏  举报