Skip to content

C#客户端 读写分离

Yenan Wang edited this page Sep 29, 2016 · 1 revision

读写分离

在读写分离模式中,Master(主库)一般为写库,Slave(从库)一般为读库,Slave的加入用于降低Master的读请求,缓解Master的IO压力。

读写分离配置

<add name="dao_test_m" databaseType="Master" connectionString="dao_test"/>

<add name="dao_test_s1" databaseType="Slave" connectionString="dao_test"/>

  • C# Dal Client当前支持单Master多Slave的读写分离方式,多个Slave之间默认采取随机访问策略,同时也支持按比率的访问策略(TBD)。
  • 由于Slave与Master之间存在复制分发延时,为了避免数据不同步造成的影响,所以默认情况下,即使配置了读写分离,但所有数据库请求仍旧是优先访问Master,必须通过代码显式指定访问Slave,C# Dal Client才会优先访问Slave数据库。

优先访问Slave数据库

var result = dao.SelectDataTable("select 1", null, null, OperationType.Read);

  • 通过调用支持OperationType枚举参数的重载方法,并设定枚举值为OperationType.Read。

实现自定义的读写分离策略

IReadWriteSplitting