專(zhuān)利名稱(chēng):一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法和裝置,屬于信息技術(shù)領(lǐng)域。
背景技術(shù):
數(shù)據(jù)庫(kù)集群系統(tǒng)是指將一組數(shù)據(jù)庫(kù)服務(wù)器以集群的方式組合起來(lái),使用統(tǒng)一的接口向用戶(hù)提供服務(wù)。數(shù)據(jù)庫(kù)集群系統(tǒng)利用保存在多個(gè)數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)副本獲得更高的可用性;并利用多個(gè)數(shù)據(jù)庫(kù)服務(wù)器提供單一數(shù)據(jù)庫(kù)系統(tǒng)所無(wú)法提供的更強(qiáng)大的數(shù)據(jù)管理能力和更高的查詢(xún)響應(yīng)效率。數(shù)據(jù)庫(kù)集群系統(tǒng)中多個(gè)數(shù)據(jù)庫(kù)服務(wù)器之間的一致性可以通過(guò)基于認(rèn)證的數(shù)據(jù)庫(kù)復(fù)制協(xié)議來(lái)實(shí)現(xiàn),其過(guò)程如下各個(gè)數(shù)據(jù)庫(kù)服務(wù)器是等價(jià)的,客戶(hù)端發(fā)來(lái)的事務(wù)請(qǐng)求(如查詢(xún)、更新數(shù)據(jù)等操作)先由一個(gè)數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行,如果該事務(wù)是只讀事務(wù),則由該數(shù)據(jù)庫(kù)服務(wù)器直接提交并應(yīng)答即可;如果該事務(wù)涉及到數(shù)據(jù)的更新,則廣播該事務(wù)的改寫(xiě)集通知其他所有的數(shù)據(jù)庫(kù)服務(wù)器。當(dāng)其他的數(shù)據(jù)庫(kù)服務(wù)器接收到廣播的事務(wù)改寫(xiě)集時(shí),會(huì)對(duì)該事務(wù)進(jìn)行一個(gè)認(rèn)證如果該數(shù)據(jù)庫(kù)服務(wù)器上有已經(jīng)提交的并且與更新事務(wù)相沖突的事務(wù),則該更新事務(wù)就會(huì)被中止;如果沒(méi)有與該更新事務(wù)相沖突的事務(wù),該事務(wù)會(huì)在所有數(shù)據(jù)庫(kù)服務(wù)器上以相同的順序提交。也就是說(shuō)負(fù)載均衡器分配給每個(gè)數(shù)據(jù)庫(kù)服務(wù)器的事務(wù)是不一樣的,數(shù)據(jù)庫(kù)服務(wù)器之間的一致性由基于認(rèn)證的復(fù)制協(xié)議保證。在這種場(chǎng)景下,如何選取效率最高的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行客戶(hù)端的事務(wù)請(qǐng)求,是決定整個(gè)集群系統(tǒng)應(yīng)答效率的關(guān)鍵技術(shù)。由于系統(tǒng)中的不同事務(wù)可能需要共同訪(fǎng)問(wèn)一些常見(jiàn)的數(shù)據(jù)項(xiàng)目,如果其中至少有一個(gè)事務(wù)存在寫(xiě)操作,則會(huì)導(dǎo)致這些事務(wù)共同訪(fǎng)問(wèn)數(shù)據(jù)時(shí)沖突,即這些事務(wù)之間存在有沖突關(guān)系。當(dāng)兩個(gè)存在有沖突關(guān)系的事務(wù)在不同的數(shù)據(jù)庫(kù)服務(wù)器中執(zhí)行時(shí),其中一個(gè)事務(wù)就有可能被中止執(zhí)行,如果事務(wù)之間的沖突率較高,則會(huì)導(dǎo)致系統(tǒng)中止率的提高和并發(fā)處理能力的降低。相反,如果將存在有沖突關(guān)系的事務(wù)交由同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行,這時(shí)數(shù)據(jù)庫(kù)服務(wù)器本地的并發(fā)控制機(jī)制能有效解決這些沖突問(wèn)題,從而降低事務(wù)執(zhí)行時(shí)的中止率。 因此,我們希望能將具有沖突關(guān)系的事務(wù)盡可能的集中在最少的數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行。但是,將具有沖突關(guān)系的事務(wù)集中分配給少數(shù)的數(shù)據(jù)庫(kù)服務(wù)器,有可能會(huì)造成負(fù)載不均衡的問(wèn)題少數(shù)的數(shù)據(jù)庫(kù)服務(wù)器發(fā)生數(shù)據(jù)過(guò)載;另一些數(shù)據(jù)庫(kù)服務(wù)器處于閑置狀態(tài)。由于解決事務(wù)沖突會(huì)產(chǎn)生相應(yīng)的鎖沖突,少數(shù)的數(shù)據(jù)庫(kù)服務(wù)器會(huì)因?yàn)檫^(guò)多的鎖沖突而形成數(shù)據(jù)過(guò)載,當(dāng)數(shù)據(jù)過(guò)載發(fā)生時(shí),越來(lái)越多的事務(wù)被阻塞在執(zhí)行進(jìn)程中,事務(wù)的響應(yīng)時(shí)間大大增加,同時(shí)過(guò)多的中止還會(huì)導(dǎo)致資源的大量浪費(fèi)。目前,普遍使用的數(shù)據(jù)庫(kù)集群系統(tǒng)負(fù)載均衡方法包括有隨機(jī)選擇法、輪詢(xún)法、加權(quán)輪詢(xún)法等,然而這些方法均沒(méi)有考慮到事務(wù)之間的沖突關(guān)系。JC ((Conflict-aware load-balancing techniques for database r印lication》(干Ij于 2008ACMsymposium on Applied computing. March 16—20 2008)提出了一種用于數(shù)據(jù)庫(kù)集群系統(tǒng)的沖突感知負(fù)載均衡技術(shù)(簡(jiǎn)稱(chēng)MPF)。該MPF方案通過(guò)參數(shù)f的調(diào)整,從而實(shí)現(xiàn)了事務(wù)沖突數(shù)的最小化和并行數(shù)的最大化目標(biāo),但由于參數(shù)f的選擇很大程度上取決于以下因素互相沖突的交易數(shù)、復(fù)雜度和系統(tǒng)負(fù)載,從而導(dǎo)致最終結(jié)果存在有一定的不確定性和復(fù)雜性,同時(shí)在每個(gè)數(shù)據(jù)庫(kù)服務(wù)器上仍有可能會(huì)發(fā)生數(shù)據(jù)過(guò)載現(xiàn)象。因此,如何將具有沖突關(guān)系的事務(wù)盡可能的分配至最少的數(shù)據(jù)庫(kù)服務(wù)器上,同時(shí)還能使各個(gè)數(shù)據(jù)庫(kù)服務(wù)器達(dá)到負(fù)載均衡,就成為業(yè)內(nèi)科技人員關(guān)注的一個(gè)新課題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的是提供一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法和裝置,能將具有沖突關(guān)系的事務(wù)盡可能的分配至最少的數(shù)據(jù)庫(kù)服務(wù)器上,同時(shí)還使各個(gè)數(shù)據(jù)庫(kù)服務(wù)器達(dá)到負(fù)載均衡。為了達(dá)到上述目的,本發(fā)明提供了一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法,所述方法包括有步驟一、負(fù)載均衡器將各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和客戶(hù)端請(qǐng)求的并發(fā)事務(wù)之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖,其中客戶(hù)端請(qǐng)求的并發(fā)事務(wù)簡(jiǎn)稱(chēng)為請(qǐng)求事務(wù)該無(wú)向圖中,節(jié)點(diǎn)集是數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)和請(qǐng)求事務(wù)節(jié)點(diǎn)的集合,其中數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)代表該數(shù)據(jù)庫(kù)服務(wù)器上的所有正在執(zhí)行的事務(wù),請(qǐng)求事務(wù)節(jié)點(diǎn)代表客戶(hù)端請(qǐng)求的并發(fā)事務(wù);邊集是數(shù)據(jù)庫(kù)服務(wù)器上正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系集合,其中所述事務(wù)之間的沖突關(guān)系是指多個(gè)事務(wù)共同訪(fǎng)問(wèn)同一數(shù)據(jù)項(xiàng)目、并且其中至少有一個(gè)事務(wù)存在寫(xiě)操作;所述節(jié)點(diǎn)的權(quán)重值取決于請(qǐng)求事務(wù)的權(quán)重值或數(shù)據(jù)庫(kù)服務(wù)器上的所有正在執(zhí)行事務(wù)的權(quán)重值之和,其中事務(wù)的權(quán)重值取決于事務(wù)的復(fù)雜度;所述邊的權(quán)重值取決于存在沖突關(guān)系的兩個(gè)節(jié)點(diǎn)所代表的事務(wù)共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù);步驟二、采用圖的分割法,將所述無(wú)向圖劃分成k個(gè)分區(qū),k是所有的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)總數(shù),其中每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)都唯一的歸屬于不同的分區(qū)中,并按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到相應(yīng)的分區(qū)中;步驟三、負(fù)載均衡器根據(jù)步驟二的分區(qū)結(jié)果,逐一將請(qǐng)求事務(wù)分配給同一分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行、處理。為了達(dá)到上述目的,本發(fā)明還提供了一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡裝置,包括有負(fù)載均衡器,連接客戶(hù)端和數(shù)據(jù)庫(kù)服務(wù)器,用于接收客戶(hù)端請(qǐng)求的并發(fā)事務(wù),其中客戶(hù)端請(qǐng)求的并發(fā)事務(wù)簡(jiǎn)稱(chēng)為請(qǐng)求事務(wù),并將各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖,然后采用圖的分割法,將所述無(wú)向圖劃分成k個(gè)分區(qū),k是所有的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)總數(shù),其中每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)都唯一的歸屬于不同的分區(qū)中,并按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到相應(yīng)的分區(qū)中,最后根據(jù)分區(qū)結(jié)果,將所述請(qǐng)求事務(wù)分配給同一分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是本發(fā)明同時(shí)考慮了事務(wù)之間的沖突關(guān)系和數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡問(wèn)題,首先將數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)端的請(qǐng)求事務(wù)之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖,再采用圖的分割法,按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到系統(tǒng)中各個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)所在的分區(qū)中,從而將具有沖突關(guān)系的事務(wù)盡可能的分配至最少的數(shù)據(jù)庫(kù)服務(wù)器上,有效降低中止率,同時(shí)還使各個(gè)數(shù)據(jù)庫(kù)服務(wù)器達(dá)到負(fù)載均衡;由于數(shù)據(jù)庫(kù)服務(wù)器在處理互相沖突的事務(wù)時(shí)會(huì)發(fā)生鎖沖突,因此對(duì)每個(gè)數(shù)據(jù)庫(kù)服務(wù)器中的事務(wù)執(zhí)行和完成狀態(tài)進(jìn)行跟蹤,如果監(jiān)測(cè)到數(shù)據(jù)庫(kù)服務(wù)器中的沖突比例值 Thrashing大于沖突臨界值CR時(shí),則暫緩該數(shù)據(jù)庫(kù)服務(wù)器中下一個(gè)請(qǐng)求事務(wù)的執(zhí)行,從而有效避免了因?yàn)檫^(guò)多的鎖沖突而形成數(shù)據(jù)過(guò)載現(xiàn)象。
圖1是本發(fā)明一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法流程圖。圖2是將數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系建模為無(wú)向圖的一個(gè)實(shí)施例的示意圖。圖3是圖1步驟二的具體操作流程圖。圖4是針對(duì)圖2所示的無(wú)向圖實(shí)施例,采用圖的分割法將所有請(qǐng)求事務(wù)節(jié)點(diǎn)進(jìn)行分區(qū)后的結(jié)果示意圖。圖5是當(dāng)負(fù)載均衡器向所述數(shù)據(jù)庫(kù)服務(wù)器分配一個(gè)請(qǐng)求事務(wù)時(shí)的具體操作流程圖。圖6本發(fā)明一種數(shù)據(jù)庫(kù)集群系統(tǒng)的組成結(jié)構(gòu)示意圖。圖7是采用Random、MPF、GBCA時(shí)的中止率隨客戶(hù)端連接數(shù)的變化曲線(xiàn)圖。圖8是分別采用Random、MPF、GBCA時(shí),數(shù)據(jù)庫(kù)服務(wù)器負(fù)載分布隨客戶(hù)端連接數(shù)的變化曲線(xiàn)圖。圖9是采用Random、MPF、GBCA時(shí)的吞吐量隨客戶(hù)端連接數(shù)的變化曲線(xiàn)圖。圖10是采用Random、MPF、GBCA時(shí)的平均響應(yīng)時(shí)間隨客戶(hù)端連接數(shù)的變化曲線(xiàn)圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖好實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。參見(jiàn)圖1,客戶(hù)端向負(fù)載均衡器發(fā)送并發(fā)事務(wù)請(qǐng)求,當(dāng)負(fù)載均衡器同時(shí)接收到若干個(gè)并發(fā)事務(wù)請(qǐng)求后,本發(fā)明一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法包括有步驟一、負(fù)載均衡器將各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和客戶(hù)端請(qǐng)求的并發(fā)事務(wù)(簡(jiǎn)稱(chēng)請(qǐng)求事務(wù))之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖該無(wú)向圖中,節(jié)點(diǎn)集是數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)和請(qǐng)求事務(wù)節(jié)點(diǎn)的集合,其中數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)代表該數(shù)據(jù)庫(kù)服務(wù)器上的所有正在執(zhí)行的事務(wù),請(qǐng)求事務(wù)節(jié)點(diǎn)代表客戶(hù)端請(qǐng)求的并發(fā)事務(wù);邊集是數(shù)據(jù)庫(kù)服務(wù)器上正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系集合,其中所述事務(wù)之間的沖突關(guān)系是指多個(gè)事務(wù)共同訪(fǎng)問(wèn)同一數(shù)據(jù)項(xiàng)目、并且其中至少有一個(gè)事務(wù)存在寫(xiě)操作,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器上正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)、或者不同的請(qǐng)求事務(wù)之間存在有沖突關(guān)系時(shí),對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)和請(qǐng)求事務(wù)節(jié)點(diǎn)、或者不同的請(qǐng)求事務(wù)節(jié)點(diǎn)之間存在有一條連接上述兩個(gè)節(jié)點(diǎn)的邊;所述節(jié)點(diǎn)的權(quán)重值取決于請(qǐng)求事務(wù)的權(quán)重值或數(shù)據(jù)庫(kù)服務(wù)器上的所有正在執(zhí)行事務(wù)的權(quán)重值之和,其中事務(wù)的權(quán)重值取決于事務(wù)的復(fù)雜度,例如事務(wù)執(zhí)行時(shí)間、占用系統(tǒng)資源等;所述邊的權(quán)重值取決于存在沖突關(guān)系的兩個(gè)節(jié)點(diǎn)所代表的事務(wù)共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù),當(dāng)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)和請(qǐng)求事務(wù)節(jié)點(diǎn)之間存在有一條邊時(shí),所述邊的權(quán)重值是該數(shù)據(jù)庫(kù)服務(wù)器上所有正在執(zhí)行的事務(wù)和所述請(qǐng)求事務(wù)共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù),當(dāng)不同的請(qǐng)求事務(wù)節(jié)點(diǎn)之間存在有一條邊時(shí),所述邊的權(quán)重值是該兩個(gè)請(qǐng)求事務(wù)所共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù)。如圖2所示,是本發(fā)明將數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系建模為無(wú)向圖的一個(gè)實(shí)施例的示意圖。該無(wú)向圖中,包含有3個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)(如
R1、R2, R3)和8個(gè)請(qǐng)求事務(wù)節(jié)點(diǎn)(如T1, T2.....T8),其中數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)R1上正在執(zhí)行
事務(wù)T1和T3,數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)民上正在執(zhí)行事務(wù)T2,客戶(hù)端請(qǐng)求的并發(fā)事務(wù)T4、T5. . .、Τ8 同時(shí)到達(dá)負(fù)載均衡器,并由負(fù)載均衡器按Τ4、Τ5. . .、Τ8的順序依次調(diào)度數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行該請(qǐng)求事務(wù)。設(shè)定所有事務(wù)的復(fù)雜度相等,即所有事務(wù)的權(quán)重值為1,且沖突事務(wù)共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)為1。數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)R1上正在執(zhí)行事務(wù)T1和T3,因此R1的節(jié)點(diǎn)權(quán)重值為事務(wù) T1和T3的權(quán)重值之和,即R1的節(jié)點(diǎn)權(quán)重值為2,同樣,數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)民上正在執(zhí)行事務(wù) T2,則數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)民的節(jié)點(diǎn)權(quán)重值為1,數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)&上沒(méi)有正在執(zhí)行的事務(wù),則數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)&的節(jié)點(diǎn)權(quán)重值為0。由于請(qǐng)求事務(wù)節(jié)點(diǎn)T4和數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn) R3上的正在執(zhí)行事務(wù)存在有沖突關(guān)系,且共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù)為1,所以連接請(qǐng)求事務(wù)節(jié)點(diǎn)T4和數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)民的邊的權(quán)重值為1,同樣,請(qǐng)求事務(wù)節(jié)點(diǎn)T4和T6存在有沖突關(guān)系,且共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù)為1,所以連接請(qǐng)求事務(wù)節(jié)點(diǎn)T4和T6的邊的權(quán)重值為1。步驟二、采用圖的分割法,將所述無(wú)向圖劃分成k個(gè)分區(qū),k是所有的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)總數(shù),其中每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)都唯一的歸屬于不同的分區(qū)中,并按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到相應(yīng)的分區(qū)中。步驟三、負(fù)載均衡器根據(jù)步驟二的分區(qū)結(jié)果,逐一將請(qǐng)求事務(wù)分配給同一分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行、處理。如圖3所示,步驟二進(jìn)一步包括有步驟21、計(jì)算節(jié)點(diǎn)總權(quán)重Wtotal和數(shù)據(jù)庫(kù)服務(wù)器負(fù)載均衡權(quán)重1_ 一其中,Wtotal是
無(wú)向圖中所有節(jié)點(diǎn)的權(quán)重值之和,
權(quán)利要求
1.一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法,其特征在于,所述方法包括有 步驟一、負(fù)載均衡器將各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和客戶(hù)端請(qǐng)求的并發(fā)事務(wù)之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖,其中客戶(hù)端請(qǐng)求的并發(fā)事務(wù)簡(jiǎn)稱(chēng)為請(qǐng)求事務(wù)該無(wú)向圖中,節(jié)點(diǎn)集是數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)和請(qǐng)求事務(wù)節(jié)點(diǎn)的集合,其中數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)代表該數(shù)據(jù)庫(kù)服務(wù)器上的所有正在執(zhí)行的事務(wù),請(qǐng)求事務(wù)節(jié)點(diǎn)代表客戶(hù)端請(qǐng)求的并發(fā)事務(wù);邊集是數(shù)據(jù)庫(kù)服務(wù)器上正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系集合,其中所述事務(wù)之間的沖突關(guān)系是指多個(gè)事務(wù)共同訪(fǎng)問(wèn)同一數(shù)據(jù)項(xiàng)目、并且其中至少有一個(gè)事務(wù)存在寫(xiě)操作;所述節(jié)點(diǎn)的權(quán)重值取決于請(qǐng)求事務(wù)的權(quán)重值或數(shù)據(jù)庫(kù)服務(wù)器上的所有正在執(zhí)行事務(wù)的權(quán)重值之和,其中事務(wù)的權(quán)重值取決于事務(wù)的復(fù)雜度;所述邊的權(quán)重值取決于存在沖突關(guān)系的兩個(gè)節(jié)點(diǎn)所代表的事務(wù)共同訪(fǎng)問(wèn)的數(shù)據(jù)項(xiàng)總數(shù);步驟二、采用圖的分割法,將所述無(wú)向圖劃分成k個(gè)分區(qū),k是所有的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)總數(shù),其中每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)都唯一的歸屬于不同的分區(qū)中,并按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到相應(yīng)的分區(qū)中;步驟三、負(fù)載均衡器根據(jù)步驟二的分區(qū)結(jié)果,逐一將請(qǐng)求事務(wù)分配給同一分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行、處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟二進(jìn)一步包括有步驟21、計(jì)算節(jié)點(diǎn)總權(quán)重Wt。tal和數(shù)據(jù)庫(kù)服務(wù)器負(fù)載均衡權(quán)重WavCTage,其中,Wtotal是無(wú)"w “向圖中所有節(jié)點(diǎn)的權(quán)重值之和,Waverage= f ,「卩表示對(duì)1上取整;步驟22、設(shè)置可劃分的分區(qū)集合S (t)和已劃分的分區(qū)集合P(t),并對(duì)S(t)、P(t)分別初始化S(t) = (S1^S2.....,其中S1A2.....&表示K個(gè)分區(qū),初始化時(shí)無(wú)向圖中的每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)都被劃分到S(t)的不同分區(qū)中,即每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)在分區(qū)后都唯一的歸屬于S (t)中的一個(gè)分區(qū);P (t)為空集;步驟23、逐一判斷S (t)中的每一個(gè)分區(qū)所包含的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值是否大于WavCTa一如果數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值大于Waraa一則將所述分區(qū)從S (t)中移至P (t) 中;步驟M、判斷無(wú)向圖中是否還有未被劃分到分區(qū)的請(qǐng)求事務(wù)節(jié)點(diǎn)?如果是,則繼續(xù)步驟25;如果否,則本流程結(jié)束;步驟25、提取一個(gè)未被劃分到分區(qū)的請(qǐng)求事務(wù)節(jié)點(diǎn),判斷S(t)所包含的分區(qū)個(gè)數(shù)是否大于0 ?如果是,則繼續(xù)步驟沈;如果否,則繼續(xù)步驟27 ;步驟沈、判斷無(wú)向圖中,和所述請(qǐng)求事務(wù)節(jié)點(diǎn)相連的其他節(jié)點(diǎn)是否存在有歸屬于S(t) 中的分區(qū)的節(jié)點(diǎn)?如果是,則從S(t)的分區(qū)中,找到和所述請(qǐng)求事務(wù)節(jié)點(diǎn)相連的邊的權(quán)重值總和最大的一個(gè)S(t)的分區(qū),將所述請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到所述分區(qū)中,并將所述分區(qū)中的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值更新為原權(quán)重值和所述請(qǐng)求事務(wù)節(jié)點(diǎn)的權(quán)重值之和,轉(zhuǎn)向步驟23 ;如果否,則比較S(t)中所有分區(qū)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值,將所述請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值最小的分區(qū)中,并將所述分區(qū)中的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值更新為原權(quán)重值和所述請(qǐng)求事務(wù)節(jié)點(diǎn)的權(quán)重值之和,轉(zhuǎn)向步驟23 ;步驟27、比較P(t)中所有分區(qū)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值,將所述請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值最小的分區(qū)中,并將所述分區(qū)中的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)的權(quán)重值更新為原權(quán)重值和所述請(qǐng)求事務(wù)節(jié)點(diǎn)的權(quán)重值之和,轉(zhuǎn)向步驟對(duì)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,負(fù)載均衡器為每個(gè)數(shù)據(jù)庫(kù)服務(wù)器維護(hù)一個(gè)事務(wù)請(qǐng)求隊(duì)列,同時(shí)還對(duì)每個(gè)數(shù)據(jù)庫(kù)服務(wù)器的事務(wù)執(zhí)行和完成狀態(tài)進(jìn)行跟蹤,如果監(jiān)測(cè)到數(shù)據(jù)庫(kù)服務(wù)器中的沖突比例值Thrashing大于沖突臨界值CR時(shí),則暫緩該數(shù)據(jù)庫(kù)服務(wù)器中下一個(gè)請(qǐng)求事務(wù)的執(zhí)行,所述CR是一個(gè)實(shí)數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,CR的優(yōu)選值可以是1.3。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,負(fù)載均衡器對(duì)數(shù)據(jù)庫(kù)服務(wù)器中的沖突比例值Thrashing進(jìn)行監(jiān)測(cè),進(jìn)一步包括有負(fù)載均衡器分別從數(shù)據(jù)庫(kù)服務(wù)器的鎖表中讀取當(dāng)前所有事務(wù)所持有鎖的總數(shù)Sall和非阻塞事務(wù)所持有鎖的總數(shù)Snz ;負(fù)載均衡器計(jì)算沖突比例值
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)負(fù)載均衡器向所述數(shù)據(jù)庫(kù)服務(wù)器分配一個(gè)請(qǐng)求事務(wù),還包括有步驟Α、負(fù)載均衡器判斷所述沖突比例值Thrashing是否小于沖突臨界值CR 如果是, 則繼續(xù)步驟B ;如果否,則負(fù)載均衡器將該請(qǐng)求事務(wù)放入事務(wù)請(qǐng)求隊(duì)列的隊(duì)尾等待;步驟B、負(fù)載均衡器判斷為所述數(shù)據(jù)庫(kù)服務(wù)器維護(hù)的事務(wù)請(qǐng)求隊(duì)列是否為空,如果是, 則直接調(diào)度該請(qǐng)求事務(wù)給數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行,如果否,則將該請(qǐng)求事務(wù)放入事務(wù)請(qǐng)求隊(duì)列的隊(duì)尾,同時(shí)調(diào)度事務(wù)請(qǐng)求隊(duì)列的處于隊(duì)首的請(qǐng)求事務(wù)給數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)負(fù)載均衡器監(jiān)測(cè)到數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行完一個(gè)請(qǐng)求事務(wù)時(shí),還包括有負(fù)載均衡器判斷所述沖突比例值Thrashing是否小于沖突臨界值CR ?如果是,則當(dāng)所述數(shù)據(jù)庫(kù)服務(wù)器的事務(wù)請(qǐng)求隊(duì)列不為空時(shí),調(diào)度事務(wù)請(qǐng)求隊(duì)列的處于隊(duì)首的請(qǐng)求事務(wù)給數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行;如果否,則負(fù)載均衡器不調(diào)度事務(wù)請(qǐng)求隊(duì)列中的請(qǐng)求事務(wù)。
8.一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡裝置,其特征在于,包括有負(fù)載均衡器,連接客戶(hù)端和數(shù)據(jù)庫(kù)服務(wù)器,用于接收客戶(hù)端請(qǐng)求的并發(fā)事務(wù),其中客戶(hù)端請(qǐng)求的并發(fā)事務(wù)簡(jiǎn)稱(chēng)為請(qǐng)求事務(wù),并將各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和請(qǐng)求事務(wù)之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖,然后采用圖的分割法,將所述無(wú)向圖劃分成k 個(gè)分區(qū),k是所有的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)總數(shù),其中每個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)都唯一的歸屬于不同的分區(qū)中,并按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到相應(yīng)的分區(qū)中,最后根據(jù)分區(qū)結(jié)果,將所述請(qǐng)求事務(wù)分配給同一分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行。
9.根據(jù)權(quán)利要求8所述的負(fù)載均衡裝置,其特征在于,所述負(fù)載均衡器進(jìn)一步包括有k 個(gè)事務(wù)請(qǐng)求隊(duì)列維護(hù)裝置,其中事務(wù)請(qǐng)求隊(duì)列維護(hù)裝置,用于對(duì)其中一個(gè)數(shù)據(jù)庫(kù)服務(wù)器維護(hù)一個(gè)事務(wù)請(qǐng)求隊(duì)列,并同時(shí)對(duì)所述數(shù)據(jù)庫(kù)服務(wù)器中的事務(wù)執(zhí)行過(guò)程進(jìn)行跟蹤,如果監(jiān)測(cè)到數(shù)據(jù)庫(kù)服務(wù)器中的沖突比例值Thrashing大于沖突臨界值CR時(shí),則等待直至Hirashing小于CR時(shí)再繼續(xù)該數(shù)據(jù)庫(kù)服務(wù)器中下一個(gè)請(qǐng)求事務(wù)的執(zhí)行,其中數(shù)據(jù)庫(kù)服務(wù)器中的沖突比例值Thrashing:Thrashing=^- , Sall> Snz分別是從數(shù)據(jù)庫(kù)服務(wù)器的鎖表中讀取的當(dāng)前所有事務(wù)所持有鎖的總數(shù)和非阻塞事務(wù)所持有鎖的總數(shù),所述CR是一個(gè)實(shí)數(shù)。
10.根據(jù)權(quán)利要求9所述的負(fù)載均衡裝置,其特征在于,CR的優(yōu)選值可以是1. 3。
全文摘要
一種數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡實(shí)現(xiàn)方法和裝置,所述方法包括有負(fù)載均衡器將各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的正在執(zhí)行的事務(wù)和客戶(hù)端請(qǐng)求的并發(fā)事務(wù)之間的沖突關(guān)系建模為具有權(quán)重值的無(wú)向圖;采用圖的分割法,將所述無(wú)向圖劃分成k個(gè)分區(qū),k是所有的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)總數(shù),并按照跨越不同分區(qū)的邊的權(quán)重值總和最小,同時(shí)每個(gè)分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)權(quán)重值達(dá)到均衡的分區(qū)原則,將所有請(qǐng)求事務(wù)節(jié)點(diǎn)劃分到相應(yīng)的分區(qū)中;根據(jù)分區(qū)結(jié)果,逐一將請(qǐng)求事務(wù)分配給同一分區(qū)內(nèi)的數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行、處理。本發(fā)明屬于信息技術(shù)領(lǐng)域,能將具有沖突關(guān)系的事務(wù)盡可能的分配至最少的數(shù)據(jù)庫(kù)服務(wù)器上,同時(shí)還使各個(gè)數(shù)據(jù)庫(kù)服務(wù)器達(dá)到負(fù)載均衡。
文檔編號(hào)G06F17/30GK102299959SQ20111024123
公開(kāi)日2011年12月28日 申請(qǐng)日期2011年8月22日 優(yōu)先權(quán)日2011年8月22日
發(fā)明者廖建新, 張樂(lè)劍, 張磊, 徐童, 朱曉民, 李煒, 樊利民, 沈奇威, 王晶, 王純, 程莉, 鄭安根 申請(qǐng)人:北京郵電大學(xué)