前言:本系列文章適合有初/中級.NET知識的同學閱讀(請在電腦上打開頁面,獲取更好的閱讀效果)。
(1)本系列文章,旨在講述研發一個中大型項目所需要了解的一系列“基本構件”,並提供這些“基本構件”在全網的【最簡單】、【最快速】使用方法!!(並不深究技術原理)
(2)通過閱讀本系列文章,能讓你在正規“項目研發”方面快速入門+進階,並能達成“小團隊構建大網站”的目的。
(3)本系列文章采用的技術,已成功應用到人工智能、產業互聯網、社區電商、游戲、金融風控、智慧醫療、等項目上。
本文講述的數據庫讀寫分離的實現方式,是基於前述“數據庫的負載均衡”這篇文章的內容發展而來,請先對其閱讀參考。
在某些大型應用系統中,往往需要把數據庫的“讀操作”與“寫操作”分為兩個數據庫(甚至兩組數據庫)分開操作,以達到讀寫分離的目的。
要實現數據庫的讀寫分離,只需在前述“數據庫的負載均衡“這篇文章的內容上做兩點修改即可實現:
一是在DeveloperSharp.json/xml配置文件中設置兩個DatabaseCluster節點分別對應“讀數據庫”與“寫數據庫”。
二是建立兩個“負載均衡器”類分別對應“讀的DatabaseCluster節點”與“寫的DatabaseCluster節點”。
舉例如下,我們在數據庫服務器中創建一個BaseRead數據庫專門用作讀操作,然后再創建一個BaseWrite數據庫專門用作寫操作。隨后,我們的DeveloperSharp.json/xml配置文件則做相應修改。
若是在.Net Core環境下,DeveloperSharp.json修改如下:
{ "DeveloperSharp": { "DatabaseClusterList": [ { "Id":"BRead", "DatabaseCluster": [ { "Id":"A1", "Enable":"true", "Weight":"100", "DatabaseType":"SqlServer", "ConnectionString":"Server=localhost;Database=BaseRead;Uid=sa;Pwd=123" } ] }, { "Id":"BWrite", "DatabaseCluster": [ { "Id":"B1", "Enable":"true", "Weight":"100", "DatabaseType":"SqlServer", "ConnectionString":"Server=localhost;Database=BaseWrite;Uid=sa;Pwd=123" } ] } ] } }
若是在.Net Framework環境下,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中大型項目開發必備(1)–UUID全球通用唯一識別碼
- .NET中大型項目開發必備(2)–CORS跨域訪問
- .NET中大型項目開發必備(3)–數據庫的負載均衡
- .NET中大型項目開發必備(4)–數據庫的讀寫分離
- .NET中大型項目開發必備(5)–Web服務/WebApi的負載均衡
- .NET中大型項目開發必備(6)–IUtility工具介紹
- .NET中大型項目開發必備(7)–DataAccess數據庫訪問技術
- .NET中大型項目開發必備(8)–高效分頁
- .NET中大型項目開發必備(9)--http請求調用(Post與Get)
- .NET中大型項目開發必備(10)--圖片的裁剪、縮放、與加水印
- .NET中大型項目開發必備(11)--使用Redis緩存
- .NET中大型項目開發必備(12)--使用MQ消息隊列
- .NET中大型項目開發必備(13)--DataAccess數據庫訪問技術(續)
- .NET中大型項目開發必備(14)--數據庫的負載均衡(續)