本發(fā)明涉及通信領(lǐng)域,具體涉及一種基于分治思想的邊車模式通信方法及通信系統(tǒng)。
背景技術(shù):
1、目前電力系統(tǒng)等領(lǐng)域中,存在數(shù)量眾多的物理節(jié)點(diǎn),比如服務(wù)器、工作站等,而每個(gè)物理節(jié)點(diǎn)上又部署了數(shù)量眾多的分布式程序,程序之間有大量的交互需求。而工業(yè)級(jí)系統(tǒng),要求有較高的可靠性及實(shí)時(shí)性,程序間的通信通常有以下兩種方式:
2、一、進(jìn)程級(jí)對(duì)等網(wǎng)絡(luò)方案
3、該方法的消息總線只有動(dòng)態(tài)庫,沒有服務(wù)。每一個(gè)調(diào)用消息總線動(dòng)態(tài)庫的進(jìn)程都包含一個(gè)完整的對(duì)等節(jié)點(diǎn)。由于一臺(tái)機(jī)器中有多個(gè)對(duì)等節(jié)點(diǎn),因此對(duì)等節(jié)點(diǎn)中的router的端口號(hào)必須不同,采用動(dòng)態(tài)端口加動(dòng)態(tài)發(fā)現(xiàn)的方法,所有的對(duì)等節(jié)點(diǎn)之間發(fā)現(xiàn)后即互聯(lián),并同步訂閱信息。
4、該種方法雖然代碼實(shí)現(xiàn)相對(duì)簡單,但是存在如下缺點(diǎn):
5、1.連接數(shù)量大。在iscs系統(tǒng)中,每臺(tái)機(jī)器運(yùn)行大量進(jìn)程,每個(gè)域有眾多機(jī)器,全線又有眾多域,完全可能觸及操作系統(tǒng)資源上限;
6、2.網(wǎng)絡(luò)開銷大。包括節(jié)點(diǎn)發(fā)現(xiàn)、存在性檢測(cè)、組信息同步等開銷;
7、3.內(nèi)存用量大。每個(gè)對(duì)等節(jié)點(diǎn)中均包含整個(gè)對(duì)等集群的節(jié)點(diǎn)信息、訂閱信息等;
8、4.使用udp廣播發(fā)現(xiàn)時(shí),當(dāng)機(jī)器的網(wǎng)線拔出,廣播將無法使用,本機(jī)節(jié)點(diǎn)間也無法發(fā)現(xiàn)。若使用gossip協(xié)議發(fā)現(xiàn),由于節(jié)點(diǎn)數(shù)眾多,網(wǎng)絡(luò)開銷大,收斂速度慢。
9、二、帶目錄服務(wù)的進(jìn)程級(jí)對(duì)等網(wǎng)絡(luò)方案
10、該方法中,每臺(tái)機(jī)器設(shè)置一個(gè)目錄服務(wù),負(fù)責(zé)節(jié)點(diǎn)發(fā)現(xiàn)、節(jié)點(diǎn)信息管理、訂閱信息管理等。機(jī)器之間的目錄服務(wù)采用對(duì)等網(wǎng)絡(luò)組網(wǎng)。調(diào)用消息總線動(dòng)態(tài)庫的應(yīng)用程序向本機(jī)的目錄服務(wù)進(jìn)行注冊(cè),退出時(shí)注銷,期間進(jìn)行存在性檢測(cè)。應(yīng)用程序發(fā)送消息時(shí),消息總線動(dòng)態(tài)庫查詢消息目標(biāo)地址信息,比如ip、端口、訂閱信息等,然后再連接、發(fā)送。
11、該種方法雖然對(duì)節(jié)點(diǎn)發(fā)現(xiàn)、節(jié)點(diǎn)信息管理、訂閱信息管理等進(jìn)行了集中,一定程度上降低了內(nèi)存開銷、網(wǎng)絡(luò)開銷,即使不插網(wǎng)線,本機(jī)內(nèi)的節(jié)點(diǎn)發(fā)現(xiàn)不受影響。但是,存在以下缺點(diǎn):
12、1.代碼實(shí)現(xiàn)會(huì)很復(fù)雜。比如,應(yīng)用程序端是否緩存節(jié)點(diǎn)信息、訂閱信息問題上,如果不緩存,每次發(fā)送前都詢問目錄服務(wù),效率會(huì)比較低。如果緩存,保證信息的一致性是個(gè)比較難克服的問題;
13、2.連接數(shù)依然很多,依然可能觸及操作系統(tǒng)的資源上限;
14、3.目錄服務(wù)間不僅要同步訂閱信息,還需要同步各機(jī)的應(yīng)用程序進(jìn)程節(jié)點(diǎn)信息;
15、4.目錄服務(wù)的穩(wěn)定性至關(guān)重要。
16、綜合上述兩種方案,由于每個(gè)應(yīng)用程序都自己實(shí)現(xiàn)交互需求,現(xiàn)有技術(shù)實(shí)現(xiàn)復(fù)雜,開發(fā)效率低下,而且質(zhì)量參差不齊,難以保證通信質(zhì)量。因此,一個(gè)可復(fù)用的,滿足以上需求的通信方法顯得很有必要。
技術(shù)實(shí)現(xiàn)思路
1、為解決現(xiàn)有技術(shù)中的問題,本發(fā)明提供一種基于分治思想的邊車模式通信方法,還提供一種采用所述基于分治思想的邊車模式通信方法的通信系統(tǒng)。
2、本發(fā)明基于分治思想的邊車模式通信方法,應(yīng)用于設(shè)備主機(jī)間進(jìn)行通信,所述設(shè)備主機(jī)包括相互通信的第一設(shè)備主機(jī)和第二設(shè)備主機(jī),所述第一設(shè)備主機(jī)和第二設(shè)備主機(jī)上分別設(shè)有相互獨(dú)立的主業(yè)務(wù)進(jìn)程及用于與外部的設(shè)備主機(jī)通信的消息總線服務(wù)進(jìn)程,所述主業(yè)務(wù)進(jìn)程與所述消息總線服務(wù)進(jìn)程采用邊車模式通信,所述主業(yè)務(wù)進(jìn)程用于處理設(shè)備各種應(yīng)用,所述第一設(shè)備主機(jī)和第二設(shè)備主機(jī)的消息總線服務(wù)進(jìn)程通過消息總線相互通信,所述第一設(shè)備主機(jī)的邊車模式通信方法為:
3、s1:新的應(yīng)用業(yè)務(wù)進(jìn)程上線,發(fā)送業(yè)務(wù)消息至通用應(yīng)用消息庫;
4、s2:通過通用應(yīng)用模塊,向消息總線服務(wù)進(jìn)程發(fā)送消息;
5、s3:消息總線服務(wù)進(jìn)程查詢總線基礎(chǔ)庫,當(dāng)不存在此應(yīng)用的管理消息時(shí),請(qǐng)求此應(yīng)用訂閱消息,然后注冊(cè)到總線服務(wù)中;
6、s4:本機(jī)的總線服務(wù)成功處理新應(yīng)用的信息后,發(fā)送給與之通過消息總線組成總線網(wǎng)絡(luò)中的一個(gè)以上第二設(shè)備主機(jī),使得所有的第二設(shè)備主機(jī)的總線服務(wù)均有新應(yīng)用的信息;
7、s5:新的應(yīng)用通過總線服務(wù)與總線網(wǎng)絡(luò)中的第二設(shè)備主機(jī)交互,收發(fā)信息。
8、進(jìn)一步地,所述第二設(shè)備主機(jī)的數(shù)量為多個(gè),第一設(shè)備主機(jī)、多個(gè)第二設(shè)備主機(jī)分別兩兩通過消息總線通信,所述第一設(shè)備主機(jī)、多個(gè)第二設(shè)備主機(jī)組成一總線網(wǎng)絡(luò),每個(gè)設(shè)備主機(jī)均為總線網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點(diǎn)。
9、進(jìn)一步地,所述消息總線服務(wù)進(jìn)程的處理方法為:
10、a1:第一設(shè)備主機(jī)上線,驅(qū)動(dòng)本機(jī)內(nèi)的進(jìn)程,本機(jī)進(jìn)程向總線服務(wù)注冊(cè)本進(jìn)程的相關(guān)訂閱消息;
11、a2:總線服務(wù)接收到本機(jī)業(yè)務(wù)服務(wù)進(jìn)程發(fā)送的業(yè)務(wù)消息后,判斷消息的目的節(jié)點(diǎn)是第二設(shè)備主機(jī)的業(yè)務(wù)節(jié)點(diǎn)還是本機(jī)業(yè)務(wù)節(jié)點(diǎn),如果是本機(jī)消息,則采用進(jìn)程間通信模式,采用共享內(nèi)存與目的進(jìn)程進(jìn)行消息交互,如果為第二設(shè)備主機(jī)節(jié)點(diǎn)時(shí),則建立tcp連接,發(fā)送字節(jié)流給目的節(jié)點(diǎn);
12、a3:目的節(jié)點(diǎn)的消息總線服務(wù)進(jìn)程接收到消息后,判斷該業(yè)務(wù)是否存在訂閱匹配,如果是,則發(fā)送業(yè)務(wù)消息給目的進(jìn)程,如果否,則忽略該消息。
13、進(jìn)一步地,步驟a2中,當(dāng)判斷為本機(jī)消息時(shí),判斷該業(yè)務(wù)是否存在訂閱匹配,如果是,則采用進(jìn)程間通信模式,采用共享內(nèi)存與目的進(jìn)程進(jìn)行消息交互,如果否,則忽略該消息。
14、進(jìn)一步地,所述設(shè)備主機(jī)上還設(shè)有用于實(shí)現(xiàn)分布式自治的業(yè)務(wù)節(jié)點(diǎn)和容災(zāi)節(jié)點(diǎn),所述業(yè)務(wù)節(jié)點(diǎn)和容災(zāi)節(jié)點(diǎn)均設(shè)有通過消息總線相互對(duì)等連接的消息總線服務(wù)進(jìn)程,所述設(shè)備主機(jī)的自治方法為:
15、b1:設(shè)備啟動(dòng)時(shí),同時(shí)啟動(dòng)總線服務(wù)、節(jié)點(diǎn)管理服務(wù)和進(jìn)程管理服務(wù);
16、b2:總線服務(wù)啟動(dòng)后,發(fā)心跳信息給節(jié)點(diǎn)管理服務(wù),此外,設(shè)備主機(jī)運(yùn)行過程中,所述節(jié)點(diǎn)管理服務(wù)定期查看判斷各個(gè)進(jìn)程的心跳,以此判斷所述消息總線服務(wù)進(jìn)程是否存在,如果存在,則調(diào)用消息總線服務(wù)進(jìn)程的主備切換接口,如果否,則通過進(jìn)程管理服務(wù)重新啟動(dòng)總線服務(wù)。
17、進(jìn)一步地,還包括步驟b3:業(yè)務(wù)節(jié)點(diǎn)在接收業(yè)務(wù)數(shù)據(jù)時(shí),通過總線服務(wù)發(fā)送給容災(zāi)節(jié)點(diǎn)一份,作為備份數(shù)據(jù);容災(zāi)節(jié)點(diǎn)會(huì)定期檢查主機(jī)的健康狀況消息,當(dāng)一定間隔時(shí)間收不到所述健康狀況消息,或者收到的健康狀況消息異常,則所述容災(zāi)節(jié)點(diǎn)升級(jí)為與第二設(shè)備主機(jī)通信的主機(jī)節(jié)點(diǎn),與第二設(shè)備主機(jī)進(jìn)行通信。
18、進(jìn)一步地,當(dāng)業(yè)務(wù)節(jié)點(diǎn)與容災(zāi)節(jié)點(diǎn)之間的消息總線通信阻塞,所述容災(zāi)節(jié)點(diǎn)上升為主機(jī)節(jié)點(diǎn),與原主機(jī)節(jié)點(diǎn)存在雙主節(jié)點(diǎn),則所述業(yè)務(wù)節(jié)點(diǎn)與容災(zāi)節(jié)點(diǎn)的處理方法為:各自的節(jié)點(diǎn)管理服務(wù)根據(jù)接收到的對(duì)方節(jié)點(diǎn)健康情況和自身的節(jié)點(diǎn)健康情況,共同進(jìn)行雙主決策,選取健康狀況較好的子節(jié)點(diǎn)為主機(jī)節(jié)點(diǎn),而另一個(gè)為備機(jī)節(jié)點(diǎn)。
19、本發(fā)明還提供一種基于分治思想的邊車模式通信系統(tǒng),包括若干個(gè)設(shè)備主機(jī),每個(gè)設(shè)備主機(jī)采用所述的基于分治思想的邊車模式通信方法進(jìn)行通信。
20、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明通過消息總線服務(wù)提供了一種機(jī)器級(jí)對(duì)等網(wǎng)絡(luò)解決方法,更貼合實(shí)際的工業(yè)場景,使用去中心化的消息總線服務(wù)進(jìn)程的性能、穩(wěn)定性至關(guān)重要,本發(fā)明基于分治思想,每臺(tái)機(jī)器自我管理,利用邊車模式的部署與使用總線服務(wù),從而實(shí)現(xiàn)了設(shè)備間的對(duì)等連接;
21、通過消息總線,為業(yè)務(wù)應(yīng)用提供一個(gè)簡單、可靠的進(jìn)程間(本機(jī)或跨機(jī))交互方式,屏蔽網(wǎng)絡(luò)通訊復(fù)雜性,支持點(diǎn)對(duì)點(diǎn)、多對(duì)多通訊;
22、本發(fā)明節(jié)點(diǎn)與節(jié)點(diǎn)之間屬于對(duì)等連接,但是不同于市面上的進(jìn)程級(jí)別對(duì)等連接,本發(fā)明采用機(jī)器級(jí)對(duì)等網(wǎng)絡(luò)方案,每個(gè)節(jié)點(diǎn)上存在總線代理,節(jié)點(diǎn)之間統(tǒng)一一個(gè)端口交互,避免進(jìn)程級(jí)別的多端口,不好維護(hù)且占用系統(tǒng)資源,開銷變大;
23、在實(shí)際的網(wǎng)絡(luò)傳輸中,只會(huì)向訂閱了該消息主題的成員傳輸,不會(huì)造成不必要的網(wǎng)絡(luò)負(fù)荷。一個(gè)消息如果沒有訂閱者,不會(huì)實(shí)際傳輸,從而能有效提升數(shù)據(jù)傳輸性能,減少網(wǎng)絡(luò)消耗;
24、本發(fā)明能夠支持很大的主體數(shù)量連接,主業(yè)務(wù)進(jìn)程的hmi服務(wù),告警服務(wù)等,只有在必要時(shí)候,才會(huì)與總線服務(wù)交互,投遞消息到對(duì)應(yīng)目的進(jìn)程。按照這樣的架構(gòu),當(dāng)主業(yè)務(wù)的應(yīng)用異常時(shí),并不會(huì)影響到總線服務(wù),只要總線服務(wù)正常,就可以保證兩個(gè)設(shè)備主機(jī)間的正常通信;
25、正常的大數(shù)據(jù)工業(yè)場景中,需要保證節(jié)點(diǎn)的功能正常,本發(fā)明通過自治方法,提升了節(jié)點(diǎn)運(yùn)行的可靠性及數(shù)據(jù)的可靠性,任何站點(diǎn)處于網(wǎng)絡(luò)孤島(與其他站點(diǎn)斷開)時(shí)仍能保證本站監(jiān)控系統(tǒng)的正常,本發(fā)明支持冗余網(wǎng)絡(luò)切換,調(diào)用者無需選擇網(wǎng)絡(luò),消息總線會(huì)盡可能地將消息送達(dá)。