天天看點

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

好多年沒寫關于此架構的新功能的介紹了,這些年一直在默默地更新,從nuget上的記錄就可以看出來:

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

這幾天在看java的一些東西,除了覺的java和.net的相似度實在太高之外,就是java太原始,急需被拯救。

之後又回到.net的思維來,想着怎麼在架構裡實作讀寫分離控制請求切換。

之前幾個月一直都有在思考,想及對架構現有的代碼改動可能較大,是以遲遲沒怎麼下手。

最近終于在廁所蹲下的一瞬間,靈光一閃,感覺思緒來了,然後一鼓作氣,就把它給作了。

a:mssql的複制訂閱;

b:mysql的master-slave配置ini。

c:oracle自身元件或第三方軟體。

具體怎麼實作,請以讀寫分離為關鍵字自行google。

a:通過代碼控制連結的切換(常用)。

b:通過中間第三方插件實作(需要放棄治療:資料一緻性)。

c:通過資料庫驅動實作(沒怎麼見着)。

由于主從資料庫的同步時間差,必然産生資料一緻性這個問題,是以通常還是會回到業務代碼上控制。

在底層:dbcommand的三個方法中:

配置設定讀:executescalar和executereader

配置設定寫:executenonquery

a:事務時:全配置設定到主資料庫

b:非事務時:同一個連結,隻要産生寫主資料庫,後續讀仍挂在主資料庫(初步解決資料一緻性問題)。

示例場景如:使用者寫完部落格後(寫),跳轉到檢視文章頁面(讀)。

很明顯,如果主從庫還沒來得及同步,你要提示使用者:緩存正在同步,請等待n秒後重新整理看看?

a:這場景,不是同一個連結,卻是同一個人。

b:需要把同一個人産生寫主資料庫操作後,必須在n秒内的操作都仍挂在主資料庫。

a:sessionid。

b:cookie

c:線程id

至此,讀寫分離的相關功能就算完成了。

下面示範讀寫分寫在asp.net aries 架構上的使用示例:

1:從svn下載下傳asp.net aries 開源架構的源碼。

2:確定packages下的cyq.data 版本為v5.6以上,如果版本不夠新,上nuget搜cyqdata更新。

3:在資料庫中建立好主從庫訂閱複制功能(mssql),示範就在同一台電腦了,copy的為從(讀)資料庫。

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

4:web.config中添加一條資料庫連結

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

ps說明:

如果主資料庫name是xxxx,那麼從庫的配置為:xxxx_slave1、xxxx_slave2、xxxx_slave3.....xxxx_slaven

搞定收功,使用就是這麼簡單,隻要配資料庫連結,就一切就ok了。

1:chorme浏覽器,登陸後編輯使用者資訊(此時操作的主資料庫):

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

2:儲存後跳轉到清單頁面:此時還是操作的主資料庫:

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

3:在firefox浏覽器裡立即重新整理檢視:讀的是從資料庫,此時主從還沒同步好,是以還是舊資料。

CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結
CYQ.Data V5 資料庫讀寫分離功能介紹前言資料庫讀寫分離的三步曲代碼解決主(寫)從(讀)請求配置設定與資料一緻性CYQ.Data讀寫分離的使用示範界面運作後截圖隐藏技能:總結

通過配置xxxx_bak,當主資料庫挂了時,會自動切換到備份資料庫。

于是架構就變成1主+1備+n從的方式。

用了此架構,你會發現1行業務代碼都無需要改,隻需config檔案配上n個從資料的連結,資料庫讀寫分離這種傳說中的東西,馬上就屬于你了。

不要問我這幾年為啥這麼低調沒怎麼推廣此架構,隻是看淡了,不争,最好用的架構隻屬于少數的有緣人。

補充一條好消息:架構從v5.5.6.1版本開始,mssql資料庫可以免費使用,不再需要授權。

對于免費開放mssql使用的消息,喜歡就贊一個!

本文原創發表于部落格園,作者為路過秋天,原文連結:http://www.cnblogs.com/cyq1162/p/5617121.html