FreeSql 支持數據庫讀寫分離,本功能是客戶端的讀寫分離行為,數據庫服務器該怎么配置仍然那樣配置,不受本功能影響,為了方便描術后面講到的【讀寫分離】都是指客戶端的功能支持。
各種數據庫的讀寫方案不一,數據庫端開啟讀寫分離功能后,讀寫分離的實現大致分為以下幾種:
1、nginx代理,配置繁瑣且容易出錯;
2、中件間,如MyCat;
3、在client端支持;
FreeSql 實現了第3種方案,支持一個【主庫】多個【從庫】,【從庫】的查詢策略為隨機方式。
若某【從庫】發生故障,將切換到其他可用【從庫】,若已全部不可用則使用【主庫】查詢。
出現故障【從庫】被隔離起來間隔性的檢查可用狀態,以待恢復。
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" +
"Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10";
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.MySql, connstr)
.UseSlave("connectionString1", "connectionString2") //使用從數據庫,支持多個
.Build(); //請務必定義成 Singleton 單例模式
fsql.Select<T>().Where(a => a.Id == 1).ToOne(); //讀【從庫】(默認)
fsql.Select<T>().Master().WhereId(a => a.Id == 1).ToOne(); //強制讀【主庫】
系列文章導航
-
(三十)讀寫分離