FreeSql (三十)讀寫分離

FreeSql 支持數據庫讀寫分離,本功能是客戶端的讀寫分離行爲,數據庫服務器該怎麼配置仍然那樣配置,不受本功能影響,爲了方便描術後面講到的【讀寫分離】都是指客戶端的功能支持。html

各類數據庫的讀寫方案不一,數據庫端開啓讀寫分離功能後,讀寫分離的實現大體分爲如下幾種:nginx

一、nginx代理,配置繁瑣且容易出錯;sql

二、中件間,如MyCat;數據庫

三、在client端支持;服務器

FreeSql 實現了第3種方案,支持一個【主庫】多個【從庫】,【從庫】的查詢策略爲隨機方式。ui

若某【從庫】發生故障,將切換到其餘可用【從庫】,若已所有不可用則使用【主庫】查詢。代理

出現故障【從庫】被隔離起來間隔性的檢查可用狀態,以待恢復。code

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";

IFreeSql fsql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(FreeSql.DataType.MySql, connstr)
    .UseSlave("connectionString1", "connectionString2") //使用從數據庫,支持多個
    .Build();

select.Where(a => a.Id == 1).ToOne(); //讀【從庫】(默認)
select.Master().WhereId(a => a.Id == 1).ToOne(); //強制讀【主庫】

系列文章導航

相關文章
相關標籤/搜索