本發(fā)明屬于計算機(jī)測量與控制技術(shù)領(lǐng)域,特別涉及一種基于網(wǎng)絡(luò)時鐘協(xié)議的主從雙機(jī)狀態(tài)同步方法。
背景技術(shù):
隨著武器裝備系統(tǒng)復(fù)雜性的不斷提高,對測試可靠性要求日益提高,越來越多的測試系統(tǒng)開始由傳統(tǒng)的單機(jī)模式進(jìn)化為二重冗余甚至多重冗余模式。而在冗余模式下,構(gòu)成主份和備份的單機(jī)之間的狀態(tài)同步是完成主從切換的前置條件,也是系冗余模式的關(guān)鍵所在。傳統(tǒng)的同步方式大多為查詢方式,即在系統(tǒng)啟動前設(shè)置主從雙機(jī)狀態(tài)同步的周期,此后周期性的完成同步工作,該模式具有易于實現(xiàn),簡單穩(wěn)定的優(yōu)點,但在非實時操作系統(tǒng)或大多數(shù)非時間嚴(yán)格的運(yùn)載火箭地面自動化測試場合下,會造成大量的無用數(shù)據(jù)通信過程,拉低整個測控網(wǎng)絡(luò)的通信效率。
NTP(Network-Time-Protocol,網(wǎng)絡(luò)時鐘協(xié)議)是1982年由美國Delaware大學(xué)的Mills教授設(shè)計實現(xiàn)的,目的是在國際互聯(lián)網(wǎng)上傳遞統(tǒng)一、標(biāo)準(zhǔn)的時間,時鐘同步精度從最初的1s提高到現(xiàn)在的幾十納秒,穩(wěn)定性越來越高,應(yīng)用越來越廣泛。
NTP主要有三種工作模式:
第一種模式為主/被動對稱模式:在主/被動對稱模式下,主動方同步被動方,被動方被主動方所同步。所謂對稱模式,即任何一臺計算機(jī)同時可以是主動方也可以是被動方,也就是說,任何一臺計算機(jī)都可以同步另外一臺計算機(jī),也可以被其它計算機(jī)所同步,首先發(fā)出申請建立連接的一方為主動方,另一方為被動方。
第二種模式為客戶/服務(wù)器模式:與主被動模式基本相同,唯一區(qū)別在于,客戶方可被服務(wù)器同步,但服務(wù)器不能被客戶所同步。
第三種模式為廣播模式:一對多的連接,服務(wù)器不論客戶工作在何種模式下,主動發(fā)出時間信息,客戶方根據(jù)接收到的時間信息自行調(diào)整自己的時間,時間信息在網(wǎng)絡(luò)上傳輸時會有時間延時,因此時間精確度會有損失,但可滿足秒級應(yīng)用。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有雙機(jī)狀態(tài)同步方式存在的弊端,結(jié)合NTP協(xié)議中的客戶/服務(wù)器模式,提供一種對CPU及網(wǎng)絡(luò)環(huán)境負(fù)荷較低的快速完成雙機(jī)狀態(tài)同步的方法。采用該方法可在10ms內(nèi)完成一次非實時操作系統(tǒng)下的雙機(jī)狀態(tài)同步過程。與傳統(tǒng)的定時查詢方式相比,將CPU的運(yùn)行負(fù)荷減輕約50%,網(wǎng)絡(luò)的數(shù)據(jù)通訊量減少約90%,顯著降低系統(tǒng)運(yùn)行負(fù)荷,提高系統(tǒng)的可靠性。
為實現(xiàn)上述目的,本發(fā)明提出的一種基于網(wǎng)絡(luò)時鐘協(xié)議的主從雙機(jī)狀態(tài)同步方法,所述方法包括:
步驟1)系統(tǒng)開機(jī)運(yùn)行后,主從機(jī)通過本機(jī)配置文件及選舉方法確定一臺為主機(jī),一臺為從機(jī)的雙機(jī)狀態(tài);即主機(jī)為網(wǎng)絡(luò)時鐘協(xié)議中的服務(wù)器,從機(jī)為客戶端;
步驟2)采取二次校時的方法對主機(jī)和從機(jī)的時鐘進(jìn)行同步;
步驟3)時鐘同步之后,主從雙機(jī)進(jìn)入待命狀態(tài),當(dāng)雙機(jī)收到指揮中心發(fā)來的測控指令后,主從雙機(jī)狀態(tài)進(jìn)行同步。
上述技術(shù)方案中,所述步驟1)的具體實現(xiàn)過程為:
如果當(dāng)前雙機(jī)默認(rèn)配置狀態(tài)恰好是一主機(jī)一從機(jī),則維持現(xiàn)狀;如果是雙主機(jī)的情況,保證當(dāng)前正在行使主機(jī)職能一方繼續(xù)作為主機(jī),另一方作為從機(jī);通過比較指令隊列最后執(zhí)行指令時間和上次被選為主機(jī)時間,讓最后一次被選中為主機(jī)一方繼續(xù)作為主機(jī);如果出現(xiàn)雙機(jī)之間鏈路不通的情況,讀取并應(yīng)用參數(shù)配置中預(yù)先設(shè)置的主從機(jī)狀態(tài);如果出現(xiàn)配置錯誤,優(yōu)先保證正在行使主機(jī)職能一方繼續(xù)作為主機(jī);如果比較各項參數(shù)后仍然不能選舉出主從機(jī),直接以當(dāng)前主動發(fā)起選舉一方作為主機(jī),由此完成主從雙機(jī)的身份確立。
上述技術(shù)方案中,所述步驟2)具體包括:
步驟2-1)主機(jī)獲取本地的系統(tǒng)時間,發(fā)送校時數(shù)據(jù)包到發(fā)送隊列,并喚醒客戶端線程,發(fā)送校時數(shù)據(jù)幀到從機(jī);
步驟2-2)從機(jī)接到指令后,立即回復(fù)二次校時請求;
步驟2-3)主機(jī)接到二次校時請求后立即獲取最新系統(tǒng)時間,再次發(fā)送校時數(shù)據(jù)幀;
步驟2-4)從機(jī)接到二次校時回復(fù)后,更新系統(tǒng)時間,更新后的從機(jī)本地系統(tǒng)時間為最后一次校時+兩次校時差/2。
上述技術(shù)方案中,所述步驟3)具體包括:
步驟3-1)主機(jī)執(zhí)行本機(jī)收到的測控指令,從機(jī)同樣收到該指令,但暫不執(zhí)行;
步驟3-2)主機(jī)將執(zhí)行成功的指令通過通信網(wǎng)絡(luò)發(fā)送至從機(jī);
步驟3-3)從機(jī)對接收到的主機(jī)同步測控指令內(nèi)容做校驗,校驗成功后執(zhí)行該指令,完成對主機(jī)指令執(zhí)行的跟隨動作;
步驟3-4)從機(jī)向主機(jī)回復(fù)本次同步成功;
步驟3-5)雙機(jī)重新進(jìn)入待命狀態(tài),等待下一條指令的到來。
本發(fā)明的優(yōu)勢在于:
1、本發(fā)明基于NTP協(xié)議中的服務(wù)器/客戶端模式完成主機(jī)向從機(jī)的授時功能,并參照該模式設(shè)計了主從雙機(jī)測控指令執(zhí)行狀態(tài)的同步機(jī)制,通過測控指令中斷的方式,使得系統(tǒng)僅在收到指揮中心發(fā)來的測控指令,即主從機(jī)的測控指令執(zhí)行狀態(tài)發(fā)生躍遷后進(jìn)行雙機(jī)的狀態(tài)同步,避免了周期性的頻繁同步導(dǎo)致的對CPU資源及網(wǎng)絡(luò)資源的浪費(fèi),提高了系統(tǒng)的可靠性;
2、本發(fā)明在借鑒NTP(網(wǎng)絡(luò)時鐘協(xié)議)同步機(jī)制的基礎(chǔ)之上,結(jié)合測控任務(wù)流程,完成互為備份的主/從機(jī)之間的狀態(tài)同步工作,具有占用系統(tǒng)資源少(可減少約90%非必要的數(shù)據(jù)通信過程),同步耗時短,實時性好(可在10ms內(nèi)完成一次非實時操作系統(tǒng)下的雙機(jī)狀態(tài)同步工作),與任務(wù)耦合度低等特點,適用于武器裝備自動化測試、工業(yè)控制、電力、交通等對設(shè)備可靠性要求較高的應(yīng)用場合。
附圖說明
圖1為本發(fā)明主從身份確立過程的流程圖;
圖2為本發(fā)明主從時鐘同步的時序步驟圖;
圖3為本發(fā)明主從雙機(jī)狀態(tài)同步的時序步驟圖。
具體實施方式
下面結(jié)合附圖與具體實施方式對本發(fā)明作進(jìn)一步詳細(xì)說明。
一種基于網(wǎng)絡(luò)時鐘協(xié)議的主從雙機(jī)狀態(tài)同步方法,所述方法包括:
步驟1)系統(tǒng)開機(jī)運(yùn)行后,主從機(jī)通過本機(jī)配置文件及選舉方法確定一臺為主機(jī),一臺為從機(jī)的雙機(jī)狀態(tài);主機(jī)即為NTP協(xié)議中的服務(wù)器,從機(jī)為客戶端;
如圖1所示,主從身份確立過程的一項原則是是盡量不改變當(dāng)前狀態(tài),盡量避免不必要的主從切換。如果當(dāng)前雙機(jī)默認(rèn)配置狀態(tài)恰好是一主機(jī)一從機(jī),則維持現(xiàn)狀。如果是雙主機(jī)的情況,保證當(dāng)前正在行使主機(jī)職能一方繼續(xù)作為主機(jī),另一方作為從機(jī)。通過比較指令隊列最后執(zhí)行指令時間和上次被選為主機(jī)時間等辦法,讓最后一次被選中為主機(jī)一方繼續(xù)作為主機(jī)。如果出現(xiàn)雙機(jī)之間鏈路不通的情況,讀取并應(yīng)用參數(shù)配置中預(yù)先設(shè)置的主從機(jī)狀態(tài)。如果出現(xiàn)配置錯誤,仍然優(yōu)先保證正在行使主機(jī)職能一方繼續(xù)作為主機(jī)。如果比較各項參數(shù)后仍然不能選舉出主從機(jī),直接以當(dāng)前主動發(fā)起選舉一方作為主機(jī),完成主從雙機(jī)的身份確立;
步驟2)采取二次校時的方法對主機(jī)和從機(jī)的時鐘進(jìn)行同步;
如圖2所示,所述步驟2)具體包括:
步驟2-1)主機(jī)獲取本地的系統(tǒng)時間,發(fā)送校時數(shù)據(jù)包到發(fā)送隊列,并喚醒客戶端線程,發(fā)送校時數(shù)據(jù)幀到從機(jī);
步驟2-2)從機(jī)接到指令后,立即回復(fù)二次校時請求;
步驟2-3)主機(jī)接到二次校時請求后立即獲取最新系統(tǒng)時間,再次發(fā)送校時數(shù)據(jù)幀;
步驟2-4)從機(jī)接到二次校時回復(fù)后,更新系統(tǒng)時間,更新后的從機(jī)本地系統(tǒng)時間為最后一次校時+兩次校時差/2。
步驟3)時鐘同步之后,主從雙機(jī)進(jìn)入待命狀態(tài),當(dāng)雙機(jī)收到指揮中心發(fā)來的測控指令后,主從雙機(jī)狀態(tài)進(jìn)行同步;
如圖3所示,主從機(jī)完成主從身份確立后及時鐘同步后,由主從機(jī)第一次收到后端指揮中心發(fā)來的測控指令開始,雙機(jī)開始以中斷方式進(jìn)行雙機(jī)指令執(zhí)行狀態(tài)同步,主從機(jī)在進(jìn)行每次同步前,都先讀取本機(jī)的主從狀態(tài)標(biāo)識,確定將要執(zhí)行的同步邏輯。確定完同步邏輯之后,主機(jī)立即通過測控層調(diào)用各功能模塊執(zhí)行相關(guān)的測控動作,并將已執(zhí)行的測控指令,需要采集的內(nèi)容按照特定格式組成同步信息幀,通過以太網(wǎng)發(fā)送給從機(jī),通知從機(jī)在上一微小時間間隔前主機(jī)剛剛完成何種操作。而從機(jī)在收到同步信息幀后,進(jìn)行解包的工作,解包成功后從機(jī)也跟隨主機(jī)的動作,通過測控層調(diào)用相關(guān)功能模塊執(zhí)行同步點A相關(guān)的測控任務(wù),當(dāng)執(zhí)行完相關(guān)動作后向主機(jī)返回信息,以通知主機(jī)同步成功,之后,主從機(jī)分別將該次同步過程寫入同步日志,至此,完成了同步點A的所有工作,之后等待下一個同步點的到來,繼續(xù)周期性的進(jìn)行同步工作。