两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法與流程

文檔序號:11254148閱讀:506來源:國知局

本發(fā)明涉及通訊技術領域,尤其涉及通訊地址發(fā)現(xiàn)機制技術領域,具體是指一種基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法。



背景技術:

在傳統(tǒng)的bras(broadbandremoteaccessserver,寬帶遠程接入服務器)設備中,控制面、轉發(fā)面都是專有定制化單板,單板之間都是通過機架的背板進行數(shù)據(jù)交換的。整個機架環(huán)境都是固定的、穩(wěn)定的、整體的,所以單板間或者單板內(nèi)的業(yè)務進程進行數(shù)據(jù)交互時,可以采用固定的邏輯地址,譬如,采用tipc作為底層通訊機制時,可以根據(jù)機架號、槽位號、cpu號、業(yè)務編號等等信息來編制固定不變的邏輯地址。這樣各個業(yè)務進程啟動后,可以直接向其它業(yè)務進程發(fā)送數(shù)據(jù)。

但是,在vbras設備中,控制面、轉發(fā)面都是普通的服務器,甚至是虛擬機或者docker(一種開源的應用容器引擎)實例。服務器、虛擬機可能是跨操作系統(tǒng)的,甚至服務器都部署在不同的地址位置上。那么控制面與轉發(fā)面之間的業(yè)務進程需要進行數(shù)據(jù)通訊時,就無法使用固定的邏輯地址了,而需要采用物理地址進行通訊。



技術實現(xiàn)要素:

本發(fā)明的目的是克服了上述現(xiàn)有技術的缺點,提供了一種能夠基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法。

為了實現(xiàn)上述目的,本發(fā)明具有如下構成:

該基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法,包括鏈接建立處理操作和?;顮顟B(tài)維持處理操作,所述的鏈接建立處理操作,包括以下步驟:

(1)創(chuàng)建第一業(yè)務進程、第二業(yè)務進程和第三業(yè)務進程,將所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程鏈接zookeeper的動態(tài)庫,并啟動zookeeper服務端;

(2)啟動所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程,所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程分別創(chuàng)建對應的zookeeper客戶端,各個所述的zookeeper客戶端均向所述的zookeeper服務端進行注冊;

(3)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程根據(jù)預設的通訊模型,向所述的zookeeper客戶端創(chuàng)建不同樹形的zookeeper數(shù)據(jù)庫節(jié)點;

(4)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程分別觀察所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程的數(shù)據(jù)庫節(jié)點;

(5)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程在所述的對應的對端業(yè)務進程上線并獲取到所述的對應的對端業(yè)務進程的通訊地址之后,與所述的對應的對端業(yè)務進程建立tcp(transmissioncontrolprotocol,傳輸控制協(xié)議)鏈接,并發(fā)送業(yè)務數(shù)據(jù);

所述的?;顮顟B(tài)維持處理操作,具體如下:

在所述的zookeeper服務端與所述的zookeeper客戶端以及所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程之間進行周期性的保活檢測。較佳地,所述的步驟(3)具體包括以下步驟:

(3-1)所述的第一業(yè)務進程向zookeeper客戶端創(chuàng)建數(shù)據(jù)庫節(jié)點“/業(yè)務名1/server”,并向“server”節(jié)點中寫入所述的第一業(yè)務進程的通訊地址;

(3-2)所述的第二業(yè)務進程和所述的第三業(yè)務進程分別向zookeeper客戶端創(chuàng)建數(shù)據(jù)庫節(jié)點“/業(yè)務名1/clients/業(yè)務名2”和“/業(yè)務名1/clients/業(yè)務名3”,并向“業(yè)務名2”節(jié)點和“業(yè)務名3”節(jié)點中對應寫入所述的第二業(yè)務進程和所述的第三業(yè)務進程的通訊地址。

在一種更佳的實施方式中,所述的步驟(3-2)中在向?qū)Χ藰I(yè)務進程發(fā)布通訊地址時,同時發(fā)布兩類地址:unix地址和inet地址,其中,a).unix地址(便于host內(nèi)節(jié)點連接);b).inet地址(便于不同host上節(jié)點連接)。

在一種較佳的實施方式中,所述的第一業(yè)務進程為數(shù)據(jù)服務端、所述的第二業(yè)務進程與所述的第三業(yè)務進程為數(shù)據(jù)客戶端,所述的步驟(4)具體包括以下步驟:

(4-1)所述的第一業(yè)務進程創(chuàng)建完成數(shù)據(jù)庫節(jié)點后,所述的第一業(yè)務進程觀察其相關聯(lián)的數(shù)據(jù)客戶端所創(chuàng)建的數(shù)據(jù)庫節(jié)點的父節(jié)點“/業(yè)務名1/clients”,判斷是否存在多個客戶端在線,如果是,則繼續(xù)步驟(4-2);

(4-2)所述的第一業(yè)務進程從數(shù)據(jù)庫節(jié)點“/業(yè)務名1/clients/業(yè)務名2”和“/業(yè)務名1/clients/業(yè)務名3”中讀取所述的第二業(yè)務進程和所述的第三業(yè)務進程的通訊地址;

(4-3)所述的第二業(yè)務進程和所述的第三業(yè)務進程創(chuàng)建完成數(shù)據(jù)庫節(jié)點后,判斷數(shù)據(jù)庫節(jié)點“/業(yè)務名1/server”是否存在,如果是,則讀取所述的第一業(yè)務進程的通訊地址。

在一種較佳的實施方式中,其特征在于,所述的?;顮顟B(tài)維持處理操作具體包括維持保活狀態(tài)的第三方數(shù)據(jù)庫處理子過程和維持?;顮顟B(tài)的業(yè)務進程自身處理子過程。

在一種較佳的實施方式中,維持?;顮顟B(tài)的第三方數(shù)據(jù)庫處理子過程,包括以下步驟:

(5-1-1)所述的zookeeper服務端判斷是否存在所述的zookeeper客戶端保活超時,如果是,則刪除該zookeeper客戶端曾經(jīng)創(chuàng)建的數(shù)據(jù)庫節(jié)點,并且通知觀察該刪除節(jié)點的zookeeper客戶端;

(5-1-2)當所述的zookeeper客戶端通知所述的第一業(yè)務進程、所述的第二業(yè)務進程和所述的第三業(yè)務進程各自的觀察節(jié)點的刪除事件時,關閉tcp鏈接;

(5-1-3)當所述的zookeeper客戶端通知所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程各自的觀察節(jié)點的添加事件時,所述的第一業(yè)務進程檢查對應的對端業(yè)務進程的當前狀態(tài),所述的第二業(yè)務進程檢查對應的對端業(yè)務進程的當前狀態(tài)、所述的第三業(yè)務進程檢查對應的對端業(yè)務進程的當前狀態(tài);

在一種較佳的實施方式中,維持?;顮顟B(tài)的業(yè)務進程自身處理子過程,包括以下步驟:

(5-2-1)在所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程之間建立兩條鏈路;

(5-2-2)在所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程內(nèi)部創(chuàng)建新的線程。

在一種較佳的實施方式中,所述的步驟(5-1-3)中,所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程分別檢查對應的對端業(yè)務進程的當前狀態(tài)具體包括以下步驟:

(5-1-3-1)如果所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程的當前狀態(tài)是下線狀態(tài),則繼續(xù)步驟(5-1-3-2),否則,繼續(xù)步驟(5-1-3-3);

(5-1-3-2)開始上線流程;

(5-1-3-3)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程獲取該觀察節(jié)點中所述的對應的對端業(yè)務進程的通訊地址,并判斷有無發(fā)生變化,如果發(fā)生變化,則繼續(xù)步驟(5-1-3-3-1),否則,繼續(xù)步驟(5-1-3-3-2);

(5-1-3-3-1)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程關閉之前所述的tcp鏈接,并根據(jù)新地址建立新的tcp鏈接,同時判斷雙方業(yè)務進程是否處于同一個host內(nèi),如果所述的雙方業(yè)務進程處于同一個host內(nèi),則使用unix地址同時建立兩個鏈接;如果所述的雙方業(yè)務進程在不同的host,則使用inet地址同時建立兩個鏈接;

(5-1-3-3-2)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程過濾此次所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務上線事件。

在一種較佳的實施方式中,在步驟(5-2-2)創(chuàng)建新的線程中,所述的新的線程處理?;顮顟B(tài)的維持過程,具體包括:

(5-2-2-1)?;顖笪牡闹芷谛园l(fā)送;

(5-2-2-2)epoll所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程間?;顖笪牡慕邮?。

在一種較佳的實施方式中,其特征在于,在所述的步驟(5-1-3-3-1)中,建立新的tcp鏈接中,需要設置md5選項。

在一種較佳的實施方式中,其特征在于,所述的兩條鏈路進行?;顧z測和業(yè)務數(shù)據(jù)傳輸?shù)呢摵煞謸?/p>

在一種較佳的實施方式中,其特征在于,進行?;顧z測時具體包括以下步驟:(9-1)所述的兩條鏈路分別檢測所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程是否下線,如果是,則繼續(xù)步驟(9-1-1),否則,繼續(xù)步驟(9-1-2);

(9-1-1)確認所述的對應的對端業(yè)務進程真正下線;

(9-1-2)確認所述的對應的對端業(yè)務進程沒有下線。

采用了該發(fā)明中的基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法,在vbras環(huán)境中,業(yè)務進程可以動態(tài)的發(fā)現(xiàn)通訊對端的上下線事件;同時,還能夠獲取對端的通訊地址,并具有雙重的?;顧C制,極大的提高業(yè)務進程間下線事件的判斷準確率。避免由于錯誤的判斷對端下線事件,而導致業(yè)務進程間發(fā)送不必要的重復性的大量數(shù)據(jù),從而提高vbras環(huán)境中整體業(yè)務進程的穩(wěn)定性,具有廣泛的應用范圍。

附圖說明

圖1為本發(fā)明的基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法的示意圖。

具體實施方式

為了能夠更清楚地描述本發(fā)明的技術內(nèi)容,下面結合具體實施例來進行進一步的描述。

該基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法,包括鏈接建立處理操作和保活狀態(tài)維持處理操作,所述的鏈接建立處理操作,包括以下步驟:

(1)創(chuàng)建第一業(yè)務進程、第二業(yè)務進程和第三業(yè)務進程,將所有業(yè)務進程鏈接zookeeper的動態(tài)庫,并啟動zookeeper服務端;

(2)啟動所有業(yè)務進程,向zookeeper進行注冊,并創(chuàng)建zookeeper客戶端;

(3)所有業(yè)務進程根據(jù)預設的通訊模型,向所述的zookeeper客戶端創(chuàng)建不同樹形的zookeeper數(shù)據(jù)庫節(jié)點;

(4)觀察對端業(yè)務進程的數(shù)據(jù)庫節(jié)點;

(5)在對端上線并獲取對端的通訊地址之后,與對端建立tcp鏈接,并發(fā)送業(yè)務數(shù)據(jù);

所述的保活狀態(tài)維持處理操作,具體如下:

在所述的zookeeper服務端與所述的zookeeper客戶端之間進行周期性的保活檢測。

在一種較佳的實施方式中,所述的步驟(3)具體包括以下步驟:

(3-1)所述的第一業(yè)務進程向zookeeper客戶端創(chuàng)建數(shù)據(jù)庫節(jié)點“/業(yè)務名1/server”,并向“server”節(jié)點中寫入所述的第一業(yè)務進程的通訊地址;

(3-2)所述的第二業(yè)務進程和所述的第三業(yè)務進程分別向zookeeper客戶端創(chuàng)建數(shù)據(jù)庫節(jié)點“/業(yè)務名1/clients/業(yè)務名2”和“/業(yè)務名1/clients/業(yè)務名3”,并向“業(yè)務名2”節(jié)點和“業(yè)務名3”節(jié)點中對應寫入所述的第二業(yè)務進程和所述的第三業(yè)務進程的通訊地址。

在一種更佳的實施方式中,所述的步驟(3-2)中在向?qū)Χ藰I(yè)務進程發(fā)布通訊地址時,同時發(fā)布兩類地址:unix地址和inet地址,其中,a).unix地址(便于host內(nèi)節(jié)點連接);b).inet地址(便于不同host上節(jié)點連接)。

在一種較佳的實施方式中,所述的第一業(yè)務進程為數(shù)據(jù)服務端、所述的第二業(yè)務進程與所述的第三業(yè)務進程為數(shù)據(jù)客戶端,所述的步驟(4)具體包括以下步驟:

(4-1)所述的第一業(yè)務進程創(chuàng)建完成數(shù)據(jù)庫節(jié)點后,所述的第一業(yè)務進程觀察其相關聯(lián)的數(shù)據(jù)客戶端所創(chuàng)建的數(shù)據(jù)庫節(jié)點的父節(jié)點“/業(yè)務名1/clients”,判斷是否存在多個客戶端在線,如果是,則繼續(xù)步驟(4-2);

(4-2)所述的第一業(yè)務進程從數(shù)據(jù)庫節(jié)點“/業(yè)務名1/clients/業(yè)務名2”和“/業(yè)務名1/clients/業(yè)務名3”中讀取所述的第二業(yè)務進程和所述的第三業(yè)務進程的通訊地址;

(4-3)所述的第二業(yè)務進程和所述的第三業(yè)務進程創(chuàng)建完成數(shù)據(jù)庫節(jié)點后,判斷數(shù)據(jù)庫節(jié)點“/業(yè)務名1/server”是否存在,如果是,則讀取所述的第一業(yè)務進程的通訊地址。

在一種較佳的實施方式中,其特征在于,所述的?;顮顟B(tài)維持處理操作具體包括維持保活狀態(tài)的第三方數(shù)據(jù)庫處理子過程和維持?;顮顟B(tài)的業(yè)務進程自身處理子過程。

在一種較佳的實施方式中,維持保活狀態(tài)的第三方數(shù)據(jù)庫處理子過程,包括以下步驟:

(5-1-1)所述的zookeeper服務端判斷是否存在所述的zookeeper客戶端?;畛瑫r,如果是,則刪除該zookeeper客戶端曾經(jīng)創(chuàng)建的數(shù)據(jù)庫節(jié)點,并且通知觀察該刪除節(jié)點的zookeeper客戶端;

(5-1-2)當所述的zookeeper客戶端通知所述的第一業(yè)務進程、所述的第二業(yè)務進程和所述的第三業(yè)務進程各自的觀察節(jié)點的刪除事件時,關閉tcp鏈接;

(5-1-3)當所述的zookeeper客戶端通知所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程各自的觀察節(jié)點的添加事件時,所述的第一業(yè)務進程檢查對應的對端業(yè)務進程的當前狀態(tài),所述的第二業(yè)務進程檢查對應的對端業(yè)務進程的當前狀態(tài)、所述的第三業(yè)務進程檢查對應的對端業(yè)務進程的當前狀態(tài);

在一種較佳的實施方式中,維持?;顮顟B(tài)的業(yè)務進程自身處理子過程,包括以下步驟:

(5-2-1)在所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程之間建立兩條鏈路;

(5-2-2)在所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程內(nèi)部創(chuàng)建新的線程。

在一種較佳的實施方式中,所述的步驟(5-1-3)中,所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程分別檢查對應的對端業(yè)務進程的當前狀態(tài)具體包括以下步驟:

(5-1-3-1)如果所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程的當前狀態(tài)是下線狀態(tài),則繼續(xù)步驟(5-1-3-2),否則,繼續(xù)步驟(5-1-3-3);

(5-1-3-2)開始上線流程;

(5-1-3-3)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程獲取該觀察節(jié)點中所述的對應的對端業(yè)務進程的通訊地址,并判斷有無發(fā)生變化,如果發(fā)生變化,則繼續(xù)步驟(5-1-3-3-1),否則,繼續(xù)步驟(5-1-3-3-2);

(5-1-3-3-1)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程關閉之前所述的tcp鏈接,并根據(jù)新地址建立新的tcp鏈接,同時判斷雙方業(yè)務進程是否處于同一個host內(nèi),如果所述的雙方業(yè)務進程處于同一個host內(nèi),則使用unix地址同時建立兩個鏈接;如果所述的雙方業(yè)務進程在不同的host,則使用inet地址同時建立兩個鏈接;

(5-1-3-3-2)所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程過濾此次所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務上線事件。

在一種較佳的實施方式中,在步驟(5-2-2)創(chuàng)建新的線程中,所述的新的線程處理?;顮顟B(tài)的維持過程,具體包括:

(5-2-2-1)保活報文的周期性發(fā)送;

(5-2-2-2)epoll所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程間保活報文的接收,epoll是linux進程最基礎的消息守護流程,其包括一套函數(shù)調(diào)用。

在一種較佳的實施方式中,其特征在于,在所述的步驟(5-1-3-3-1)中,建立新的tcp鏈接中,需要設置md5選項。

在一種較佳的實施方式中,其特征在于,所述的兩條鏈路進行?;顧z測和業(yè)務數(shù)據(jù)傳輸?shù)呢摵煞謸?/p>

在一種較佳的實施方式中,其特征在于,進行?;顧z測時具體包括以下步驟:

(9-1)所述的兩條鏈路分別檢測所述的第一業(yè)務進程、第二業(yè)務進程、第三業(yè)務進程對應的對端業(yè)務進程是否下線,如果是,則繼續(xù)步驟(9-1-1),否則,繼續(xù)步驟(9-1-2);

(9-1-1)確認所述的對應的對端業(yè)務進程真正下線;

(9-1-2)確認所述的對應的對端業(yè)務進程沒有下線。

在一種具體的實施方式中,其步驟如下:

1、每個業(yè)務進程都需要鏈接zookeeper的動態(tài)庫;

2、優(yōu)先啟動zookeeper服務端;

3、業(yè)務進程1、2、3啟動后,向zookeeper進行注冊,創(chuàng)建zookeeper的客戶端;

4、業(yè)務進程1、2、3根據(jù)設計好的通訊模型,向zookeeper客戶端創(chuàng)建不同的樹形zookeeper數(shù)據(jù)庫節(jié)點。比如,業(yè)務進程1是數(shù)據(jù)服務端,而業(yè)務進程2、3是數(shù)據(jù)客戶端,接收業(yè)務進程1發(fā)送業(yè)務數(shù)據(jù),具體為:

業(yè)務進程1向zookeeper客戶端創(chuàng)建數(shù)據(jù)庫節(jié)點:“/業(yè)務名1/server”,同時向“server”節(jié)點中寫入自己的通訊地址,比如,服務器ip地址:監(jiān)聽端口號;

業(yè)務進程2、3分別向zookeeper客戶端創(chuàng)建數(shù)據(jù)庫節(jié)點“/業(yè)務名1/clients/業(yè)務名2”和“/業(yè)務名1/clients/業(yè)務名3”,同時業(yè)務進程2、3分別向“業(yè)務名2”和“業(yè)務名3”節(jié)點中寫入對應的通訊地址,比如,業(yè)務所在服務器的ip地址:指定的端口號,第一類地址:unix地址(便于host內(nèi)業(yè)務進程建立鏈接);第二類地址:inet地址(便于不同host上業(yè)務進程建立鏈接),并且每一種類地址寫入兩個,便于在第一業(yè)務進程與第二業(yè)務進程之間,和第一業(yè)務進程與第三業(yè)務進程之間,建立兩條鏈路。

通過第三方數(shù)據(jù)庫時,除了直接通過數(shù)據(jù)庫的客戶端與與服務器提供的方法,來決定業(yè)務點up/down外,再在業(yè)務節(jié)點之間直接增加?;顧C制,來判斷業(yè)務節(jié)點的up/down,一旦業(yè)務節(jié)點鏈接成功后,就算數(shù)據(jù)庫服務端down,也不會影響業(yè)務節(jié)點之間的鏈路,所以大大提高業(yè)務節(jié)點之間的可靠性,其中up指對端業(yè)務進程上線,down指對端業(yè)務下線;

5、業(yè)務進程1在創(chuàng)建完成自己的數(shù)據(jù)庫節(jié)點之后,需要觀察客戶端的數(shù)據(jù)庫節(jié)點。比如,觀察數(shù)據(jù)庫節(jié)點父節(jié)點“/業(yè)務名1/clients”。如果有多個客戶端在線,那么zookeeper數(shù)據(jù)庫節(jié)點就會存在:“/業(yè)務名1/clients/業(yè)務名2”和“/業(yè)務名1/clients/業(yè)務名3”。業(yè)務進程1就從這兩個數(shù)據(jù)庫節(jié)點中讀取出業(yè)務進程2、3的通訊地址。這樣,業(yè)務進程1就動態(tài)地發(fā)現(xiàn)了業(yè)務進程2、3,并且同時獲取到了它們的通訊地址;

6、業(yè)務進程2、3在創(chuàng)建完成自己的數(shù)據(jù)庫節(jié)點之后,需要觀察服務端的數(shù)據(jù)庫節(jié)點。比如,觀察數(shù)據(jù)庫節(jié)點“/業(yè)務名1/server”。如果該數(shù)據(jù)庫節(jié)點存在,則讀取出業(yè)務進程1的通訊地址。這樣,業(yè)務進程2或者3就動態(tài)地發(fā)現(xiàn)了業(yè)務進程1,并且同時獲取到了服務端通訊地址;

7、在動態(tài)發(fā)現(xiàn)對端上線,并且獲取到對端的通訊地址之后,就可以與對端建立tcp鏈接,并且發(fā)送業(yè)務數(shù)據(jù);

8、zookeeper服務端與客戶端之間會進行周期性的保活檢測。zookeeper服務端發(fā)現(xiàn)某個客戶端保活超時,則刪除其曾經(jīng)創(chuàng)建的數(shù)據(jù)庫節(jié)點。并且通知觀察該刪除節(jié)點的zookeeper客戶端。當zookeeper客戶端通知業(yè)務進程1、2、3其觀察節(jié)點的刪除事件時,業(yè)務進程就動態(tài)地發(fā)現(xiàn)對端業(yè)務進程已經(jīng)下線,這時候需要關閉tcp鏈接,從而不再向?qū)Χ税l(fā)送業(yè)務數(shù)據(jù)。

由于zookeeper服務端與客戶端之間,是通過tcp鏈接進行的保活,并且它們可能在不同的物理位置上。那么它們之間很容易受到網(wǎng)絡擁塞的影響而出現(xiàn)保活震蕩。但是,進行數(shù)據(jù)通訊的業(yè)務進程之間的網(wǎng)絡可能并沒有發(fā)生擁塞,并沒有發(fā)生tcp斷鏈。那么,此時如果根據(jù)zookeeper客戶端通知的數(shù)據(jù)庫節(jié)點刪除事件而立即判斷對端下線,必然會發(fā)生誤判。由于業(yè)務進程之間的通訊數(shù)據(jù)量可能非常大,比如,100萬bgp路由,并且數(shù)據(jù)服務端在發(fā)現(xiàn)數(shù)據(jù)客戶端重新上線后,需要再次把所有的數(shù)據(jù)全量發(fā)送到對端。這樣的誤判必然會導致業(yè)務進程之間的系統(tǒng)繁忙搶占cpu等資源,從而影響系統(tǒng)中的其它業(yè)務進程的正常運行。

具體的改進實施步驟如下:

9.1、業(yè)務進程在動態(tài)地發(fā)現(xiàn)對端上線并且建立tcp鏈接后,不僅發(fā)送正常的業(yè)務數(shù)據(jù),同時還周期性的發(fā)送保活報文。并且開啟?;顧z測定時器;

9.2業(yè)務進程接收到對端的正常業(yè)務數(shù)據(jù),或者保活報文后,都需要重置?;顧z測定時器;

9.3、當zookeeper客戶端通知業(yè)務進程其觀察節(jié)點的刪除事件時,業(yè)務進程檢查與對端的?;顧z測定時器是否超時,如果沒有超時,則認為對端并沒有下線,繼續(xù)進行數(shù)據(jù)發(fā)送;

9.4、當業(yè)務進程發(fā)現(xiàn)與對端的?;顧z測定時器超時,則無論zookeeper客戶端是否通知過其觀察節(jié)點的刪除事件,都認為對端已經(jīng)下線,此時關閉tcp鏈接;

9.5、當zookeeper客戶端通知業(yè)務進程其觀察節(jié)點的創(chuàng)建事件時,業(yè)務進程檢查與對端當前狀態(tài):

若當前對端是下線狀態(tài),那么按照上述流程走正常上線流程;

若當前對端已經(jīng)是上線狀態(tài),那么獲取該觀察節(jié)點中的對端通訊地址,如果沒有發(fā)生變化,則過濾此時通知事件;如果有變化,則關閉之前的tcp鏈接,然后根據(jù)新地址重新建立tcp鏈接;

業(yè)務節(jié)點在向第三方數(shù)據(jù)庫寫入本節(jié)點的通訊地址時,加入一些鏈路安全的措施,比如md5、公鑰等,這樣能夠保證業(yè)務節(jié)點之間的鏈路安全性,避免被攻擊;

建立新的tcp鏈接時,需要設置md5選項。接收方收到tcp報文時,必須根據(jù)報文的信息以及自己的密鑰來計算md5摘要,并與報文中的摘要進行比較。如果比較失敗則丟棄報文。這樣就能夠極大的提高鏈路的安全性。

采用了該發(fā)明中的基于第三方數(shù)據(jù)庫實現(xiàn)業(yè)務節(jié)點通訊地址發(fā)現(xiàn)的方法,在vbras環(huán)境中,業(yè)務進程可以動態(tài)的發(fā)現(xiàn)通訊對端的上下線事件;同時,還能夠獲取對端的通訊地址,并具有雙重的?;顧C制,極大的提高業(yè)務進程間下線事件的判斷準確率。避免由于錯誤的判斷對端下線事件,而導致業(yè)務進程間發(fā)送不必要的重復性的大量數(shù)據(jù),從而提高vbras環(huán)境中整體業(yè)務進程的穩(wěn)定性,具有廣泛的應用范圍。

在此說明書中,本發(fā)明已參照其特定的實施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應被認為是說明性的而非限制性的。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韶山市| 安丘市| 常山县| 怀仁县| 南丹县| 明水县| 务川| 偏关县| 双桥区| 北票市| 舟山市| 区。| 桓台县| 青田县| 肥乡县| 南靖县| 凤翔县| 德兴市| 汝州市| 曲松县| 读书| 荔波县| 沙湾县| 新竹市| 连山| 彭州市| 太仆寺旗| 大连市| 延长县| 白玉县| 盐津县| 辽阳县| 宁武县| 龙门县| 宁安市| 武功县| 调兵山市| 灵丘县| 河池市| 卓尼县| 建始县|