朱欽鴻 鮑敏
關(guān)鍵詞:模式匹配;通訊協(xié)議;XML;異構(gòu)數(shù)據(jù);微服務(wù)
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8228(2023)11-100-04
0 引言
工業(yè)企業(yè)的智能化改造通常跟隨著設(shè)備聯(lián)網(wǎng),通過設(shè)備產(chǎn)量、質(zhì)量數(shù)據(jù)的自動(dòng)化上傳及分析,給優(yōu)化決策算法提供數(shù)據(jù)依據(jù)。我們的目標(biāo)企業(yè)擁有60 條不同時(shí)期建設(shè)的自動(dòng)產(chǎn)線,其機(jī)床設(shè)備的供應(yīng)商、PLC系統(tǒng)、數(shù)控程序版本均有差異,通訊協(xié)議、數(shù)據(jù)地址、數(shù)據(jù)格式三項(xiàng)設(shè)備聯(lián)網(wǎng)的關(guān)鍵內(nèi)容無法統(tǒng)一。因此設(shè)計(jì)一個(gè)支持插拔式的協(xié)議數(shù)據(jù)解析系統(tǒng)是解決各采集設(shè)備與控制中心之間數(shù)據(jù)傳輸,降低采集模塊更新成本的重要部分[1]。
本文提出一種利用軟件層協(xié)議來避免直接操作底層協(xié)議的設(shè)計(jì)方案[2]。系統(tǒng)采用基于C 語(yǔ)言開發(fā)的數(shù)據(jù)結(jié)構(gòu),通過數(shù)據(jù)映射,實(shí)現(xiàn)動(dòng)態(tài)轉(zhuǎn)換模式的自適應(yīng),從而降低了開發(fā)解析系統(tǒng)的時(shí)間和人力成本,提高了系統(tǒng)的可維護(hù)性。開發(fā)者設(shè)計(jì)數(shù)據(jù)模型解析方式及其對(duì)應(yīng)的模型結(jié)構(gòu),用戶僅需要修改數(shù)據(jù)模型即可完成對(duì)解析系統(tǒng)的規(guī)則更新。
1 設(shè)計(jì)方案
本文的研究?jī)?nèi)容是異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)設(shè)計(jì)。通訊協(xié)議是完成不同服務(wù)之間的數(shù)據(jù)交互的一種規(guī)則,由語(yǔ)法、語(yǔ)義、同步這三大要素構(gòu)成[3]。而數(shù)據(jù)解析就是通過事先規(guī)定好的協(xié)議將可利用的數(shù)據(jù)信息從數(shù)據(jù)幀中提取出來。該解析系統(tǒng)依靠軟件層面的通訊協(xié)議實(shí)現(xiàn)解析范圍的動(dòng)態(tài)自適應(yīng),以及對(duì)數(shù)據(jù)轉(zhuǎn)換器服務(wù)進(jìn)行統(tǒng)一的配置;最終實(shí)現(xiàn)異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)的標(biāo)準(zhǔn)化、規(guī)模化。本章節(jié)將對(duì)解析系統(tǒng)的整體架構(gòu)進(jìn)行詳細(xì)分析。
1.1 模型架構(gòu)
本文提出的異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)的架構(gòu)如圖1所示,該系統(tǒng)由五個(gè)部分組成:配置中心模塊、模式匹配模塊、數(shù)據(jù)轉(zhuǎn)換模塊、服務(wù)注冊(cè)模塊、鏈路追蹤模塊,各模塊之間相互配合,完成異構(gòu)數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)換[4]。
⑴ 配置中心模塊:集中管理系統(tǒng)中的配置信息,實(shí)現(xiàn)系統(tǒng)配置的集中管理、分發(fā)。
⑵ 模式匹配模塊:基于自定義的哈希數(shù)據(jù)結(jié)構(gòu),建立異構(gòu)數(shù)據(jù)與轉(zhuǎn)換器之間的映射關(guān)系。
⑶ 數(shù)據(jù)轉(zhuǎn)換模塊:服務(wù)啟動(dòng)時(shí)完成初始化操作,通過讀取XML 文件內(nèi)的數(shù)據(jù)模型來創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換器。相應(yīng)的數(shù)據(jù)轉(zhuǎn)換器根據(jù)制定的轉(zhuǎn)換規(guī)則對(duì)異構(gòu)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。
⑷ 服務(wù)注冊(cè)模塊:服務(wù)注冊(cè)模塊會(huì)將所有的服務(wù)實(shí)例添加到注冊(cè)中心,使某個(gè)微服務(wù)可以發(fā)現(xiàn)和調(diào)用注冊(cè)中心的服務(wù)。
⑸ 鏈路追蹤模塊:對(duì)服務(wù)調(diào)用和網(wǎng)絡(luò)連接情況進(jìn)行追蹤記錄,當(dāng)系統(tǒng)出現(xiàn)異常時(shí)能幫助維護(hù)人員很好地定位到問題所在點(diǎn)。
1.2 系統(tǒng)處理機(jī)制
步驟一:系統(tǒng)進(jìn)行初始化操作,模式匹配器模塊和數(shù)據(jù)轉(zhuǎn)換器模塊分別通過讀取配置中心內(nèi)的配置信息,生成對(duì)應(yīng)的服務(wù)并注冊(cè)到服務(wù)注冊(cè)中心。
步驟二:系統(tǒng)接收到異構(gòu)數(shù)據(jù),鏈路追蹤模塊開始運(yùn)行,記錄數(shù)據(jù)后續(xù)的操作流程(見圖2 中過程①)。系統(tǒng)通過服務(wù)注冊(cè)中心調(diào)用模式匹配器,由模式匹配器導(dǎo)出異構(gòu)數(shù)據(jù)和數(shù)據(jù)轉(zhuǎn)換器之間的映射關(guān)系(見圖2 中過程②)。
步驟三:系統(tǒng)根據(jù)映射關(guān)系調(diào)用數(shù)據(jù)轉(zhuǎn)換器,并通過數(shù)據(jù)轉(zhuǎn)換器進(jìn)行數(shù)據(jù)的獲取和整理,最后將標(biāo)準(zhǔn)化的數(shù)據(jù)寫入到持久化數(shù)據(jù)庫(kù)中(見圖2 中過程③④⑤⑥)。
2 異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)的實(shí)現(xiàn)
2.1 模式匹配器的設(shè)計(jì)
模式匹配器包含特征提取模塊、映射模塊和原始異構(gòu)數(shù)據(jù)發(fā)送模塊,其中映射模塊是其核心部分。為了提高數(shù)據(jù)匹配效率,映射模塊采用了哈希表數(shù)據(jù)結(jié)構(gòu),并根據(jù)目標(biāo)場(chǎng)景中查詢操作占絕大多數(shù)的特點(diǎn),設(shè)計(jì)了一種高效的自定義哈希表數(shù)據(jù)結(jié)構(gòu)。
哈希表的設(shè)計(jì)
哈希表是通過應(yīng)用哈希函數(shù)將鍵值轉(zhuǎn)換為哈希值,并使用索引轉(zhuǎn)換計(jì)算出對(duì)應(yīng)的一維數(shù)組索引來實(shí)現(xiàn)高效數(shù)據(jù)訪問的數(shù)據(jù)結(jié)構(gòu)。由于哈希函數(shù)存在哈希碰撞的可能性,并且索引轉(zhuǎn)換可能會(huì)縮小哈希值的范圍,因此可能會(huì)發(fā)生索引沖突的情況。為了生成分布均勻的哈希值,本文采用了MurmurHash3 算法作為哈希函數(shù),該算法具有快速計(jì)算和哈希值均勻分布的特點(diǎn)。在出現(xiàn)索引沖突情況下,通??梢圆捎靡韵聝煞N常見的解決方案[5-7]。
⑴ 開放地址法:當(dāng)哈希沖突發(fā)生時(shí),通過尋找數(shù)組中下一個(gè)空閑位置將該鍵值對(duì)數(shù)據(jù)插入空槽中。線性探測(cè)法、雙重哈希法是常見的開放地址法的實(shí)現(xiàn)方法。
⑵ 鏈地址法:數(shù)組每一個(gè)槽內(nèi)都存放一個(gè)哈希桶的內(nèi)存地址哈希桶由鏈表、數(shù)組等數(shù)據(jù)結(jié)構(gòu)構(gòu)成。當(dāng)哈希沖突發(fā)生時(shí),將多個(gè)鍵值對(duì)放入同一個(gè)哈希桶中。
本文采用鏈地址法作為一種解決哈希沖突的方法。相比于開放地址法,鏈地址法在代碼設(shè)計(jì)上更加簡(jiǎn)單明了,而開放地址法則需要考慮更多的沖突處理細(xì)節(jié)。鑒于特殊的目標(biāo)場(chǎng)景,查詢操作在其中占據(jù)了非常高的比例。因此,為了保證系統(tǒng)具有良好的性能表現(xiàn),自定義哈希表采用了數(shù)組作為哈希桶的數(shù)據(jù)結(jié)構(gòu),以保證查詢操作的時(shí)間復(fù)雜度較低。哈希表的自定義結(jié)構(gòu)如圖3 所示。
2.2 數(shù)據(jù)轉(zhuǎn)換器的設(shè)計(jì)
2.2.1 數(shù)據(jù)轉(zhuǎn)換器轉(zhuǎn)換流程設(shè)計(jì)
數(shù)據(jù)轉(zhuǎn)換器利用預(yù)加載模式,將通信協(xié)議信息提前加載到內(nèi)存中,該協(xié)議描述了數(shù)據(jù)的校驗(yàn)規(guī)則和解析流程。數(shù)據(jù)轉(zhuǎn)換器會(huì)先獲取協(xié)議中的標(biāo)識(shí)符,并與原始異構(gòu)數(shù)據(jù)中的標(biāo)識(shí)符進(jìn)行比較。若兩者匹配,則進(jìn)行校驗(yàn)碼驗(yàn)證[8]。如果校驗(yàn)失敗,則轉(zhuǎn)換器會(huì)要求模式匹配器進(jìn)行重發(fā)(見圖4 中過程①②)。通過校驗(yàn)后,數(shù)據(jù)轉(zhuǎn)換器會(huì)讀取數(shù)據(jù)區(qū)中的數(shù)據(jù),并按照協(xié)議規(guī)定的解析流程,將其轉(zhuǎn)換成標(biāo)準(zhǔn)數(shù)據(jù)(參見圖4 中過程③)。
2.2.2 XML 協(xié)議文檔的制定
按照通訊協(xié)議規(guī)范,本文中提出的XML 協(xié)議文檔由多個(gè)標(biāo)簽構(gòu)成,表1 詳細(xì)列出了各個(gè)標(biāo)簽的名稱與功能描述。
XML 協(xié)議文檔的標(biāo)簽層級(jí)圖如圖5 所示。
3 實(shí)例測(cè)試
本實(shí)驗(yàn)采用數(shù)據(jù)采集軟件,對(duì)原始異構(gòu)數(shù)據(jù)進(jìn)行封裝處理,并傳輸?shù)疆悩?gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng),模擬現(xiàn)實(shí)工廠場(chǎng)景的運(yùn)行情況。為使測(cè)試數(shù)據(jù)清晰呈現(xiàn),實(shí)驗(yàn)采用看板對(duì)相關(guān)實(shí)驗(yàn)結(jié)果進(jìn)行展示。
實(shí)驗(yàn)設(shè)備:三臺(tái)64 位計(jì)算機(jī)、一臺(tái)無線路由器。
實(shí)驗(yàn)設(shè)計(jì):主服務(wù)器啟動(dòng)解析系統(tǒng),通過配置中心讀取XML 文件完成各個(gè)微服務(wù)的初始化。數(shù)據(jù)模擬軟件將異構(gòu)數(shù)據(jù)傳遞給解析系統(tǒng),從而完成數(shù)據(jù)標(biāo)準(zhǔn)化。在實(shí)驗(yàn)過程中,需要對(duì)主服務(wù)器解析系統(tǒng)中的部分微服務(wù)進(jìn)行啟停操作。通過數(shù)據(jù)看板觀察解析系統(tǒng)是否符合設(shè)計(jì)要求。
3.1 實(shí)驗(yàn)環(huán)境搭建
針對(duì)工廠現(xiàn)場(chǎng)數(shù)據(jù)采集,本實(shí)驗(yàn)開發(fā)了模擬數(shù)據(jù)采集軟件,如圖6 所示。異構(gòu)數(shù)據(jù)來源于數(shù)據(jù)庫(kù)中的真實(shí)工廠數(shù)據(jù),并且可以靈活地調(diào)節(jié)異構(gòu)數(shù)據(jù)的采集比例和發(fā)送速率。
遵循本文提出的XML 協(xié)議文檔標(biāo)簽定義和層級(jí)關(guān)系,編寫了如下XML 協(xié)議文檔,其中節(jié)選內(nèi)容如圖7 所示。
3.2 實(shí)驗(yàn)
根據(jù)實(shí)驗(yàn)流程,用模擬軟件向異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)發(fā)送異構(gòu)數(shù)據(jù),在實(shí)驗(yàn)過程中進(jìn)行了部分服務(wù)的啟停操作,并最終通過看板系統(tǒng)展示相關(guān)實(shí)驗(yàn)數(shù)據(jù)。異構(gòu)數(shù)據(jù)標(biāo)準(zhǔn)化實(shí)驗(yàn)結(jié)果如圖8 所示,驗(yàn)證了異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換能力和可靠性。
4 結(jié)論
本文提出了一種目標(biāo)工廠異構(gòu)數(shù)據(jù)轉(zhuǎn)換問題的解決方案,即工業(yè)設(shè)備聯(lián)網(wǎng)場(chǎng)景下的異構(gòu)數(shù)據(jù)動(dòng)態(tài)解析系統(tǒng)。該系統(tǒng)采用微服務(wù)架構(gòu),包括模式匹配器、數(shù)據(jù)轉(zhuǎn)換器、服務(wù)注冊(cè)中心等組件,并通過添加或修改XML 文件數(shù)據(jù)來實(shí)現(xiàn)轉(zhuǎn)換對(duì)象的增加與修改,從而體現(xiàn)了系統(tǒng)的通用性和標(biāo)準(zhǔn)化特點(diǎn)。實(shí)驗(yàn)結(jié)果表明,該解析系統(tǒng)能夠正確、高效地標(biāo)準(zhǔn)化異構(gòu)數(shù)據(jù),這項(xiàng)技術(shù)方案在制造業(yè)領(lǐng)域具有推廣和參考價(jià)值。