典型拓?fù)渲粸槎嘀鲾?shù)據(jù)庫(kù)集群。作為示例性實(shí)施例,數(shù)據(jù)庫(kù)集群中存在3個(gè)節(jié)點(diǎn),所有節(jié)點(diǎn)均允許寫入。這時(shí)候,每個(gè)節(jié)點(diǎn)中的每個(gè)變化將同步到剩余兩個(gè)節(jié)點(diǎn)以保持底層的分布式網(wǎng)絡(luò)環(huán)境的一致性。分布式網(wǎng)絡(luò)環(huán)境可采用現(xiàn)有“網(wǎng)狀”或“星型”方案中的任意一者。
[0094]在任一方案中,提出了與本發(fā)明的目標(biāo)一致的多個(gè)緩存以及基于這些緩存的路由重新計(jì)算。
[0095]在不考慮底層拓?fù)涞那闆r下,當(dāng)存在多個(gè)訂戶但每個(gè)訂戶附著到不同的邊緣路由器時(shí),簡(jiǎn)單的緩存技術(shù)是不夠的。
[0096]在如圖8適當(dāng)所示的場(chǎng)景中,以及通過緩存技術(shù),還需要對(duì)數(shù)據(jù)包進(jìn)行合適地路由。因此,當(dāng)主DB節(jié)點(diǎn)路由器識(shí)別DB集群的拓?fù)錇樯鲜鲂再|(zhì)時(shí),主DB節(jié)點(diǎn)路由器計(jì)算到每個(gè)節(jié)點(diǎn)的路徑?;谠撚?jì)算,DB集群在可以使用緩存的網(wǎng)絡(luò)中建立路徑。在示例性實(shí)施例中,這些路徑可以通過RSVP-TE (針對(duì)流量工程擴(kuò)展的資源預(yù)留協(xié)議)或MPLS-TE機(jī)制建立。
[0097]圖8示出了本發(fā)明的該實(shí)施例,該實(shí)施例涉及一些特定條件下的包的實(shí)際路由和緩存。通常,路由器I使用路由器2中的緩存數(shù)據(jù)創(chuàng)建路徑以及用于向路由器3進(jìn)行路由的標(biāo)簽,反之亦然。
[0098]當(dāng)路由器I確定包在路由器2中緩存并且包需要立刻傳輸?shù)铰酚善?時(shí),路由器I使用已緩存的指紋以及該路徑標(biāo)簽。路由器2在接收指紋和特定標(biāo)簽時(shí)處理包并將包數(shù)據(jù)轉(zhuǎn)換為實(shí)際數(shù)據(jù)并隨后將實(shí)際數(shù)據(jù)轉(zhuǎn)發(fā)到路由器3。
[0099]該技術(shù)特征本質(zhì)上節(jié)省了“2個(gè)單元距離”,否則這些就是冗余數(shù)據(jù)。
[0100]本發(fā)明的另一實(shí)施例涉及為從DB操作角度表達(dá)的不同性質(zhì)的流(例如,“重做流(REDO stream)”、“全鏡像流(Full Mirror stream)”、“優(yōu)先級(jí)流(Pr1rity Stream),,)應(yīng)用特定策略。
[0101]數(shù)據(jù)庫(kù)感知路由器配置有各種連接參數(shù)以及策略。一個(gè)示例性實(shí)施例包括具有最大MTU(最大傳輸單元)的初始鏡像流的連接以及壓縮。數(shù)據(jù)庫(kù)感知路由器使用提及的策略創(chuàng)建標(biāo)簽交換路徑。這種標(biāo)簽交換路徑通過CSPF和LDP實(shí)施。主數(shù)據(jù)庫(kù)節(jié)點(diǎn)邊緣路由器在流傳輸中確定流的性質(zhì)并應(yīng)用合適的策略。
[0102]本質(zhì)上,創(chuàng)建基于路由器配置的最大MTU(最大傳輸單元)路徑以允許路由該路徑上的初始鏡像(完全同步)包。
[0103]圖9示出了示例性MDER(主DB節(jié)點(diǎn)邊緣路由器)中配置的數(shù)據(jù)。
[0104]圖10示出了MDER(主DB節(jié)點(diǎn)邊緣路由器)在分布式網(wǎng)絡(luò)環(huán)境中進(jìn)行通告和訂閱的流程圖。
[0105]與本發(fā)明一致的由MDER(主DB節(jié)點(diǎn)邊緣路由器)進(jìn)行的通告和訂閱包括但不限于以下步驟。
[0106]起初MDER(主DB節(jié)點(diǎn)邊緣路由器)在配置有復(fù)制服務(wù)時(shí)將該服務(wù)通告給整個(gè)分布式網(wǎng)絡(luò)。任意DB感知路由器接收該通告并存儲(chǔ)通告信息。當(dāng)DB感知路由器配置有訂戶信息及相應(yīng)的集群信息時(shí),DB感知路由器向MDER訂閱服務(wù)。此時(shí),該節(jié)點(diǎn)成為SDER(訂戶數(shù)據(jù)庫(kù)邊緣路由器)。示例性實(shí)施例中的訂閱可以通過XMPP、Jabber或SIP呈現(xiàn)(RFC-3265)等訂閱協(xié)議之一來處理。
[0107]對(duì)于每個(gè)添加到集群中的訂戶DB節(jié)點(diǎn),配置相應(yīng)的SDER(訂戶數(shù)據(jù)庫(kù)邊緣路由器)并且該SDER訂閱服務(wù)。因此,在實(shí)施例中,如果SDER(訂戶數(shù)據(jù)庫(kù)邊緣路由器)配置有2個(gè)訂戶DB節(jié)點(diǎn),那么該SDER將訂閱兩次服務(wù)。MDER(主DB節(jié)點(diǎn)邊緣路由器)在接收訂閱時(shí)檢查該SDER(訂戶數(shù)據(jù)庫(kù)邊緣路由器)是否已訂閱。如果該SDER(訂戶數(shù)據(jù)庫(kù)邊緣路由器)已訂閱該服務(wù),那么MDER在MDER-SDER鏈路上開啟緩存。
[0108]在另一實(shí)施例中,主數(shù)據(jù)庫(kù)將REDO日志信息發(fā)送給其訂戶。MDER(主DB節(jié)點(diǎn)邊緣路由器)知道REDO日志的概念。MDER(主DB節(jié)點(diǎn)邊緣路由器)攔截來自主DB節(jié)點(diǎn)的包并嘗試確定該包是否為REDO日志包。在典型實(shí)施例中的所述確定可通過配置IP地址和端口號(hào)實(shí)現(xiàn)。
[0109]此處,特定的(源IP+目的IP+目的端口)還可與信道關(guān)聯(lián)并且該信道可與REDO日志策略關(guān)聯(lián)?;蛘?,MDRR可配備有REDO消息的報(bào)文格式并且通過使用DPI(深度報(bào)文檢測(cè))技術(shù)可以確定包的性質(zhì)。因此,路由器對(duì)數(shù)據(jù)復(fù)制流量流性質(zhì)的確定以及策略的選擇性應(yīng)用是本發(fā)明的關(guān)鍵技術(shù)特征。
[0110]參照?qǐng)D10解釋通告和訂閱步驟。主DB邊緣路由器(1001)配置了復(fù)制(主)服務(wù)。之后,復(fù)制服務(wù)由主DB邊緣路由器通告/發(fā)布(1002)。相應(yīng)的訂戶DB邊緣路由器存儲(chǔ)復(fù)制服務(wù)通告(1003)并配置復(fù)制(訂戶)服務(wù)(1004)。
[0111]之后,訂戶DB邊緣路由器確定是否已存在這種服務(wù)的通告/發(fā)布。如果存在這種服務(wù)的通告,那么由訂戶DB邊緣路由器發(fā)送訂閱并且由主DB邊緣路由器接收該訂閱(1007)。
[0112]主DB邊緣路由器在接收所述訂閱(1007)時(shí)確定路由器是否已訂閱(1008),如果已訂閱,開啟緩存(I 009)并隨后存儲(chǔ)訂閱詳情(I 011)。如果未訂閱,存儲(chǔ)訂閱詳情(I 011)(而不開啟緩存)。
[0113]圖11示出了REDO緩存優(yōu)化的流程圖。
[0114]此處,一旦MDER(主數(shù)據(jù)庫(kù)節(jié)點(diǎn)邊緣路由器)確定包為REDO包,MDER嘗試對(duì)該包進(jìn)行最優(yōu)緩存。如果該MDER-SDER路徑上存在多個(gè)訂閱者節(jié)點(diǎn),那么該包必定重復(fù)JDER檢查緩存是否在該MDER-SDER路徑上開啟。如果開啟,那么MDER繼續(xù)如以上流程圖所述處理包。要注意的另一關(guān)鍵點(diǎn)在于給緩存的包貼上標(biāo)簽。該標(biāo)簽可以與SDER預(yù)協(xié)商或由SDER/MDER靜態(tài)地配置。一旦SDER接收具有該標(biāo)簽的包,SDER將指紋轉(zhuǎn)換為實(shí)際包并將實(shí)際的包轉(zhuǎn)發(fā)到訂戶。需要周期性地調(diào)整主-SI和主-S2之間的TCP流。如果不調(diào)整,那么由于網(wǎng)絡(luò)環(huán)境流可能具有偏置,并且緩存失敗。
[0115]參照?qǐng)D11,MDER(主DB節(jié)點(diǎn)邊緣路由器)確定從主數(shù)據(jù)庫(kù)接收(1102)的數(shù)據(jù)包是否為REDO數(shù)據(jù)(1103)。如果接收的數(shù)據(jù)為REDO數(shù)據(jù),從數(shù)據(jù)包中提取目的地址并將目的地址與查找邊緣路由器信息(1105)進(jìn)行匹配。如果確定還沒有為邊緣路由器緩存數(shù)據(jù)包,轉(zhuǎn)發(fā)數(shù)據(jù)包(I 108)。
[0116]否則,如果已經(jīng)為邊緣路由器緩存數(shù)據(jù)包,為整個(gè)包生成指紋(1107)。如果指紋已經(jīng)存在(1109),存儲(chǔ)指紋和數(shù)據(jù)包(1110)并轉(zhuǎn)發(fā)這兩者(1111)。
[0117]如果指紋已不存在,給包數(shù)據(jù)貼上標(biāo)簽并僅轉(zhuǎn)發(fā)指紋。
[0118]在本發(fā)明的范圍內(nèi)對(duì)數(shù)據(jù)包進(jìn)行指紋識(shí)別是一種使用包的特點(diǎn)創(chuàng)建唯一密鑰的方法,通過該方法可以在緩存中唯一確定包。
[0119]因此,對(duì)IP包/數(shù)據(jù)包進(jìn)行優(yōu)化緩存基于開啟緩存。對(duì)物理復(fù)制日志(DB中的REDO)以及邏輯復(fù)制日志(DB中的SQL)進(jìn)行緩存。
[0120]圖12示出了參照?qǐng)D11如上所述的用于優(yōu)化的REDO緩存的相應(yīng)序列圖。
[0121]參照?qǐng)D12的序列圖,主數(shù)據(jù)庫(kù)(DB)向主DB邊緣路由器發(fā)送第一RED0-1 (1200)。主DB邊緣路由器隨后緩存所述接收到的第一RED0-1 (1202)。之后,主DB邊緣路由器將第一RED0-1以及指紋轉(zhuǎn)發(fā)到訂戶數(shù)據(jù)庫(kù)(DB)路由器(1203)。訂戶數(shù)據(jù)庫(kù)路由器將RED0-1包轉(zhuǎn)發(fā)到訂戶數(shù)據(jù)庫(kù)(DB) (I)。同時(shí),(由于不知道底層拓?fù)涞闹鲾?shù)據(jù)庫(kù)存在兩個(gè)訂戶數(shù)據(jù)庫(kù),)主數(shù)據(jù)庫(kù)(DB)將第二 RED0-1發(fā)送到主DB邊緣路由器(1201)。主DB邊緣路由器隨后提取指紋(1204)并將指紋(1205)轉(zhuǎn)發(fā)到訂戶數(shù)據(jù)庫(kù)(DB)路由器(1205)。之后,訂戶數(shù)據(jù)庫(kù)路由器將RED0-1轉(zhuǎn)發(fā)到訂戶數(shù)據(jù)庫(kù)2(1207)。
[0122]圖13示出了基于緩存的最優(yōu)路由的示例性網(wǎng)絡(luò)圖。
[0123]在本發(fā)明的典型實(shí)施例中,MDER在確定DB(數(shù)據(jù)庫(kù))集群的拓?fù)渲髧L試最優(yōu)地使用緩存。如果新SDER訂閱到MDER并且SDER僅擁有一名訂戶,MDER嘗試找出是否存在任意已訂閱的鄰近SDER。如果存在,MDER嘗試創(chuàng)建“交換路徑”用于優(yōu)化MDER。
[0124]在圖13中,發(fā)往SI(訂戶I)的第一REDO通過RE發(fā)送(路由器2)。標(biāo)記該包進(jìn)行緩存。當(dāng)相同的REDO被發(fā)送到S2(訂戶2)時(shí),指紋切換到R2(路由器2)。隨后,R2(路由器2)檢索實(shí)際的數(shù)據(jù)包并將該數(shù)據(jù)包轉(zhuǎn)發(fā)到R3(路由器3),R3隨后將該數(shù)據(jù)包轉(zhuǎn)發(fā)到S2(訂戶2)。
[0125]確切地說,參照?qǐng)D13,本發(fā)明的分布式網(wǎng)絡(luò)環(huán)境的示例性實(shí)施例包括主數(shù)據(jù)庫(kù)(M)、兩名訂戶(S1、S2)、一個(gè)邊緣路由器(Rl)以及兩個(gè)訂戶路由器(R2、R3)。
[0126]主數(shù)據(jù)庫(kù)(M)為其兩個(gè)訂戶(S1、S2)分別發(fā)送一個(gè)RED0(1301)。邊緣路由器(Rl)接收這兩個(gè)RED0,但是僅為訂戶2(S2)將指紋發(fā)送給路由器2(R2)。
[0127]路由器R2隨后為SI (訂戶I)發(fā)送REDO并且還將一個(gè)單獨(dú)的REDO轉(zhuǎn)發(fā)給路由器3(R3)。實(shí)際上,路由器3(R3)將REDO轉(zhuǎn)發(fā)給訂戶2(S2)。
[0128]圖14示出了基于緩存的最優(yōu)路由的示例性路徑創(chuàng)建。
[0129]在該實(shí)施例中,使路由器知道多種類型的DB復(fù)制流量,流量在DB(數(shù)據(jù)庫(kù))節(jié)點(diǎn)之間流動(dòng)。每種類型的流量示為一個(gè)信道。數(shù)據(jù)復(fù)制流量可以為常規(guī)REDO(同步)流量或初始(或完整)鏡像或優(yōu)先級(jí)包(特定類型的DDL)。對(duì)于每種類型的流量,在路由器中配置多種策略。本發(fā)明的路由器設(shè)備在路由器中創(chuàng)建規(guī)則,例如開啟壓縮的完全冗余消除。MDER還創(chuàng)建特殊路徑或標(biāo)簽以適配這些信道。對(duì)于初始(或完整)鏡像,路由器創(chuàng)建具有最大MTU (最大傳輸單元)的路徑。類似地,MDER為優(yōu)先信道創(chuàng)建到目的地的另一標(biāo)記的路徑。MDER從來不為優(yōu)先級(jí)信道開啟壓縮。
[0130]MDER(主數(shù)據(jù)庫(kù)邊緣路由器)檢測(cè)信道的機(jī)制包括但不限于IP+Port配置或使用DPI。
[0131]另外,DB(數(shù)據(jù)庫(kù))節(jié)點(diǎn)主動(dòng)與路由器進(jìn)行交互以提供多種輸入,這樣路由器可以最優(yōu)操作以建立拓?fù)洹?br>[0132]通過實(shí)施配置或SNMP或Netconf等管