《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 一種基于SQL語句分發請求的復制算法

一種基于SQL語句分發請求的復制算法

2008-05-27
作者:王 巍,李 恪

  摘 要: 為適應集群環境下數據量在100GB以下數據庫訪問頻繁和響應速度較高的需要,提出一種架構于Linux虛擬服務器(LVS)基礎之上、應用廣泛且擴展性強的數據庫集群服務器結構,并在復制技術的基礎上進行改進,改變復制對象,給出了相應特定的復制算法,并且通過實驗驗證了系統的可行性。
  關鍵詞: 復制 負載平衡 集群 數據庫


  隨著Internet業務量爆炸性的增長,使得傳統的單一數據庫服務器不堪重負。不斷更新的硬件只會使整個系統的代價升高且收效甚微,并且還會造成資源的浪費。由此,基于集群的網絡負載平衡策略應運而生并成為有效的新對策。
  本文提出了一種構架于Linux虛擬服務器(LVS)基礎之上的數據庫集群服務器體系結構,用于解決數據量在100G以下且數據庫訪問頻繁和對響應速度要求較高的需求。重點提出了與這種體系結構相對應的基于SQL語句分發請求的復制算法,并通過實驗來驗證算法的可行性。由于所采用的設備均是普通的PC機和交換機,所使用的系統平臺是源碼開放的Linux操作系統,并且系統是針對Anycast型[2]任務開發的,可以應用于絕大多數的網站和論壇,所以具有一定的推廣價值。
1 數據復制技術
  通常,服務器的數據分為兩種:一種是結構化的數據庫數據,另一種是非結構化或半結構化的文件[4]。這里只討論結構化的數據庫數據。
  數據庫集群的數據復制包括數據定位和數據更新。對于數據定位,目前有三種方式:
  (1)采用分區方式,即對數據庫中的數據進行劃分操作,其保證了數據操作的高效率,但不能保證數據的高可用性和高可靠性" title="高可靠性">高可靠性。
  (2)采用不分區方式,使得數據庫在每個節點上都保存有副本,其保證了數據的高可用性和高可靠性,但數據同步困難。本文則是由此切入,提出一種新算法用以解決在保證數據的高可用性和高可靠性的情況下數據同步困難的問題。
  (3)上述兩者相結合,這樣就需要動態的數據分配策略來管理這些數據,當然也可以通過手動管理方式來模擬此過程。
  數據更新一般使用即時更新。
  對于采取不分區方式的數據定位,其數據更新常用的算法有快照復制、基于主節點的對稱復制、基于TOKEN的對稱復制和混合復制。這些算法都各有千秋,但它們有一個共同的特點,即都是在節點之間或主節點與從節點之間拷貝數據。人們知道,任何情況下,對數據庫的操作無非只有四種:增、刪、改、查。對于這種基于負載調度請求的且不能識別請求內容而只把數據庫當作文件來操作的算法,不但不能發揮數據庫存取數據的優勢,同時也為整個集群帶來了額外的開銷,所以不能說是真正意義上的數據庫集群。
2 系統設計
  為了保證數據的高可用性和高可靠性,同時又能提高數據更新的效率,充分發揮數據庫本身的優勢,本文提出一種新的思路,即在LVS基礎之上,將其內網中傳送的數據包變成SQL語句,通過數據接口,在各個節點機上對其各自擁有數據庫進行讀寫操作。由于所傳送的對象不是整塊數據而是一條條的SQL語句,使得整個集群減少了更新時間并且增強了負載能力。
  如圖1所示,本系統是基于LVS的直接路由模式(DR)來構建的。其采用單工連接方式,節點服務器處理過的應答數據不再經過均衡器" title="均衡器">均衡器,而直接返回給客戶端" title="客戶端">客戶端,這就是說,每個節點服務器都擁有能夠到達客戶端的合法IP地址,并且負載均衡器" title="負載均衡器">負載均衡器與各節點服務器必須有一塊網卡與內網交換機相連。同時,為了使節點間負載平衡、節點內有序執行,在每個節點服務器上都設置有一個隊列結構,用于保證操作的順序性,并且在負載均衡器上設置有兩個對列結構用于協調節點間查詢和更新的操作。


3 基于SQL語句分發請求的復制算法
  復制算法一般包括數據的定位和數據副本的同步兩部分,本算法也是如此。
3.1 數據的定位
  如上所述,基于本算法的系統結構中所使用的定位技術是基于定位服務器的方式。也就是說,從客戶端發出的對數據庫操作的任何請求都必須經過定位服務器的分發后,請求才能在節點服務器上得到響應。本系統中,定位服務器就是負載均衡器。
  如圖2所示,當負載均衡器收到客戶端對數據庫操作的請求后,首先要進行區分,即是SELECT語句還是非SELECT語句,當請求是SELECT語句時,則通過負載平衡算法[2]選擇當前負載最輕的節點,然后將SELECT語句發送到此節點,在節點數據庫中進行查詢處理后直接將應答數據返回給客戶端,而此時的返回數據包的源IP地址仍然是負載均衡器上的VIP地址(這是由LVS的直接路由模式決定的)。


  可是,當請求是非SELECT語句時,情況則有所不同,因為所有非SELECT語句均是更新語句,如INSERT、DELECT和UPDATE。此時,負載均衡器通過其所擁有的鄰接表查找各節點的MAC地址,然后復制與節點數量相同請求包,再分別封裝成幀并改寫幀上的MAC地址,使每個節點都成為目的節點,接著將這批幀發送到內網。于是,每個節點服務器都將收到符合自己MAC地址的幀后,拆裝、提取SQL信息,在節點數據庫中進行數據更新,最后再將更新后的狀態信息(如更新成功或失敗)直接返回給客戶端,同樣此時的返回包的源IP地址仍然是均衡器上的VIP。
3.2 數據副本的同步
  本系統在進行數據同步時,采用即時更新的同步技術。
  由于數據庫集群服務器的數據庫都是相對獨立的,每臺服務器都可以獨立承擔服務工作,且數據的復制度較高,不存在單點失效的問題,所以節點服務器的工作重點應是數據快速而穩定的存取,保持各節點間數據的一致性。因此,當有請求到達時,無論是查詢語句(SELECT語句)還是更新語句(非SELECT語句),都先進入節點機上的操作隊列,如圖3所示,然后逐一順序取出執行,這樣可以保證對數據庫操作的順序性和一致性。


3.3 復制算法的實現
  (1)負載均衡器上鄰接狀態表,請求隊列和更新隊列
  可以看出,負載均衡器是這個集群系統" title="集群系統">集群系統的核心。均衡器是通過鄰接狀態表來管理集群中節點服務器的。鄰接狀態表是由節點名、MAC地址和狀態構成。節點名是管理員預先定義的,用于區分各節點機; MAC地址是指節點服務器對應于內網的那塊網卡的地址;狀態是指當前節點機的狀態(0為可操作,1為忙,2為停機)。當有請求到達時,均衡器首先區分請求中的是SELECT語句還是非SELECT語句,若是SELECT語句,則從鄰接狀態表中查找狀態為0的節點,若為0的節點多于一個時,則通過負載平衡算法[2]選出負載最輕的節點進行分配;若是非SELECT語句,均衡器便查找狀態不為2(即停機)的節點分發請求,若其中有節點的狀態為1(即忙,也就是說此節點服務器上的操作隊列已滿),則將該語句入均衡器上的更新隊列排隊,直到所有運行節點均為不忙,才出隊分發;若所有運行節點的狀態均不為0,此時若帶有SELECT語句的請求到達,均衡器便將該語句入請求隊列,直到有狀態為0的節點出現,才出隊進行分發;當均衡器上的請求隊列或更新隊列均滿時,均衡器將拒絕查詢請求或更新請求,直到隊列不滿。
  圖2中,Qempty(Q)、Qinsert(Q,i)、Qdelete(Q)和Qlength(Q)是對隊列的判空、入隊、出隊和求長度的操作,get_load_request()為取請求函數,send_load_request()為發送請求函數。
  (2)節點服務器上的操作隊列和信號機制
  節點服務器的主要工作是對數據庫的存取。引入操作隊列就是為了保證對數據庫操作的順序性和一致性。這里,需要再引入兩個信號量DOWN和FULL,用以監控節點機的狀態。DOWN為節點機系統狀態(0為正常,1為異常),FULL為操作隊列狀態(0為隊列滿,1為隊列不滿),它們分別與負載均衡器上狀態值同步,其對照表如表1所示。
  圖3中,Qempty(Q)、Qdelete(Q)和Qinsert(Q,q)是對隊列的判空、出隊和入隊的操作,get_lvs_request()為取請求函數,Exesql(q,local)為SQL執行函數。


4 系統實現與測試
4.1 系統實現

  本集群系統性能測試環境如下:
  (1)基于6+1臺PC的集群服務器,即一臺作負載均衡器,剩余6臺作節點服務器。PC機的基本配置為:CPU PⅢ 900MHz,內存為384MB,硬盤為40GB。
  (2)交換機為24Port 10/100Mbps Fast ethernet Switch。
  (3)軟件配置:
  操作系統:Linux 7.2 內核為2.4.18。
  集群中間件(SSI):使用JAVA開發的基于SQL語句復制的數據庫集群算法。
  數據庫為:MySql 3.23.49。
  網絡協議:TCP/IP。
  (4)測試軟件:WebBench。
4.2 測試與分析
  為使測試更具對比性,選用兩種算法進行,一種是基于SQL語句復制的算法,另一種是基于快照復制[3]的算法。
  (1)測試基于數據庫服務器集群系統的查詢請求的吞吐量。
  (2)測試基于數據庫服務器集群系統的更新請求的吞吐量。
  從以上結果可以看出,在測試查詢請求的情況下,雖然基于SQL語句復制的算法略高些,但兩者相差不是很大,如圖4所示。在測試更新請求的情況下,差距很明顯,如圖5所示,由于基于快照復制算法的系統,所有的更新都在一臺主節點上進行,然后再將更新數據分發到其他備份節點。這樣,雖然能夠保證數據的一致性,但主節點很容易形成新的瓶頸,使得在節點增多的情況下,主節點負載過大。然而,基于SQL語句復制算法的系統,由于所傳送的為一條一條的語句,并非整塊數據,所以在節點服務器上對其處理的速度就比較快,并且內部的網絡傳輸影響甚小,從而使集群整體的更新速度得到提高。


  本文提出了一種新的基于SQL語句請求分發的數據庫集群服務器的體系結構,對于研究和開發數據庫集群服務器,特別是集群環境中的數據同步管理,具有一定的指導意義和參考價值。
  目前系統處于測試階段,還需要不斷完善。例如在網絡協議方面,TCP/IP協議雖然是一種很好的協議,但在相對距離較近、且同構的集群系統中,其網絡開銷自然不容輕視;還有,由于本集群采用的是集中式分配器作為整個上行數據的入口點,所有的負載分配工作都集中在負載均衡器上,當負載均衡器出現故障或負載過重時,將直接影響到整個集群系統的性能;另外,系統的容錯性和安全性等問題都需要進一步解決。
參考文獻
1 Zegura E W,Ammar M H,Fei Zongming et al.Application-Layer Anycasting:A Server Selection Architecture and Use in a Replicated Web Service.IEEE/ACM Transactions on Net-working,2000;8(4)455-466
2 Hui L,Qinke P,Junyi S.Node-Agents Based Clustered Database Server.Mini-Micro Systems,2003;24(2)225-229
3 邵佩英.分布式數據庫系統及其應用.北京:科學出版社,2005
4 Content manage 8.1,IBM.http://www-900.ibm.com/cn/soft-ware/products/db2/index_solution.shtml
5 Shah S.Linux管理員指南.北京:機械工業出版社,2001
6 毛德操,胡希明.Linux內核源代碼情景分析.杭州:浙江大學出版社,2001

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          一区二区高清在线观看| 欧美人与性动交a欧美精品| 亚洲欧洲一区| 欧美日韩99| 欧美三级小说| 国产日韩视频一区二区三区| 欧美伊人久久久久久久久影院| 欧美国产精品v| 久久久精品国产免费观看同学| 亚洲免费av网站| 国产精品久久久久久福利一牛影视| 国产精品视频不卡| 亚洲国产成人tv| 欧美日本一区二区高清播放视频| 国产亚洲欧美一区二区| 国产精品久久久久久亚洲调教| 激情视频亚洲| 欧美日韩三区四区| 午夜精品久久久久久久久久久| 亚洲国产精品热久久| 亚洲日本无吗高清不卡| 狠狠色丁香婷婷综合久久片| 免费视频一区| 欧美精品久久久久a| 久久亚洲二区| 国产精品v欧美精品v日韩| 亚洲欧洲视频| 中文在线一区| 136国产福利精品导航网址| 久久野战av| 久久久一区二区三区| 欧美日韩麻豆| 在线播放国产一区中文字幕剧情欧美| 一区免费观看| 国产伊人精品| 亚洲一区三区视频在线观看| 亚洲免费一级电影| 欧美一级二级三级蜜桃| 蜜桃久久精品乱码一区二区| 欧美精品在线免费观看| 99精品国产在热久久| 欧美日韩国内自拍| 亚洲日产国产精品| 久久久久久久久久久久久9999| 另类成人小视频在线| 亚洲一区二区三区国产| 亚洲国产欧美另类丝袜| 激情文学综合丁香| 国产一区二区三区视频在线观看| 亚洲国产精品尤物yw在线观看| 激情国产一区二区| 亚洲麻豆一区| 亚洲欧美影音先锋| 久久久午夜视频| 日韩一级裸体免费视频| 一区在线免费| 99视频在线精品国自产拍免费观看| 91久久夜色精品国产网站| 欧美亚日韩国产aⅴ精品中极品| 国产精品主播| 国产日韩欧美精品| 久久精品国产77777蜜臀| 国产精品美女久久久久久免费| 国产午夜精品视频| 裸体一区二区| 狠狠久久亚洲欧美专区| 国产精品丝袜久久久久久app| 一区二区三区精密机械公司| 欧美激情综合五月色丁香| 国产精品xnxxcom| 亚洲黄色有码视频| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美一区二区在线观看| 亚洲一区图片| 一区二区三区国产精品| 国产欧美日韩激情| 国产一区日韩欧美| 久久精品免费播放| 亚洲天堂第二页| 欧美专区在线播放| 欧美自拍偷拍午夜视频| 一区二区三区四区蜜桃| 午夜精品久久久久久久久久久| 洋洋av久久久久久久一区| 亚洲一区免费网站| 狠狠狠色丁香婷婷综合激情| 亚洲精品少妇| 一本久久精品一区二区| 久久久一本精品99久久精品66| 欧美日韩不卡| 欧美在线亚洲一区| 亚洲一区影音先锋| 久久激情五月婷婷| 影音先锋日韩有码| 免费成人av在线看| 99re在线精品| 欧美电影在线观看完整版| 亚洲国产成人tv| 一区二区三区精品国产| 国产综合18久久久久久| 国内久久精品视频| 欧美亚洲视频在线观看| 国产精品视频福利| 午夜免费在线观看精品视频| 午夜欧美不卡精品aaaaa| 一区二区三区高清在线观看| 国产精品人成在线观看免费| 99这里只有久久精品视频| 国产亚洲精品久久久久婷婷瑜伽| 久久中文在线| 欧美成人三级在线| 免费成人黄色片| 黑人一区二区| 亚洲国产精品va在看黑人| 午夜欧美大尺度福利影院在线看| 亚洲主播在线| 国产综合色产| 欧美国产日本韩| 亚洲欧美中文另类| 免费成人黄色| 欧美大片国产精品| 免费成人高清在线视频| 韩国精品主播一区二区在线观看| 午夜精品久久久久久久久久久久久| 欧美11—12娇小xxxx| 欧美精品一区二区精品网| 日韩一级免费| 久久综合色88| 99视频国产精品免费观看| 一区二区欧美日韩视频| 一区二区高清在线观看| 欧美日韩国产精品一区| 欧美日韩视频在线一区二区观看视频| 亚洲国产精品高清久久久| 老司机免费视频久久| 国产精品免费一区二区三区观看| 久久精品视频99| 亚洲一区日本| 久久午夜激情| 久久久久久久性| 久久久91精品国产一区二区精品| 国产色婷婷国产综合在线理论片a| 精品福利电影| 欧美视频在线观看| 欧美亚洲第一页| 欧美日本精品| 久久九九有精品国产23| 免费视频一区二区三区在线观看| 国产综合在线视频| 亚洲线精品一区二区三区八戒| 性欧美暴力猛交69hd| 久久精品人人做人人爽| 国产日韩在线一区| 国产精品久久久久7777婷婷| 欧美视频在线观看视频极品| 欧美一区二区在线看| 欧美视频在线视频| 国语对白精品一区二区| 欧美激情黄色片| 久久激情视频| 伊人一区二区三区久久精品| 美女精品自拍一二三四| 欧美久久99| 国产手机视频一区二区| 国产亚洲综合精品| 欧美成人国产va精品日本一级| 欧美伊人久久大香线蕉综合69| 欧美日韩播放| 红桃视频国产一区| 国产人久久人人人人爽| 尤妮丝一区二区裸体视频| 黄色一区三区| 亚洲福利专区| 激情久久影院| 亚洲国产精彩中文乱码av在线播放| 亚洲性人人天天夜夜摸| 麻豆精品一区二区av白丝在线| 一区二区欧美激情| 先锋a资源在线看亚洲| 亚洲国产1区| 欧美精品日韩精品| 亚洲视频一区二区| 亚洲女ⅴideoshd黑人| 欧美一区1区三区3区公司| 亚洲激情欧美激情| 欧美一区免费| 性色av一区二区怡红| 久久久久青草大香线综合精品| 一区二区欧美日韩视频| 农村妇女精品| 久久国产一区二区三区| 一本色道久久综合亚洲精品婷婷| 老司机亚洲精品| 亚洲福利av| 另类图片国产| 国产精品爽爽爽| 久久五月天婷婷| 国产午夜精品理论片a级探花| 欧美日韩天天操| 欧美va亚洲va香蕉在线| 美女成人午夜| 狠狠狠色丁香婷婷综合激情| 亚洲天堂视频在线观看| 久热精品视频在线观看一区| 欧美日韩亚洲不卡| 999在线观看精品免费不卡网站| 午夜久久久久久久久久一区二区| 亚洲日本乱码在线观看| 影音先锋国产精品| 免费亚洲电影在线| 国产精品99一区二区| 欧美日本一道本| 国产一区二区三区久久悠悠色av| 在线观看视频亚洲| 国内免费精品永久在线视频| 午夜精品久久久久久久99水蜜桃| 久久久亚洲欧洲日产国码αv| 国产精品免费视频观看| 国产一区二区中文字幕免费看| 欧美国产另类| 久久午夜羞羞影院免费观看| 国产精品久久国产愉拍| 蜜臀久久99精品久久久久久9| 国产精品海角社区在线观看| 亚洲黄色视屏| 久久av一区二区三区亚洲| 国产精品久久9| 欧美日韩一区在线视频| 欧美日韩亚洲一区二| 欧美高清视频在线播放| 亚洲电影天堂av| 亚洲视频999| 欧美在线一二三| 在线视频免费在线观看一区二区| 久热爱精品视频线路一| 欧美肉体xxxx裸体137大胆| 久久精品国产精品| 女人香蕉久久**毛片精品| 久久久久久91香蕉国产| 国产一区二区三区在线观看视频| 99精品免费视频| 亚洲国产网站| 国产精品一区二区久久久久| 麻豆91精品91久久久的内涵| 亚洲视频精品| 亚洲免费高清视频| 欧美日本一区| 国产香蕉97碰碰久久人人| 99在线热播精品免费99热| 欧美午夜www高清视频| 久久精品72免费观看| 欧美日韩久久不卡| 国产精品一区二区久久久| 久久久av毛片精品| 欧美精品一区二区高清在线观看| 欧美一区午夜精品| 久久亚洲综合色一区二区三区| 黑人巨大精品欧美一区二区小视频| 久久久久一区| 欧美午夜精品久久久久久孕妇| 久久www成人_看片免费不卡| 欧美福利电影在线观看| 国产精品自拍在线| 亚洲免费影院| 亚洲一区视频| 亚洲激情午夜| 国产精品家庭影院| 久久久av毛片精品| 久久香蕉国产线看观看av| 亚洲丶国产丶欧美一区二区三区| 久久国产免费看| 一区二区激情视频| 久久天天躁夜夜躁狠狠躁2022| 久久综合久色欧美综合狠狠| 国产亚洲欧洲997久久综合| 欧美黄色影院| 免费黄网站欧美| 欧美不卡一区| 韩国精品在线观看| 激情成人av| 国产精品久久久久免费a∨大胸| 亚洲精品婷婷| 久久久久久97三级| 欧美有码在线观看视频| 欧美1区2区视频| 久久一区视频| 欧美日韩一区二区视频在线观看| 久久av免费一区| 久久av资源网| 亚洲高清激情| 免费视频一区二区三区在线观看| 噜噜爱69成人精品| 国产精品女主播一区二区三区| 欧美一区二区高清| 亚洲成人在线视频网站| 国内不卡一区二区三区| 亚洲激情视频在线播放| 欧美特黄一级大片| 欧美日韩免费区域视频在线观看| 欧美在线视频免费观看| 国产精品久久久久久av下载红粉| 日韩系列欧美系列| 欧美精品大片| 欧美国产在线视频| 久久成人精品| 国产综合久久久久久| 欧美日韩国产精品专区| 欧美日韩国产综合网| 亚洲区欧美区| 亚洲高清久久| 亚洲一区三区电影在线观看| 伊人狠狠色丁香综合尤物| 一区精品在线| 亚洲视频一区| 欧美激情中文不卡| 日韩亚洲精品电影| 嫩模写真一区二区三区三州| 欧美在线高清视频| 欧美日韩一区二区三区在线观看免| 伊人成人在线视频| 亚洲国产欧美一区二区三区同亚洲| 久久精品99国产精品| 久热精品视频在线| 亚洲激情一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一| 影音先锋亚洲电影| 亚洲精品孕妇| 一本大道久久a久久综合婷婷|