電商總結 構建資料庫的主從架構

2021-07-22 17:29:03 字數 1763 閱讀 4708

這段時間,一直在總結電商系統的相關基礎技術和架構,寫了很多東西。但是還是發現乙個很重要,很基礎的方面沒有講到,那就是資料庫讀寫分離的主從架構。可能發展到大型成熟的公司之後,主從架構已經落伍了,取而代之的是更加複雜的資料庫集群。但是作為乙個小型電商公司,資料庫的主從架構應該是最基礎的。任何大型的系統架構,都是不斷演進的。主從架構便是資料庫架構中,最基礎的架構。所以研究完主從架構,也就能看懂更加複雜的架構了。

首先為什麼要讀寫分離?

對於乙個小型**,可能單台資料庫伺服器就能滿足需求,但是在一些大型的**或者應用中,單台的資料庫伺服器可能難以支撐大的訪問壓力,公升級伺服器效能,成本又太高,必須要橫向擴充套件。還有就是,單庫的話,讀、寫都是操作乙個資料庫,資料多了之後,對資料庫的讀、寫效能就會有很大影響。同時對於資料安全性,和系統的穩定性,也是挑戰。

資料庫的讀寫分離的好處?

1. 將讀操作和寫操作分離到不同的資料庫上,避免主伺服器出現效能瓶頸;

2. 主伺服器進行寫操作時,不影響查詢應用伺服器的查詢效能,降低阻塞,提高併發;

3. 資料擁有多個容災副本,提高資料安全性,同時當主伺服器故障時,可立即切換到其他伺服器,提高系統可用性;

讀寫分離的基本原理就是讓主資料庫處理事務性增、改、刪操作(insert、update、delete)操作,而從資料庫處理select查詢操作。資料庫複製被用來把事務性操作導致的變更同步到其他從資料庫。以sql為例,主庫負責寫資料、讀資料。讀庫僅負責讀資料。每次有寫庫操作,同步更新到讀庫。寫庫就乙個,讀庫可以有多個,採用日誌同步的方式實現主庫和多個讀庫的資料同步。

一:sql server 讀寫分離的配置

1. 日誌傳送:sql server 2008 r2 主從資料庫同步

。 2. 事務複製:sql server 複製:事務發布

二:c# 資料庫讀寫操作

c#的請求資料庫操作,單資料庫和主從架構的資料庫還是不一樣的。主從架構的資料庫,為了保證資料一致性,一般主庫可讀可寫,從庫只負責讀,不負責寫入。所以,實際c#在請求資料庫的時候,還是要區別對待。

1. 最簡單的就是:配置兩個資料庫連線,然後在各個資料庫呼叫的位置,區分讀寫請求相應的資料庫伺服器,如下圖

(ps:此demo為本人總結,跟實際生產中的dll 不太相同,但是原理是一樣的,大家位元組總結封裝吧。)

///

///根據資料庫的語句,選擇相應的db

/// ///

//////

public

static db selectdb(string

sql, commandtype commandtype)

else

}

同時,增加相關的資料庫配置

<?xml version="

1.0" encoding="

utf-8

" ?>

data source=192.168.99.242; initial catalog=dbtest; uid=sa;pwd=test123; multipleactiveresultsets=true

data source=192.168.99.241; initial catalog=dbtest; uid=sa;pwd=test123; multipleactiveresultsets=true

電商總結(三)構建資料庫的主從架構

這段時間,一直在總結電商系統的相關基礎技術和架構,寫了很多東西。但是還是發現乙個很重要,很基礎的方面沒有講到,那就是資料庫讀寫分離的主從架構。可能發展到大型成熟的公司之後,主從架構已經落伍了,取而代之的是更加複雜的資料庫集群。但是作為乙個小型電商公司,資料庫的主從架構應該是最基礎的。任何大型的系統架...

電商總結(三)構建資料庫的主從架構

這段時間,一直在總結電商系統的相關基礎技術和架構,寫了很多東西。但是還是發現乙個很重要,很基礎的方面沒有講到,那就是資料庫讀寫分離的主從架構。可能發展到大型成熟的公司之後,主從架構已經落伍了,取而代之的是更加複雜的資料庫集群。但是作為乙個小型電商公司,資料庫的主從架構應該是最基礎的。任何大型的系統架...

電商總結(三)構建資料庫的主從架構

這段時間,一直在總結電商系統的相關基礎技術和架構,寫了很多東西。但是還是發現乙個很重要,很基礎的方面沒有講到,那就是資料庫讀寫分離的主從架構。可能發展到大型成熟的公司之後,主從架構已經落伍了,取而代之的是更加複雜的資料庫集群。但是作為乙個小型電商公司,資料庫的主從架構應該是最基礎的。任何大型的系統架...