国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

分布式數(shù)據(jù)庫同步中間件系統(tǒng)的設(shè)計(jì)與研究

2016-05-14 09:17王玨孟曉蕊
現(xiàn)代電子技術(shù) 2016年9期
關(guān)鍵詞:中間件

王玨 孟曉蕊

摘 要: 針對(duì)分布式數(shù)據(jù)庫系統(tǒng)中對(duì)等模式下副本一致性的問題,設(shè)計(jì)了一個(gè)基于中間件的數(shù)據(jù)庫同步系統(tǒng)。該系統(tǒng)利用中間件實(shí)現(xiàn)數(shù)據(jù)庫同步的目的,通過事務(wù)管理模塊、沖突檢測模塊、通信模塊、事務(wù)執(zhí)行模塊完成事務(wù)的捕獲、分析以及對(duì)沖突事務(wù)的檢測和處理。實(shí)驗(yàn)結(jié)果表明,由于沖突在本地得到檢測和處理,與兩階段協(xié)議(2PL)相比,基于中間件的數(shù)據(jù)庫同步系統(tǒng)降低了事務(wù)的響應(yīng)時(shí)間,減少了不必要的通信,提升了系統(tǒng)的性能。

關(guān)鍵詞: 數(shù)據(jù)庫同步; 對(duì)等模式; 中間件; 沖突檢測

中圖分類號(hào): TN915?34; TP311.133.1 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)09?0031?06

Abstract: To improve the duplicate consistency under peer?to?peer pattern in distributed database system, a middleware?based database synchronization system was designed. The middleware is used to realize the database synchronization in the system to capture and analyze the transaction with transaction management module, collision detection module, communication module and transaction execution module, and then detect and treat with the conflict transaction. The experimental results show that, in comparison with the two?phase locking (2PL), the middleware?based database synchronization system can reduce the response time of the transaction due to the conflict detected and treated at local, decrease the unnecessary communication, and improve the system performance.

Keywords: database synchronization; peer?to?peer pattern; middleware; conflict detection

0 引 言

隨著信息時(shí)代的到來,網(wǎng)絡(luò)技術(shù)進(jìn)一步發(fā)展和普及,基于分布式數(shù)據(jù)庫的應(yīng)用系統(tǒng)越來越廣泛,像電子購物系統(tǒng)、銀行管理系統(tǒng)等。在這些分布式應(yīng)用中,通常會(huì)引入多個(gè)數(shù)據(jù)副本。一方面用戶只需要訪問本地副本中的數(shù)據(jù),減少通信消耗和訪問延遲,從而提高應(yīng)用的性能;另一方面,多個(gè)地方的數(shù)據(jù)副本同時(shí)提供服務(wù),數(shù)據(jù)的吞吐量得到成倍的提升,且系統(tǒng)不會(huì)因?yàn)橐粋€(gè)數(shù)據(jù)副本的故障導(dǎo)致整個(gè)應(yīng)用的癱瘓,增強(qiáng)了數(shù)據(jù)的有效性和系統(tǒng)的可靠性[1?3]。如何保證分布式數(shù)據(jù)庫中數(shù)據(jù)副本的一致性顯得非常重要,也一直是數(shù)據(jù)庫應(yīng)用中的熱門問題。

目前,在現(xiàn)有的分布式數(shù)據(jù)庫同步解決方案中,對(duì)于異地并發(fā)的事務(wù),大部分解決方案采用兩階段鎖來解決并發(fā)的問題,從而實(shí)現(xiàn)副本一致性。但這種鎖機(jī)制會(huì)導(dǎo)致效率低、響應(yīng)慢,從而使得整個(gè)應(yīng)用系統(tǒng)的可靠性下降。因此,本文基于中間件技術(shù),面向?qū)Φ饶J降耐叫枨螅ㄟ^對(duì)事務(wù)的捕獲、分析以及沖突檢測,實(shí)現(xiàn)對(duì)等模式的數(shù)據(jù)庫同步。

1 數(shù)據(jù)庫同步

1.1 基本概念

數(shù)據(jù)庫同步[3?7]是指在數(shù)據(jù)庫系統(tǒng)中,存在兩個(gè)或者多個(gè)數(shù)據(jù)庫,通過技術(shù)手段將其中一個(gè)數(shù)據(jù)庫中的數(shù)據(jù)傳播到其他數(shù)據(jù)庫中,從而保持所有數(shù)據(jù)庫中的統(tǒng)一數(shù)據(jù)對(duì)象完全一致。因此,在基于數(shù)據(jù)庫的系統(tǒng)中,某一個(gè)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生改變,其他數(shù)據(jù)庫中的數(shù)據(jù)也要隨之發(fā)生改變,從而保證應(yīng)用需要。

在分布式數(shù)據(jù)庫系統(tǒng)中,往往會(huì)將同一數(shù)據(jù)放在多個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫中,引入數(shù)據(jù)副本,提高系統(tǒng)的性能和可靠性。針對(duì)這種情況,由于多個(gè)節(jié)點(diǎn)均可以對(duì)同一數(shù)據(jù)進(jìn)行操作,所以要保持所有節(jié)點(diǎn)數(shù)據(jù)一致,確保系統(tǒng)正常運(yùn)轉(zhuǎn)。

1.2 同步模式

數(shù)據(jù)庫同步模式有主從模式和對(duì)等模式[4]。主從模式的同步原理是指只有一個(gè)節(jié)點(diǎn)能夠提供數(shù)據(jù)的更新服務(wù),稱為主節(jié)點(diǎn),其他節(jié)點(diǎn)數(shù)據(jù)庫稱為從節(jié)點(diǎn)。從節(jié)點(diǎn)只可以接收數(shù)據(jù)查詢操作,而主節(jié)點(diǎn)可以接收查詢和更新操作。主從節(jié)點(diǎn)分散在不同的地理位置,從而可以快速實(shí)現(xiàn)分布式查詢服務(wù),并能夠分散分布式數(shù)據(jù)庫系統(tǒng)的查詢壓力。由于更新操作仍然集中在一個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫中,所以當(dāng)更新操作數(shù)量較大時(shí),數(shù)據(jù)庫仍要承擔(dān)大量的更新操作,會(huì)降低系統(tǒng)性能,同時(shí),當(dāng)主節(jié)點(diǎn)出現(xiàn)故障,系統(tǒng)就無法提供更新服務(wù),容錯(cuò)能力較差。

對(duì)等模式中,所有節(jié)點(diǎn)的數(shù)據(jù)庫副本都可以提供數(shù)據(jù)的查詢和更新服務(wù),既可以平衡系統(tǒng)的更新壓力和查詢壓力,又提高了系統(tǒng)的性能。當(dāng)某一個(gè)節(jié)點(diǎn)發(fā)生故障,其他節(jié)點(diǎn)仍然能夠提供查詢服務(wù)和更新服務(wù),進(jìn)一步提高了系統(tǒng)的容錯(cuò)能力。

2 對(duì)等模式數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2.1 系統(tǒng)模型

在分布式數(shù)據(jù)庫中,多個(gè)數(shù)據(jù)副本均能提供數(shù)據(jù)的讀寫服務(wù),即每個(gè)節(jié)點(diǎn)的數(shù)據(jù)副本相互之間地位對(duì)等,功能相同。因此,在同步系統(tǒng)的設(shè)計(jì)中,這些數(shù)據(jù)副本所在的節(jié)點(diǎn)構(gòu)成一個(gè)組,組內(nèi)每個(gè)成員通過同步系統(tǒng)中的通信模塊進(jìn)行同步數(shù)據(jù)的交互,從而保證數(shù)據(jù)副本的一致性。系統(tǒng)的結(jié)構(gòu)如圖1所示。

根據(jù)數(shù)據(jù)副本所分的組中,副本與副本直接是通過網(wǎng)絡(luò)相連的,每個(gè)副本所在的邏輯單位稱為節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)由兩個(gè)部分組成[6?7]:

(1) 數(shù)據(jù)庫同步中間件

對(duì)等模式下的分布式數(shù)據(jù)庫系統(tǒng)中每個(gè)節(jié)點(diǎn)都可以進(jìn)行數(shù)據(jù)的讀寫。數(shù)據(jù)庫同步中間件對(duì)用戶透明,同步系統(tǒng)通過中間件對(duì)用戶提交的讀寫事務(wù)進(jìn)行實(shí)時(shí)監(jiān)控和攔截并加以分析,當(dāng)分析到用戶提交的是含有寫操作的事務(wù)時(shí),就進(jìn)行節(jié)點(diǎn)之間的同步數(shù)據(jù)通信,檢測并發(fā)事務(wù)是否存在沖突,從而使每個(gè)節(jié)點(diǎn)中的數(shù)據(jù)副本實(shí)時(shí)保持一致性。

(2) 數(shù)據(jù)庫系統(tǒng)

分布式數(shù)據(jù)庫的每個(gè)節(jié)點(diǎn)都安裝有數(shù)據(jù)庫系統(tǒng),用于存放應(yīng)用的數(shù)據(jù)信息。對(duì)于面向該節(jié)點(diǎn)應(yīng)用的用戶來說,節(jié)點(diǎn)中的數(shù)據(jù)庫系統(tǒng)成為本地?cái)?shù)據(jù)庫(或本地副本),其他節(jié)點(diǎn)相對(duì)于用戶來說,是遠(yuǎn)程節(jié)點(diǎn),所以其他節(jié)點(diǎn)上的數(shù)據(jù)庫系統(tǒng)也稱為遠(yuǎn)程數(shù)據(jù)庫(或遠(yuǎn)程副本)。

2.2 系統(tǒng)功能模塊

各節(jié)點(diǎn)之間通過數(shù)據(jù)同步中間件進(jìn)行數(shù)據(jù)交互,如圖2所示。根據(jù)數(shù)據(jù)交互關(guān)系,將所設(shè)計(jì)的數(shù)據(jù)庫同步中間件劃分為事務(wù)管理模塊、通信模塊、沖突處理模塊和事務(wù)執(zhí)行模塊四個(gè)主要功能模塊。分布式環(huán)境下,每個(gè)節(jié)點(diǎn)都布置同步中間件,中間件的功能模塊分別處理各自的任務(wù),最終實(shí)現(xiàn)所有節(jié)點(diǎn)副本同步進(jìn)行事務(wù)更新,從而保障分布式數(shù)據(jù)庫中所有副本的數(shù)據(jù)一致性[2,7]。

2.2.1 事務(wù)管理模塊

數(shù)據(jù)庫同步中間件對(duì)用戶透明,用于監(jiān)測用戶對(duì)數(shù)據(jù)的操作,當(dāng)監(jiān)測到用戶提交的事務(wù)處理操作時(shí),首先對(duì)該事務(wù)處理操作進(jìn)行捕獲,然后對(duì)捕獲到的事務(wù)進(jìn)行判斷處理。針對(duì)事務(wù)的捕獲功能和事務(wù)的解析功能,又將事務(wù)管理模塊劃分為事務(wù)捕獲子模塊和事務(wù)解析子模塊。

2.2.2 沖突處理模塊

由于分布式環(huán)境下會(huì)出現(xiàn)多個(gè)節(jié)點(diǎn)同時(shí)對(duì)同一數(shù)據(jù)進(jìn)行操作,從而產(chǎn)生沖突的情況。所以分布式數(shù)據(jù)庫同步系統(tǒng)中需要對(duì)并發(fā)事務(wù)進(jìn)行沖突處理。

在沖突處理中,主要的任務(wù)是檢測用戶提交的事務(wù)是否存在沖突,沖突類型分為讀操作沖突和寫操作沖突。其中讀操作沖突是指讀取的數(shù)據(jù)正在被更新,寫操作沖突是指要修改的數(shù)據(jù)正在被并發(fā)事務(wù)修改。到該事物與正在執(zhí)行的并發(fā)事務(wù)存在沖突時(shí),返回中止信息,中止檢測的事務(wù),從而使所有的并發(fā)事務(wù)實(shí)現(xiàn)所有副本可串行化。

由于應(yīng)用中用戶提交的事務(wù)一般讀操作的數(shù)據(jù)量較大,考慮到通信的消耗,將讀操作在本地副本執(zhí)行,不向其他節(jié)點(diǎn)發(fā)送讀操作,從而減少系統(tǒng)的通信量。所以在本地節(jié)點(diǎn),首先對(duì)提交的事務(wù)進(jìn)行沖突檢測,當(dāng)沖突檢測通過才將事務(wù)信息進(jìn)行發(fā)送[8?13]。

沖突處理流程如圖3所示,算法如下:

(1) 本地寫沖突檢測

對(duì)提取出來的寫操作集合進(jìn)行檢測,與本地事務(wù)隊(duì)列中的操作進(jìn)行比對(duì),若發(fā)現(xiàn)有其他并發(fā)事務(wù)修改同一數(shù)據(jù)對(duì)象,則改事務(wù)與其他事務(wù)存在寫沖突,進(jìn)入步驟(3),否則進(jìn)入步驟(2)。

(2) 讀沖突檢測

① 將寫操作集合加入到本地事務(wù)隊(duì)列中;

② 判斷該事務(wù)是否為本地事務(wù),若不是本地事務(wù),則沖突檢測結(jié)束;

③ 若是本地事務(wù),則提取數(shù)據(jù)隊(duì)列中存放的該事務(wù)的讀操作集合。對(duì)讀操作集合進(jìn)行讀沖突檢測,若存在沖突,則返回abort信息,沖突檢測結(jié)束;

④ 若不存在讀沖突,返回commit信息,沖突檢測結(jié)束。

(3) 本地事務(wù)檢測

① 判斷寫操作集合是否為本地事務(wù),若不是本地事務(wù),沖突檢測結(jié)束;

② 若是本地事務(wù),將本地?cái)?shù)據(jù)隊(duì)列中存放該事務(wù)對(duì)應(yīng)的數(shù)據(jù)信息刪除,釋放空間,沖突檢測結(jié)束。

2.2.3 通信模塊

數(shù)據(jù)庫同步中間件相互之間通過通信模塊進(jìn)行數(shù)據(jù)傳輸。通信模塊的主要功能是將系統(tǒng)中的同步數(shù)據(jù)有序地傳送到每一個(gè)成員節(jié)點(diǎn)上,副本節(jié)點(diǎn)上的數(shù)據(jù)庫同步中間件的通信模塊接收所有成員節(jié)點(diǎn)發(fā)送的同步信息和同步數(shù)據(jù)。在設(shè)計(jì)中,考慮便于到同步數(shù)據(jù)的轉(zhuǎn)換和解析,結(jié)合XML的特性,將同步的數(shù)據(jù)和信息通過通信模塊封裝成XML格式信息,將信息通過網(wǎng)絡(luò)發(fā)送給其他成員節(jié)點(diǎn)。其他副本節(jié)點(diǎn)接收到XML信息后,對(duì)其進(jìn)行解析,并根據(jù)解析出來的信息對(duì)數(shù)據(jù)進(jìn)行操作。由于需要對(duì)同步數(shù)據(jù)進(jìn)行封裝、解析以及發(fā)送和接收,所以同步中間件的通信模塊分為數(shù)據(jù)發(fā)送/接收子模塊和數(shù)據(jù)解析/封裝子模塊。

在XML格式同步信息中,主要有三大類消息:組成員管理消息、事務(wù)同步消息和異常處理消息。其中組成員管理信息主要包括同步系統(tǒng)中節(jié)點(diǎn)離線/上線,加入/退出的消息;事務(wù)同步消息中主要包括事務(wù)的提交/中止信息和更新事務(wù)的寫操作集合信息;異常處理消息包括同步異常消息、節(jié)點(diǎn)狀態(tài)異常消息等。

數(shù)據(jù)庫同步信息具體說明如表1所示。

2.2.4 事務(wù)執(zhí)行模塊

事務(wù)執(zhí)行模塊負(fù)責(zé)處理本節(jié)點(diǎn)中通過沖突檢測后的事務(wù),通過調(diào)用數(shù)據(jù)庫訪問接口將事務(wù)提交到本地?cái)?shù)據(jù)庫,獲取事務(wù)執(zhí)行的結(jié)果和異常信息。

用戶提交的事務(wù)執(zhí)行流程如圖4所示,算法如下:

(1) 本地事務(wù)檢測

① 接收到提交信息,根據(jù)事務(wù)ID,從本地隊(duì)列中提取該事物的寫操作結(jié)合;

② 根據(jù)事務(wù)信息判斷該事務(wù)是否為本地事務(wù),若是本地事務(wù),進(jìn)入步驟(2),否則進(jìn)入步驟(3)。

(2) 本地事務(wù)處理

① 根據(jù)事務(wù)ID,從隊(duì)列中將該事物的讀操作集合提取出來;

② 將讀操作集合和寫操作集合按照順序合并,恢復(fù)成事務(wù)提交狀態(tài),進(jìn)入步驟(3)。

(3) 執(zhí)行事務(wù)

① 根據(jù)本地節(jié)點(diǎn)的數(shù)據(jù)庫接口連接數(shù)據(jù)庫,并在數(shù)據(jù)庫中執(zhí)行用戶提交的事務(wù);

② 若改事務(wù)執(zhí)行成功,則返回事務(wù)執(zhí)行的結(jié)果,否則返回事務(wù)執(zhí)行的異常信息。

3 對(duì)等模式下分布式數(shù)據(jù)庫同步協(xié)議

3.1 基本思想

由于在分布式數(shù)據(jù)庫中,副本數(shù)據(jù)存放在不同地方的數(shù)據(jù)庫節(jié)點(diǎn)中,所以同一時(shí)間段執(zhí)行的事務(wù)除了本地節(jié)點(diǎn)中提交的事務(wù),還包含了所有遠(yuǎn)程節(jié)點(diǎn)上用戶提交的事務(wù)的集合。要使分布式數(shù)據(jù)庫中所有節(jié)點(diǎn)副本的數(shù)據(jù)達(dá)到一致,就需要從全局角度對(duì)同一時(shí)間段所有并發(fā)事務(wù)進(jìn)行沖突檢測和處理。

猜你喜歡
中間件
我國自主可控中間件發(fā)展研究
RFID中間件技術(shù)及其應(yīng)用研究
基于VanConnect中間件的設(shè)計(jì)與開發(fā)
基于Android 平臺(tái)的OSGi 架構(gòu)中間件的研究與應(yīng)用
機(jī)載計(jì)算機(jī)中間件技術(shù)研究
RFID中間件發(fā)展與趨勢研究
以實(shí)力證明 用事實(shí)說話
中間件在高速公路領(lǐng)域的應(yīng)用
云計(jì)算環(huán)境下中間件的負(fù)載均衡機(jī)制研究
基于SAF規(guī)范的高可用電信中間件設(shè)計(jì)
邢台市| 乌兰县| 偃师市| 西平县| 麟游县| 罗山县| 福海县| 廉江市| 伊春市| 平武县| 盐山县| 曲阜市| 碌曲县| 浑源县| 伊春市| 双鸭山市| 芒康县| 安义县| 普兰店市| 桓台县| 黄平县| 绥阳县| 攀枝花市| 永胜县| 吴川市| 当涂县| 沿河| 绥阳县| 揭阳市| 林口县| 同心县| 治县。| 沧州市| 河源市| 阳原县| 永修县| 潮州市| 建水县| 汽车| 成安县| 精河县|