1.一種應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng),其特征是,在包括N臺主機(jī)(2),m個應(yīng)用服務(wù)進(jìn)程(23)的靜態(tài)集群上,服務(wù)于該靜態(tài)集群的分布式通信系統(tǒng)包括設(shè)于每臺主機(jī)上的天使服務(wù)進(jìn)程(21),極速配置庫(22)和m個天使客戶端庫(24);每個應(yīng)用服務(wù)進(jìn)程均調(diào)對應(yīng)的用天使客戶端庫,天使服務(wù)進(jìn)程和各個應(yīng)用服務(wù)進(jìn)程均與極速配置庫連接,天使服務(wù)進(jìn)程分別與各個應(yīng)用服務(wù)進(jìn)程連接,N≥1,m≥2;
極速配置庫中設(shè)有應(yīng)用服務(wù)進(jìn)程信息表與天使服務(wù)進(jìn)程信息表;
應(yīng)用服務(wù)進(jìn)程信息表由4個字段構(gòu)成,4個字段分別為應(yīng)用服務(wù)進(jìn)程服務(wù)名,應(yīng)用服務(wù)進(jìn)程編號,應(yīng)用服務(wù)進(jìn)程對應(yīng)的天使服務(wù)進(jìn)程編號和應(yīng)用服務(wù)進(jìn)程在線狀態(tài);其中,應(yīng)用服務(wù)進(jìn)程服務(wù)名是應(yīng)用服務(wù)進(jìn)程信息表的主鍵;應(yīng)用服務(wù)進(jìn)程在線狀態(tài)字段是動態(tài)字段,應(yīng)用服務(wù)進(jìn)程根據(jù)應(yīng)用服務(wù)進(jìn)程與天使服務(wù)進(jìn)程之間的連接狀態(tài)進(jìn)行更新,其它字段均為靜態(tài)字段;
天使服務(wù)進(jìn)程信息表由5個字段構(gòu)成,5個字段分別為天使服務(wù)進(jìn)程地址信息,天使服務(wù)進(jìn)程編號,天使服務(wù)進(jìn)程附屬應(yīng)用服務(wù)進(jìn)程起始編號,天使服務(wù)進(jìn)程附屬應(yīng)用服務(wù)進(jìn)程個數(shù)和天使服務(wù)進(jìn)程在線狀態(tài);天使服務(wù)進(jìn)程地址信息是天使服務(wù)進(jìn)程信息表的主鍵,天使服務(wù)進(jìn)程為動態(tài)字段,天使服務(wù)進(jìn)程在線狀態(tài)根據(jù)本地天使服務(wù)進(jìn)程與其它天使服務(wù)進(jìn)程之間的連接狀態(tài)進(jìn)行更新,同時更新的包括天使服務(wù)進(jìn)程附屬的應(yīng)用服務(wù)進(jìn)程在線狀態(tài)。
2.一種基于權(quán)利要求1所述的應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng)的方法,其特征是,包括關(guān)系表的插入過程:
步驟1:從要插入行的行內(nèi)容中取出主鍵內(nèi)容;
步驟2:對主鍵進(jìn)行哈希計算,得到哈希值;
步驟3:在哈希區(qū)尋找與哈希值對應(yīng)節(jié)點的位置,如果該節(jié)點沒有被使用,轉(zhuǎn)入步驟4,如果該節(jié)點已經(jīng)被使用,轉(zhuǎn)入步驟6;
步驟4:在節(jié)點內(nèi)寫入節(jié)點信息,節(jié)點信息包括主鍵、行號和下個節(jié)點偏移;其中,行號為關(guān)系表的表頭中的待插入行號,表頭包括行數(shù)目;
步驟5:將行內(nèi)容寫入待插入行號的行,待插入行號加1;
步驟6:按照節(jié)點信息中下一個節(jié)點偏移信息,依次尋找下一個節(jié)點,直到下一個節(jié)點偏移為-1,將-1改為拉鏈區(qū)可用節(jié)點偏移,在拉鏈區(qū)可用偏移的位置上,寫入節(jié)點信息,將拉鏈區(qū)可用偏移號加1;
步驟7:將行內(nèi)容寫入待插入行號的行,待插入行號加1;
其中,哈希計算包括如下步驟:
步驟1:采用公用的哈希算法對主鍵進(jìn)行哈希,得到一個整數(shù);
步驟2:將整數(shù)對行數(shù)目取余,得到一個哈希值。
3.根據(jù)權(quán)利要求2所述的應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng)的方法,其特征是,還包括查詢的過程:
步驟1:對查詢主鍵進(jìn)行哈希計算,得到哈希值;
步驟2:在哈希區(qū)尋找與哈希值對應(yīng)節(jié)點的位置,比較節(jié)點的主鍵內(nèi)容與查詢主鍵內(nèi)容是否相同,相同時取節(jié)點中記錄的行號信息;不相同時,取下一個節(jié)點的偏移;
步驟3:按照下一個節(jié)點的偏移,依次比較節(jié)點的主鍵與查詢主鍵是否相同,直到找到相同的節(jié)點,取該節(jié)點中記錄的行號信息;
步驟4:如果沒有找到行號信息,查詢失敗;
其中,哈希計算包括如下步驟:
步驟1:采用公用的哈希算法對主鍵進(jìn)行哈希,得到一個整數(shù);
步驟2:將整數(shù)對行數(shù)目取余,得到一個哈希值。
4.根據(jù)權(quán)利要求2所述的應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng)的方法,其特征是,還包括在線狀態(tài)同步觸發(fā)步驟:
步驟1:取當(dāng)前系統(tǒng)時間,將當(dāng)前系統(tǒng)時間減去上一次的系統(tǒng)時間,得到時間差;
若時間差>1秒,轉(zhuǎn)入步驟2;
若時間差≤1秒,則睡眠100毫秒,循環(huán)執(zhí)行步驟1;
步驟2:檢測事件觸發(fā)標(biāo)志是否為1,或者是否到了同步周期;如果是,轉(zhuǎn)入步驟3;否則,繼續(xù)執(zhí)行步驟2;
步驟3:將事件觸發(fā)標(biāo)志修改為0,執(zhí)行在線狀態(tài)同步過程;
步驟4:將上一次系統(tǒng)時間賦值為獲取的當(dāng)前系統(tǒng)時間,將周期時間賦值為當(dāng)前系統(tǒng)時間加周期值,繼續(xù)執(zhí)行步驟1。
5.根據(jù)權(quán)利要求2所述的應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng)的方法,其特征是,還包括在線狀態(tài)同步過程:
步驟1:天使服務(wù)進(jìn)程從極速配置庫中讀取附屬于自己的應(yīng)用服務(wù)進(jìn)程的在線狀態(tài);
步驟2:天使服務(wù)進(jìn)程將附屬于自己的應(yīng)用服務(wù)進(jìn)程的在線狀態(tài)進(jìn)行壓縮,構(gòu)成一個在線狀態(tài)更新包;
步驟3:向其他的所有主機(jī)的天使服務(wù)進(jìn)程發(fā)送自己附屬的應(yīng)用服務(wù)進(jìn)程的在線狀態(tài)更新包;
步驟4:接收到在線狀態(tài)更新包的天使服務(wù)進(jìn)程,解壓縮在線狀態(tài)更新包,修改本地的極速配置庫。
6.根據(jù)權(quán)利要求2所述的應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng)的方法,其特征是,還包括應(yīng)用服務(wù)進(jìn)程登錄過程:
步驟1:在主機(jī)i上,應(yīng)用服務(wù)進(jìn)程j在天使服務(wù)進(jìn)程i上登錄,應(yīng)用服務(wù)進(jìn)程j調(diào)用天使客戶端庫的登錄接口,傳入自己的服務(wù)名jX;i=1,2,…,N;j=1,2,…,m;
步驟2:天使服務(wù)進(jìn)程i接到應(yīng)用服務(wù)進(jìn)程j登錄請求,按照服務(wù)名j查詢查詢本地極速配置庫;
如果查到極速配置庫里面存在該服務(wù)的配置,返回應(yīng)用服務(wù)進(jìn)程j的編號及登錄成功的信息,修改極速配置庫內(nèi)應(yīng)用服務(wù)進(jìn)程j的登錄狀態(tài)為已經(jīng)登錄,轉(zhuǎn)入步驟3;
如果沒有查到極速配置庫里面存在該服務(wù)的配置,返回-1及登錄失敗的信息;
步驟3:天使服務(wù)進(jìn)程i將應(yīng)用服務(wù)進(jìn)程j的已登錄狀態(tài)廣播發(fā)送給天使服務(wù)進(jìn)程2到N;
天使服務(wù)進(jìn)程2至天使服務(wù)進(jìn)程N(yùn)收到應(yīng)用服務(wù)進(jìn)程j的已登錄狀態(tài),分別轉(zhuǎn)入步驟4;
步驟4:天使服務(wù)進(jìn)程2至天使服務(wù)進(jìn)程N(yùn)將應(yīng)用服務(wù)進(jìn)程j的已登錄狀態(tài)寫入本地極速配置庫。
7.根據(jù)權(quán)利要求2或3或4或5或6所述的應(yīng)用于靜態(tài)集群上的分布式通信系統(tǒng)的方法,其特征是,還包括應(yīng)用服務(wù)進(jìn)程之間通信過程:
應(yīng)用服務(wù)進(jìn)程j向應(yīng)用服務(wù)進(jìn)程k發(fā)送一個消息;k=1,2,…,m;k≠j;
步驟1:應(yīng)用服務(wù)進(jìn)程j通過本地極速配置庫,按照應(yīng)用服務(wù)進(jìn)程k的服務(wù)名,查詢應(yīng)用服務(wù)進(jìn)程k的編號與在線狀態(tài);若查詢到應(yīng)用服務(wù)進(jìn)程的編號且應(yīng)用服務(wù)進(jìn)程的在線狀態(tài)為在線,轉(zhuǎn)入步驟2;反之,返回失敗信息,通信結(jié)束;
步驟2:應(yīng)用服務(wù)進(jìn)程j構(gòu)建消息包,向天使服務(wù)進(jìn)程i發(fā)送該消息包;
步驟3:天使服務(wù)進(jìn)程i收到該消息包,按照該消息包包頭內(nèi)容,查詢極速配置庫,查出應(yīng)該轉(zhuǎn)發(fā)的目標(biāo)天使進(jìn)程N(yùn),并查詢目標(biāo)天使進(jìn)程N(yùn)的在線狀態(tài);
步驟4:天使服務(wù)進(jìn)程i將消息包發(fā)送給天使服務(wù)進(jìn)程N(yùn);
步驟5:天使服務(wù)進(jìn)程N(yùn)收到該消息包,按照該消息包包頭內(nèi)容,查詢極速配置庫,查出應(yīng)用服務(wù)進(jìn)程k;
步驟6:天使服務(wù)進(jìn)程N(yùn)將消息包發(fā)送給應(yīng)用服務(wù)進(jìn)程k。