高可用與負載平衡是兩種不同的技術,卻經常被混淆。
一、服務的型別
1. 無狀態的服務(stateless service)
對單次請求的處理,不依賴其他請求。
處理一次請求所需的全部資訊都包含在這個請求裡或者可以從外部獲取(例如,資料庫),服務本身不儲存任何資訊。
iis(web服務)可以設計成無狀態的服務,可以實現池化(負載均衡),從而橫向擴充套件。
2. 有狀態的服務(stateful service)
會在自身儲存一些資料。
先後的請求是有關聯的,通常用於實現事務。
資料庫服務一般是有狀態的服務。
二、區別
1. 高可用
高可用是針對「有狀態」的服務,其目標是為了減少硬體或軟體故障造成的影響,保持業務的連續性,從而將使用者可以察覺到的停機時間送到最少。
2. 負載平衡
負載平衡是針對「無狀態」的服務,其目標是通過對服務的「池化」(多個服務,形成乙個「池」)使客戶端的請求被分攤到多個服務。
三、聯絡
高可用技術中兼具一部分的負載分攤功能。例如,alwayson可用性組的輔助副本可以提供唯讀訪問,從而分攤一部分的唯讀請求給報表等應用程式。
負載均衡給客戶端的感覺就像高可用技術一樣,保持了業務的連續性。例如,客戶端連線到iis池,池中的某台iis伺服器發生故障後,客戶端的連線被重定向到池中的其它iis伺服器。
資料庫產品幾乎都沒有宣稱自己的「產品功能」(feature)中包含有負載均衡、讀寫分離等技術特性。對於sql server來說,負載分攤、讀寫分享應當作為乙個解決方案(solution)來實現。例如,指定乙個唯讀副本專門用來查詢,應當從業務需求角度事先進行設計。
四、sql server 負載分離示例
生產環境通常在設計時就要考慮到未來的資料增長,並且預留負載分離的介面。
以下案例顯示了一家ota企業在遇到資料庫規模迅速增長時,依次實施了三期部署。
第一期:資料庫將所有資料都存放在一台伺服器。
第二期:進行了負載分離,將原先的單台伺服器根據業務型別進行分離。
第三期:繼續進行分離。
SQL Server 高可用性(七)複製
複製是乙個開發範疇的技術,但是也可以像日誌傳送一樣作為高可用技術的乙個後備選項。一 複製的拓撲 二 複製的衝突處理 在執行複製時,源資料庫與目標資料庫都是敞開式的,因此在寫入記錄時可能發生衝突。為解決衝突,常用的方法有以下兩種 1.合併複製 合併複製允許存在衝突。當衝突發生時,合併複製將比較這些記錄...
SQL Server 高可用性(七)複製
複製是乙個開發範疇的技術,但是也可以像日誌傳送一樣作為高可用技術的乙個後備選項。一 複製的拓撲 二 複製的衝突處理 在執行複製時,源資料庫與目標資料庫都是敞開式的,因此在寫入記錄時可能發生衝突。為解決衝突,常用的方法有以下兩種 1.合併複製 合併複製允許存在衝突。當衝突發生時,合併複製將比較這些記錄...
sql server 高可用性技術總結
原文 sql server 高可用性技術總結 應用場景 負載均衡 提供副本讀,寫操作。分割槽將歷史資料複製到其它表中。授權,將資料提供它人使用。資料合併。故障轉移。優點 實現簡單。資料同時同步,幾乎達到映象。可以實現對某些表,或表資料過濾進行複製。缺點 不適合做高可用,因為整個庫複製影響效能。不支援...