windows平台的分布式微服務解決方案(4)--數據庫的讀寫分離


本文講述的數據庫讀寫分離的實現方式,是基於前述“數據庫的負載均衡”這篇文章的內容發展而來,請先對其閱讀參考。

 

在某些大型應用系統中,往往需要把數據庫的“讀操作”與“寫操作”分為兩個數據庫(甚至兩組數據庫)分開操作,以達到讀寫分離的目的。

要實現數據庫的讀寫分離,只需在前述“數據庫的負載均衡“這篇文章的內容上做兩點修改即可實現:

一是在DeveloperSharp.xml配置文件中設置兩個DatabaseCluster節點分別對應“讀數據庫”與“寫數據庫”。

二是建立兩個“負載均衡器”類分別對應“讀的DatabaseCluster節點”與“寫的DatabaseCluster節點”。

 

 

舉例如下,我們在數據庫服務器中創建一個BaseRead數據庫專門用作讀操作,然后再創建一個BaseWrite數據庫專門用作寫操作。隨后,我們的DeveloperSharp.xml配置文件則修改為如下:

<?xml version="1.0" encoding="utf-8" ?>
<DeveloperSharp>
    <DatabaseClusterList>
        <DatabaseCluster Id="BRead">
            <Database Id="A1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseRead;Uid=sa;Pwd=123"/>
        </DatabaseCluster>
        <DatabaseCluster Id="BWrite">
            <Database Id="B1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseWrite;Uid=sa;Pwd=123"/>
        </DatabaseCluster>
    </DatabaseClusterList> 
</DeveloperSharp>

注意,其中兩個DatabaseCluster節點的Id屬性值分別為BRead與BWrite。

 

 

接着,我們再創建兩個“負載均衡器”類(Base4Read與Base4Write)分別對應BRead與BWrite。如下所示:

    [DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BRead")]
    public class Base4Read : DeveloperSharp.Structure.Model.DataLayer
    {
        //類中沒有任何代碼
    }

    [DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BWrite")]
    public class Base4Write : DeveloperSharp.Structure.Model.DataLayer
    {
        //類中沒有任何代碼
    }

此后,我們只需在相關程序代碼中區分使用Base4Read與Base4Write這兩個類,即可靈活實現數據庫的讀寫分離。

【本文采用.NET/C#語言撰寫,如需其它語言版本,請聯系作者索取。】
【本文采用Sql Server數據庫撰寫,如需其它數據庫版本,請聯系作者索取。】


免責聲明!

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



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