FreeSql (三十)讀寫分離


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(); //強制讀【主庫】

系列文章導航


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM