負(fù)載均衡集群是由一組相互獨立的計算機(jī)系統(tǒng)構(gòu)成,通過常規(guī)網(wǎng)絡(luò)或?qū)S镁W(wǎng)絡(luò)進(jìn)行連接,由路由器銜接在一起,各節(jié)點相互協(xié)作、共同負(fù)載、均衡壓力,對客戶端來說,整個群集可以視為一臺具有超高性能的獨立服務(wù)器。
1、實現(xiàn)原理實現(xiàn)數(shù)據(jù)庫的負(fù)載均衡技術(shù),首先要有一個可以控制連接數(shù)據(jù)庫的控制端。在這里,它截斷了數(shù)據(jù)庫和程序的直接連接,由所有的程序來訪問這個中間層,然后再由中間層來訪問數(shù)據(jù)庫。
這樣, 我們就可以具體控制訪問某個數(shù)據(jù)庫了,然后還可以根據(jù)數(shù)據(jù)庫的當(dāng)前負(fù)載采取有效的均衡策略,來調(diào)整每次連接到哪個數(shù)據(jù)庫。
2、實現(xiàn)多據(jù)庫數(shù)據(jù)同步對于負(fù)載均衡,最重要的就是所有服務(wù)器的數(shù)據(jù)都是實時同步的。這是一個集群所必需的,因為,如果數(shù)不據(jù)實 時、不同步,那么用戶從一臺服務(wù)器讀出的數(shù)據(jù),就有別于從另一臺服務(wù)器讀出的數(shù)據(jù),這是不能允許的。所以必須實現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)同步。
這樣,在查詢的時候就可以有多個資源,實現(xiàn)均衡。
比較常用的方法是Moebiusfor SQL Server集群,Moebius for SQL Server集群采用將核心程序駐留在每個機(jī)器的數(shù)據(jù)庫中的辦法,這個核心程序稱為Moebius for SQL Server中間件,主要作用是監(jiān)測數(shù)據(jù)庫內(nèi)數(shù)據(jù)的變化并將變化的數(shù)據(jù)同步到其他數(shù)據(jù)庫中。數(shù)據(jù)同步完成后客戶端才會得到響應(yīng),同步過程是并發(fā)完成的,所以同步到多個數(shù)據(jù)庫和同步到一個數(shù)據(jù)庫的時間基本相等;
另外同步的過程是在事務(wù)的環(huán)境下完成的,保證了多份數(shù)據(jù)在任何時刻數(shù)據(jù)的一致性。正因為 Moebius中間件宿主在數(shù)據(jù)庫中的創(chuàng)新,讓中間件不但能知道數(shù)據(jù)的變化,而且知道引起數(shù)據(jù)變化的SQL語句, 根據(jù)SQL語句的類型智能的采取不同的數(shù)據(jù)同步的策略以保證數(shù)據(jù)同步成本的最小化。數(shù)據(jù)條數(shù)很少,數(shù)據(jù)內(nèi)容也不大,則直接同步數(shù)據(jù)。數(shù)據(jù)條數(shù)很少,但是里面包含大數(shù)據(jù)類型, 比如文本,二進(jìn)制數(shù)據(jù)等,則先對數(shù)據(jù)進(jìn)行壓縮然后再同步,從而減少網(wǎng)絡(luò)帶寬的占用和傳輸所用的時間。
數(shù)據(jù)條數(shù)很多,此時中間件會拿到造成數(shù)據(jù)變化的SQL語句, 然后對 SQL語句進(jìn)行解析,分析其執(zhí)行計劃和執(zhí)行成本,并選擇是同步數(shù)據(jù)還是同步SQL語句到其他的數(shù)據(jù)庫中。
此種情況應(yīng)用在對表結(jié)構(gòu)進(jìn)行調(diào)整或者批量更改數(shù) 據(jù)的時候非常有用。
3、優(yōu)缺點優(yōu)點:
1) 擴(kuò)展性強(qiáng):當(dāng)系統(tǒng)要更高數(shù)據(jù)庫處理速度時,只要簡單地增加數(shù)據(jù)庫服務(wù)器就可以得到擴(kuò)展。
2) 可維護(hù)性:當(dāng)某節(jié)點發(fā)生故障時,系統(tǒng)會自動檢測故障并轉(zhuǎn)移故障節(jié)點的應(yīng)用,保證數(shù)據(jù)庫的持續(xù)工作。
3) 安全性:因為數(shù)據(jù)會同步的多臺服務(wù)器上,可以實現(xiàn)數(shù)據(jù)集的冗余,通過多份數(shù)據(jù)來保證安全性。另外它成功地將數(shù)據(jù)庫放到了內(nèi)網(wǎng)之中,更好地保護(hù)了數(shù)據(jù)庫的安全性。
4) 易用性:對應(yīng)用來說完全透明,集群暴露出來的就是一個IP缺點:
a) 不能夠按照Web 服務(wù)器的處理能力分配負(fù)載。
b) 負(fù)載均衡器(控制端)故障,會導(dǎo)致整個數(shù)據(jù)庫系統(tǒng)癱瘓。