兩類數(shù)據(jù)庫負(fù)載均衡的介紹
負(fù)載均衡可以用來控制網(wǎng)絡(luò)流量,分配IP,管理域名,還可以進(jìn)行服務(wù)器規(guī)劃和數(shù)據(jù)庫負(fù)載均衡處理。那么我們就來對數(shù)據(jù)庫負(fù)載均衡問題進(jìn)行一個簡單的介紹。對數(shù)據(jù)庫熟悉的朋友們應(yīng)該都知道Oracle和SQL Server,這兩個軟件也是我們重點(diǎn)介紹的對象。
對于應(yīng)用系統(tǒng)的負(fù)載均衡的硬件和軟件比比皆是,因?yàn)閼?yīng)用服務(wù)器上的程序基本上認(rèn)為是不變化的,而且一般的各個應(yīng)用服務(wù)器上的程序是不交互的。因此應(yīng)用服務(wù)器的負(fù)載均衡非常好做,只需要能夠進(jìn)行分流的軟件或者硬件把多個客戶端的連接分配到多個應(yīng)用服務(wù)器上去即可。
因?yàn)閿?shù)據(jù)庫內(nèi)的數(shù)據(jù)是頻繁變化的,為了數(shù)據(jù)的一致性以及鎖資源的分配協(xié)調(diào)等,所以像應(yīng)用服務(wù)器那樣只有分流是不夠的,各個節(jié)點(diǎn)需要頻繁的交互。這也是數(shù)據(jù)庫集群軟件難做的原因,當(dāng)然也是賣的貴的原因了。
Oracle Real Application Clusters
對于數(shù)據(jù)庫負(fù)載均衡,大家最為耳熟能詳?shù)木褪荗racle RAC了。RAC是雙機(jī)并行服務(wù)器(8i及以前版本稱作Oracle Parallel Server,OPS),用來在集群環(huán)境下實(shí)現(xiàn)多機(jī)共享數(shù)據(jù)庫,以保證應(yīng)用的高可用性,同時可以自動實(shí)現(xiàn)并行處理及均分負(fù)載,還能實(shí)現(xiàn)數(shù)據(jù)庫在故障時的排錯和無斷點(diǎn)恢復(fù)。它可以自動進(jìn)行數(shù)據(jù)庫負(fù)載均衡、故障修復(fù)和規(guī)劃停機(jī)時間,以支持高可用性應(yīng)用程序。若并行服務(wù)器中某節(jié)點(diǎn)失效,透明的應(yīng)用程序容錯能夠把用戶自動轉(zhuǎn)接到另一節(jié)點(diǎn)上繼續(xù)運(yùn)行,應(yīng)用程序在用戶沒有察覺的情況下繼續(xù)執(zhí)行。這使周期性和非周期性發(fā)生故障的系統(tǒng)增大了連續(xù)可用性。進(jìn)程的失效可以完全透明地轉(zhuǎn)移到另一節(jié)點(diǎn)上去,通過適當(dāng)?shù)嘏渲?可以指定所有查詢都在客戶端進(jìn)行緩存,這樣它們便可以在轉(zhuǎn)移后的節(jié)點(diǎn)上重新設(shè)置。
Moebius for SQL Server
截至到SQL Server 2008,微軟還是沒有推出數(shù)據(jù)庫負(fù)載均衡組件,只能靠第三方軟件來實(shí)現(xiàn),好在這個軟件是幾個從微軟出來的人寫的,也算是個小小的巧合。說他們是微軟出來的并不是說他們的技術(shù)多厲害,而是他們利用SQL Server的一些內(nèi)部接口把集群做的非常透明, 無論是應(yīng)用程序的調(diào)用還是開發(fā)/管理人員的使用都和面對一個數(shù)據(jù)庫一樣。
他們的實(shí)現(xiàn)原理是這樣的:和SQL Server鏡像一樣,每個數(shù)據(jù)庫節(jié)點(diǎn)都有自己的數(shù)據(jù),也就是無共享磁盤架構(gòu)。他們稱之為“中間件"的程序宿主在數(shù)據(jù)庫的內(nèi)部,每個節(jié)點(diǎn)數(shù)據(jù)庫上寫入數(shù)據(jù)導(dǎo)致數(shù)據(jù)變化時,SQL Server會激活“中間件",“中間件"把變化的數(shù)據(jù)同步到其他的節(jié)點(diǎn)上。其他節(jié)點(diǎn)發(fā)生變化也是一樣。因?yàn)?ldquo;中間件"宿主在數(shù)據(jù)庫內(nèi), 所以它能夠把每個同步的Session和SQL Server的Session綁定到一起,也就是使用戶的執(zhí)行和數(shù)據(jù)的同步成為一個原子操作,從而保證數(shù)據(jù)在每時每刻都是一致的。因此查詢可以隨便到每個機(jī)器上去查,從而做到了真正的數(shù)據(jù)庫負(fù)載均衡。