本發(fā)明屬于分布式控制系統(tǒng),涉及一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法與相關(guān)裝置。
背景技術(shù):
1、在復(fù)雜且要求高度可靠性的工業(yè)自動(dòng)化系統(tǒng)中,可信dcs(distributed?controlsystem,分布式控制系統(tǒng))上位機(jī)的穩(wěn)定運(yùn)行扮演著至關(guān)重要的角色。這些上位機(jī)不僅負(fù)責(zé)監(jiān)控整個(gè)生產(chǎn)流程,還承擔(dān)著數(shù)據(jù)處理、指令下發(fā)及與現(xiàn)場(chǎng)設(shè)備通信等多重任務(wù)。為了確保系統(tǒng)的高可用性和數(shù)據(jù)傳輸?shù)陌踩裕壳吧衔粰C(jī)之間的消息交互機(jī)制采用雙網(wǎng)冗余方式聯(lián)網(wǎng),即通過a網(wǎng)和b網(wǎng)兩個(gè)網(wǎng)來通信。
2、一般有限使用a網(wǎng)通信,當(dāng)a網(wǎng)故障了,會(huì)切換到b網(wǎng)進(jìn)行通信。在實(shí)際運(yùn)行中,如果a/b網(wǎng)出現(xiàn)故障,那么會(huì)造成瞬間消息丟失,無法重傳(上位機(jī)因?yàn)橥ㄓ嵭实膯栴},通常采用udp(user?datagram?protocol,用戶數(shù)據(jù)報(bào)協(xié)議)才進(jìn)行消息傳輸,無法保障通訊質(zhì)量),會(huì)造成斷網(wǎng)切換期間部分消息、日志、操作指令的丟失。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法與相關(guān)裝置,以解決現(xiàn)有技術(shù)中當(dāng)a/b網(wǎng)出現(xiàn)故障,容易造成瞬間消息丟失,無法重傳的技術(shù)問題。
2、為達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案予以實(shí)現(xiàn):
3、第一方面,本發(fā)明提供一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,包括以下步驟:
4、當(dāng)發(fā)送消息程序啟動(dòng)時(shí),先記錄每個(gè)建立鏈接的節(jié)點(diǎn)的信息狀態(tài),再進(jìn)行組織消息內(nèi)容;所述消息內(nèi)容包括消息頭和消息體,所述消息頭中包含sm3特征值;
5、將組織好的消息內(nèi)容打包,分別由a網(wǎng)和b網(wǎng)發(fā)送到對(duì)端;
6、當(dāng)對(duì)端接受到消息內(nèi)容時(shí),對(duì)消息頭進(jìn)行解析,并通過sm3算法重新計(jì)算sm3特征值,將計(jì)算得到的sm3特征值與消息頭中的sm3特征值進(jìn)行對(duì)比;如果不一致則丟棄消息內(nèi)容;如果一致,則解析消息體,進(jìn)行具體的業(yè)務(wù)流程。
7、進(jìn)一步地,所述先記錄每個(gè)建立鏈接的節(jié)點(diǎn)的信息狀態(tài)的步驟中,所述信息狀態(tài)包括:對(duì)方節(jié)點(diǎn)名稱、a網(wǎng)ip地址、b網(wǎng)ip地址、建立鏈接的時(shí)間戳timestamp和發(fā)送消息的索引。
8、進(jìn)一步地,所述發(fā)送消息的索引在重新建立鏈接的時(shí)候重置為0。
9、進(jìn)一步地,所述消息內(nèi)容的消息頭中具體包括:發(fā)送節(jié)點(diǎn)from、目標(biāo)節(jié)點(diǎn)to、是否為重啟的第一個(gè)消息restart、消息序列號(hào)index、消息體長(zhǎng)度lenth和sm3特征值。
10、進(jìn)一步地,所述sm3特征值為消息體和發(fā)送端ip字符串的國密sm3校驗(yàn)值。
11、進(jìn)一步地,所述當(dāng)對(duì)端接受到消息內(nèi)容時(shí),對(duì)消息頭進(jìn)行解析,并通過sm3算法重新計(jì)算sm3特征值,將計(jì)算得到的sm3特征值與消息頭中的sm3特征值進(jìn)行對(duì)比;如果不一致則丟棄消息內(nèi)容;如果一致,則解析消息體,進(jìn)行具體的業(yè)務(wù)流程的步驟,具體包括:
12、當(dāng)對(duì)端接受到消息內(nèi)容時(shí),在內(nèi)存中申請(qǐng)一塊循環(huán)緩存池用來維護(hù)接收到消息內(nèi)容的建立鏈接的時(shí)間戳timestamp、消息序列號(hào)index和sm3特征值;所述循環(huán)緩存池中能夠保存與建立鏈接的程序的100個(gè)消息內(nèi)容的信息;
13、根據(jù)消息發(fā)送端的ip獲取發(fā)送方的節(jié)點(diǎn)名,并讀取本機(jī)主機(jī)名,對(duì)消息內(nèi)容的消息頭中的發(fā)送節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)進(jìn)行校驗(yàn);如果校驗(yàn)不一致則丟棄消息內(nèi)容,并發(fā)送報(bào)警信息;
14、如果校驗(yàn)一致則解析消息頭,判斷是否已經(jīng)從a網(wǎng)或b網(wǎng)收到所述消息內(nèi)容;如果已經(jīng)收到所述消息內(nèi)容,則對(duì)所述消息內(nèi)容不進(jìn)行處理;
15、如果還未收到所述消息內(nèi)容,則解析消息中是否為重啟的第一個(gè)消息restart;如果是否為重啟的第一個(gè)消息restart為true,則將循環(huán)緩存池中的對(duì)應(yīng)程序的緩存清空,如果是否為重啟的第一個(gè)消息restart為false,則不清空緩存;
16、對(duì)比緩存中的消息序列號(hào)index與消息內(nèi)容中的消息序列號(hào)index,如果一致則丟棄消息;
17、如果不一致則使用sm3算法對(duì)消息體和發(fā)送端ip組成字符串計(jì)算sm3特征值,將計(jì)算的sm3特征值與消息頭中的sm3特征值進(jìn)行對(duì)比,如果不一致,則丟棄消息;如果一致,則解析消息體,進(jìn)行具體的業(yè)務(wù)流程。
18、進(jìn)一步地,所述如果校驗(yàn)一致則解析消息頭,判斷是否已經(jīng)從a網(wǎng)或b網(wǎng)收到所述消息內(nèi)容;如果已經(jīng)收到所述消息內(nèi)容,則對(duì)所述消息內(nèi)容不進(jìn)行處理的步驟,具體包括:
19、如果校驗(yàn)一致則解析消息頭,從消息頭中讀取消息序列號(hào)index、建立鏈接的時(shí)間戳timestamp和sm3特征值;將消息序列號(hào)index對(duì)100取余,在緩存池中找到取余后對(duì)應(yīng)的緩存;如果取余后對(duì)應(yīng)的緩存中的建立鏈接的時(shí)間戳timestamp和sm3特征值與接收到的消息不一致,則進(jìn)行下一步;如果一致則說明收到了從a網(wǎng)或b網(wǎng)發(fā)送來的所述消息內(nèi)容,則所述消息內(nèi)容不進(jìn)行處理。
20、第二方面,本發(fā)明提供一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸系統(tǒng),包括:
21、組織模塊,用于當(dāng)發(fā)送消息程序啟動(dòng)時(shí),先記錄每個(gè)建立鏈接的節(jié)點(diǎn)的信息狀態(tài),再進(jìn)行組織消息內(nèi)容;所述消息內(nèi)容包括消息頭和消息體,所述消息頭中包含sm3特征值;
22、發(fā)送模塊,用于將組織好的消息內(nèi)容打包,分別由a網(wǎng)和b網(wǎng)發(fā)送到對(duì)端;
23、解析模塊,用于當(dāng)對(duì)端接受到消息內(nèi)容時(shí),對(duì)消息頭進(jìn)行解析,并通過sm3算法重新計(jì)算sm3特征值,將計(jì)算得到的sm3特征值與消息頭中的sm3特征值進(jìn)行對(duì)比;如果不一致則丟棄消息內(nèi)容;如果一致,則解析消息體,進(jìn)行具體的業(yè)務(wù)流程。
24、第三方面,本發(fā)明提供一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如所述一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法的步驟。
25、第四方面,本發(fā)明提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如所述一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法的步驟。
26、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
27、本發(fā)明公開了一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法與相關(guān)裝置;在消息發(fā)送時(shí),記錄每個(gè)建立鏈接的節(jié)點(diǎn)的信息狀態(tài),再進(jìn)行組織消息內(nèi)容;將組織好的消息內(nèi)容打包,分別由a網(wǎng)和b網(wǎng)發(fā)送到對(duì)端;最后當(dāng)對(duì)端接受到消息時(shí),對(duì)消息頭進(jìn)行解析,并在消息頭中引入sm3特征值,在對(duì)端接收到消息時(shí)進(jìn)行特征值的重新計(jì)算和比對(duì),這一機(jī)制有效防止了消息在傳輸過程中被篡改,保證了數(shù)據(jù)傳輸?shù)耐暾院桶踩浴1景l(fā)明通過同時(shí)在a網(wǎng)和b網(wǎng)發(fā)送消息,該方法實(shí)現(xiàn)了消息的冗余傳輸,即使其中一路網(wǎng)絡(luò)出現(xiàn)故障,另一路網(wǎng)絡(luò)仍然能夠確保消息的可靠傳遞,從而大大增強(qiáng)了系統(tǒng)的容錯(cuò)能力和可靠性。通過確保消息的可靠傳輸和及時(shí)處理,該方法能夠減少因消息丟失或錯(cuò)誤處理而導(dǎo)致的系統(tǒng)延遲和故障,從而提升用戶的使用體驗(yàn)和滿意度。
1.一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,所述先記錄每個(gè)建立鏈接的節(jié)點(diǎn)的信息狀態(tài)的步驟中,所述信息狀態(tài)包括:對(duì)方節(jié)點(diǎn)名稱、a網(wǎng)ip地址、b網(wǎng)ip地址、建立鏈接的時(shí)間戳timestamp和發(fā)送消息的索引。
3.根據(jù)權(quán)利要求2所述的一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,所述發(fā)送消息的索引在重新建立鏈接的時(shí)候重置為0。
4.根據(jù)權(quán)利要求2所述的一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,所述消息內(nèi)容的消息頭中具體包括:發(fā)送節(jié)點(diǎn)from、目標(biāo)節(jié)點(diǎn)to、是否為重啟的第一個(gè)消息restart、消息序列號(hào)index、消息體長(zhǎng)度lenth和sm3特征值。
5.根據(jù)權(quán)利要求4所述的一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,所述sm3特征值為消息體和發(fā)送端ip字符串的國密sm3校驗(yàn)值。
6.根據(jù)權(quán)利要求4所述的一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,所述當(dāng)對(duì)端接受到消息內(nèi)容時(shí),對(duì)消息頭進(jìn)行解析,并通過sm3算法重新計(jì)算sm3特征值,將計(jì)算得到的sm3特征值與消息頭中的sm3特征值進(jìn)行對(duì)比;如果不一致則丟棄消息內(nèi)容;如果一致,則解析消息體,進(jìn)行具體的業(yè)務(wù)流程的步驟,具體包括:
7.根據(jù)權(quán)利要求6所述的一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法,其特征在于,所述如果校驗(yàn)一致則解析消息頭,判斷是否已經(jīng)從a網(wǎng)或b網(wǎng)收到所述消息內(nèi)容;如果已經(jīng)收到所述消息內(nèi)容,則對(duì)所述消息內(nèi)容不進(jìn)行處理的步驟,具體包括:
8.一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸系統(tǒng),其特征在于,包括:
9.一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如權(quán)利要求1-7任一項(xiàng)所述一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法的步驟。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-7任一項(xiàng)所述一種可信dcs上位機(jī)應(yīng)用間的冗余消息傳輸方法的步驟。