国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于民航消息系統(tǒng)自定義規(guī)則的動(dòng)態(tài)消息過濾方法

2024-12-31 00:00:00肖夢(mèng)龍?邵明磊?李嵩
信息系統(tǒng)工程 2024年9期

摘要:在常規(guī)民航消息廣播訂閱模式的使用過程中,并非所有發(fā)送方發(fā)送的消息都需要每個(gè)訂閱方處理。對(duì)于無需處理的消息,往往會(huì)占用消費(fèi)方資源,對(duì)消費(fèi)方處理錯(cuò)誤報(bào)文的能力有一定要求。如果發(fā)送方發(fā)出對(duì)于廣播下某個(gè)業(yè)務(wù)的定制化報(bào)文,其他業(yè)務(wù)需要做兼容過濾,才能保證無關(guān)報(bào)文不會(huì)影響自身業(yè)務(wù)正常運(yùn)行。而這會(huì)加重開發(fā)的復(fù)雜程度。基于民航消息系統(tǒng)自定義規(guī)則的動(dòng)態(tài)消息過濾方法通過動(dòng)態(tài)獲取并解析業(yè)務(wù)配置的自定義規(guī)則,根據(jù)規(guī)則進(jìn)行消息過濾,極大降低了消費(fèi)方的開發(fā)成本及設(shè)計(jì)復(fù)雜度,提高了整個(gè)集群服務(wù)的可用性,提升了整體服務(wù)的質(zhì)量。

關(guān)鍵詞:消息過濾;過濾規(guī)則;消息廣播訂閱模式

一、前言

中國(guó)民用航空局《智慧民航建設(shè)路線圖》明確提出要以智慧出行、智慧空管、智慧機(jī)場(chǎng)、智慧監(jiān)管為抓手,強(qiáng)化改革創(chuàng)新、科技創(chuàng)新、基礎(chǔ)保障三大支撐,實(shí)現(xiàn)完備的智慧民航運(yùn)輸系統(tǒng)、產(chǎn)業(yè)協(xié)同發(fā)展體系、改革創(chuàng)新推進(jìn)機(jī)制、運(yùn)行基礎(chǔ)設(shè)施環(huán)境,實(shí)現(xiàn)跨業(yè)務(wù)領(lǐng)域數(shù)據(jù)資源的融合創(chuàng)新和挖掘分析[1]。作為民航信息系統(tǒng)的運(yùn)營(yíng)主體,隨著各航司業(yè)務(wù)復(fù)雜度的增加,民航機(jī)場(chǎng)的旅客行李等業(yè)務(wù)報(bào)文的消息傳輸量也變得越來越多,在這種場(chǎng)景下,消息處理模式的選擇就變得非常重要。由于在民航機(jī)場(chǎng)消息傳輸業(yè)務(wù)場(chǎng)景中,系統(tǒng)模塊間消息傳遞有著大量應(yīng)用場(chǎng)景,消息廣播訂閱模式的使用逐漸成為業(yè)界共識(shí)。消息訂閱模式可以高效將發(fā)送方傳遞的消息廣播給各個(gè)不同的消費(fèi)方,但是對(duì)于當(dāng)下復(fù)雜多變的民航機(jī)場(chǎng)業(yè)務(wù)場(chǎng)景[2],廣播訂閱模式也有很多缺點(diǎn)。首先在該模式下,每個(gè)訂閱的消費(fèi)者都會(huì)接收到相同的消息,但是在民航機(jī)場(chǎng)業(yè)務(wù)中,并非所有發(fā)送方發(fā)送的旅客行李等業(yè)務(wù)報(bào)文消息都是需要每個(gè)訂閱方處理的。對(duì)于無需處理的消息,往往會(huì)加重消費(fèi)方的負(fù)擔(dān),占用消費(fèi)方資源,影響消費(fèi)方的處理速度。其次,該模式對(duì)消費(fèi)方對(duì)于錯(cuò)誤報(bào)文的處理能力或者對(duì)于發(fā)送方傳遞的報(bào)文內(nèi)容有一定要求。如果發(fā)送方發(fā)出了對(duì)于廣播下某個(gè)業(yè)務(wù)的定制化報(bào)文,其他業(yè)務(wù)的消費(fèi)方需要做兼容過濾,才能保證這種無關(guān)報(bào)文不會(huì)影響自己的業(yè)務(wù)正常運(yùn)行,而這往往會(huì)加重開發(fā)的復(fù)雜程度。

二、相關(guān)技術(shù)介紹

消息中間件中應(yīng)用的廣播訂閱模式就是當(dāng)發(fā)送方發(fā)送一條消息到消息隊(duì)列中后,所有訂閱這條隊(duì)列的訂閱方均能接收到這條消息。該模式可以有效地把消息傳遞給每個(gè)需要的有業(yè)務(wù)關(guān)聯(lián)的消費(fèi)者[3]。

消息過濾機(jī)制具有精確、高效的優(yōu)點(diǎn),基于消息標(biāo)記或者消息內(nèi)容等方面可以通過使用消息內(nèi)容對(duì)比[4],方便地匹配出業(yè)務(wù)所需的消息,和廣播訂閱模式整合后,可以使消費(fèi)客戶方聚焦于自己業(yè)務(wù)邏輯的開發(fā),而不再關(guān)心冗余消息的處理。

為了解決上述問題,本文提出了一種在廣播訂閱模式下由消息中間件自主完成的支持自定義規(guī)則的動(dòng)態(tài)消息過濾方法。通過動(dòng)態(tài)獲取業(yè)務(wù)配置的自定義規(guī)則,解析規(guī)則的語法語義,根據(jù)解析出來的規(guī)則含義,對(duì)比消息內(nèi)容是否匹配,如果匹配則按規(guī)則將消息過濾,如果不匹配,則將消息正常導(dǎo)入消費(fèi)服務(wù)中,從而實(shí)現(xiàn)由消息中間件獨(dú)立實(shí)現(xiàn)的動(dòng)態(tài)消息過濾機(jī)制。該方法最大限度地降低了消息廣播模式下的消費(fèi)方對(duì)消息解析并過濾功能的開發(fā)成本以及設(shè)計(jì)復(fù)雜度。同時(shí)由于消息過濾是由消息中間件實(shí)現(xiàn),所有使用本消息中間件的服務(wù)天然具備了消息過濾功能,極大地提高了整個(gè)集群消息交互服務(wù)的可用性,提升了整體服務(wù)的質(zhì)量并能支持多種復(fù)雜業(yè)務(wù)場(chǎng)景。

三、技術(shù)方案

本方法提出了一種基于語法解析和消息內(nèi)容比對(duì)實(shí)現(xiàn),可以根據(jù)接收方動(dòng)態(tài)設(shè)置的消息過濾規(guī)則完成消息過濾,并動(dòng)態(tài)生效。

通過使用語法解析器,解析規(guī)則控制器設(shè)置的過濾規(guī)則,轉(zhuǎn)化為服務(wù)端可用的多種規(guī)則控制器,控制器通過對(duì)比隊(duì)列中的消息內(nèi)容,過濾掉不符合規(guī)則的消息,只把符合規(guī)則的消息內(nèi)容推送給消費(fèi)者客戶端。在訂閱模式下,不同消費(fèi)者之間可以獨(dú)立設(shè)置不同的過濾規(guī)則,從而不互相影響,見圖1。

(一)系統(tǒng)組成

本方法由過濾規(guī)則控制器、過濾語法解析器、隊(duì)列組(隊(duì)列1、隊(duì)列2)、消息過濾控制器組組成,見圖2。

過濾規(guī)則控制器:根據(jù)消息過濾規(guī)則發(fā)布者結(jié)合業(yè)務(wù)場(chǎng)景設(shè)置過濾發(fā)布規(guī)則,生成符合語法規(guī)則的多種消息過濾規(guī)則,包括根據(jù)消息屬性鍵值過濾、消息標(biāo)記位過濾、消息屬性鍵值對(duì)值過濾等,并把規(guī)則存儲(chǔ)在服務(wù)端緩存。

過濾語法解析器:主要完成根據(jù)特定語法語義規(guī)則對(duì)過濾規(guī)則控制器傳輸過來的消息過濾規(guī)則進(jìn)行語法解析,并將解析后的規(guī)則語句和不同的消息過濾控制器相互匹配。

隊(duì)列組:消息傳輸媒介,完成帶有標(biāo)識(shí)的消息的傳輸,并把消息持久化到磁盤存儲(chǔ)。

消息過濾控制器:根據(jù)過濾語法解析器匹配出的過濾控制器中相應(yīng)的解析后的過濾規(guī)則逐條匹配隊(duì)列中的消息內(nèi)容,并將規(guī)則匹配的消息內(nèi)容傳遞給消費(fèi)者客戶端,規(guī)則不匹配的消息則過濾掉。

(二)實(shí)現(xiàn)原理

本文提出了一種在廣播訂閱模式下由消息中間件自主完成的支持自定義規(guī)則的動(dòng)態(tài)消息過濾機(jī)制實(shí)現(xiàn)方法,其核心思想就是通過解析規(guī)則發(fā)布者設(shè)置的灰度規(guī)則,選擇對(duì)應(yīng)語法的過濾規(guī)則控制器,由相應(yīng)控制器對(duì)隊(duì)列中的消息逐條匹配,每條消息內(nèi)容是由消息屬性、消息標(biāo)記位和消息體組成的,過濾控制器會(huì)匹配消息內(nèi)容或者消息屬性是否和規(guī)則語法匹配,對(duì)匹配的消息會(huì)傳遞給消費(fèi)者,動(dòng)態(tài)過濾掉不匹配規(guī)則語法的消息,達(dá)到對(duì)消息進(jìn)行過濾控制的目的,從而實(shí)現(xiàn)消息的過濾處理機(jī)制。在訂閱模式下多消費(fèi)者互相獨(dú)立的過濾規(guī)則,在隊(duì)列組中隊(duì)列需要支持訂閱模式的基礎(chǔ)上通過解析的語法規(guī)則對(duì)應(yīng)的消息過濾控制器不同,每個(gè)過濾器會(huì)匹配不同的隊(duì)列消息副本完成實(shí)現(xiàn)消息消費(fèi)同時(shí)不互相影響。

圖3分別描述了從業(yè)務(wù)發(fā)送消息到對(duì)消息進(jìn)行解析過濾并傳給消費(fèi)者業(yè)務(wù)操作的整個(gè)過濾業(yè)務(wù)邏輯的詳細(xì)流程。

整個(gè)處理流程可以分為服務(wù)消息過濾流程和發(fā)布過濾規(guī)則解析流程,下面分別對(duì)這兩個(gè)階段進(jìn)行詳細(xì)描述。

服務(wù)消息過濾流程:

1.消息發(fā)送者向隊(duì)列中發(fā)送一條消息請(qǐng)求,消息格式為消息屬性、消息標(biāo)記位和消息內(nèi)容體組合而成。

2.消息進(jìn)入隊(duì)列中并存儲(chǔ)。

3.當(dāng)消費(fèi)者服務(wù)從隊(duì)列拉取消息時(shí),規(guī)則處理器會(huì)先判斷相關(guān)的隊(duì)列和消費(fèi)者信息是否開啟了對(duì)應(yīng)消息過濾開關(guān)。

4.如果沒有配置相關(guān)過濾規(guī)則開關(guān),則直接把消息推送給消費(fèi)者客戶端。

5.如果配置了相關(guān)過濾規(guī)則開關(guān),則過濾處理器會(huì)逐條檢索每條消息(檢索消息屬性,消息報(bào)文體,消息標(biāo)記)。

6.過濾處理器會(huì)過濾掉不符合消息規(guī)則的消息。

7.如果過濾處理器檢索到匹配過濾規(guī)則,會(huì)把消息推送給消費(fèi)客戶端。

發(fā)布過濾規(guī)則解析流程:

1.用戶結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景設(shè)置多種不同級(jí)別的消息過濾規(guī)則策略。

2.語法解析器根據(jù)特定語法語義規(guī)則對(duì)過濾規(guī)則控制器傳輸過來的消息過濾規(guī)則進(jìn)行語法解析。

3.語法解析器將解析后的規(guī)則語句和不同的消息過濾控制器相互匹配。

4.語法解析器將匹配到的過濾控制器提供給消息過濾使用。

四、具體實(shí)施方式

本文的關(guān)鍵技術(shù)點(diǎn)集中在過濾語法解析器以及消息過濾控制器中,分別為結(jié)合民航消息系統(tǒng)業(yè)務(wù)場(chǎng)景的多種過濾語法定義和解析、消息過濾處理機(jī)制。下面分別描述以上技術(shù)點(diǎn)的詳細(xì)說明方法。

(一)結(jié)合民航消息系統(tǒng)業(yè)務(wù)場(chǎng)景的多種過濾語法定義和解析

消息過濾規(guī)則的語法需要貼合民航消息系統(tǒng)當(dāng)前業(yè)務(wù)所使用的消息報(bào)文格式,目前民航消息系統(tǒng)傳輸?shù)囊粭l報(bào)文消息是由三部分組成的,分別是消息屬性、消息標(biāo)記位和消息內(nèi)容,見圖4。

消息標(biāo)記位是字符串類型,用來給消息標(biāo)記類型。消息屬性是由Key和Value組成的鍵值對(duì)Map類型,用來傳輸消息附加屬性。消息內(nèi)容是二進(jìn)制類型數(shù)據(jù),用來記錄消息內(nèi)容體。

為了保證用戶傳輸過濾場(chǎng)景的多樣性,消息過濾規(guī)則支持三種類型的過濾:對(duì)消息標(biāo)記位內(nèi)容進(jìn)行過濾、對(duì)消息屬性鍵值對(duì)的Key值進(jìn)行過濾和對(duì)消息屬性鍵值對(duì)的Value值進(jìn)行過濾。由于消息傳輸過程中,逐條按位解析消息內(nèi)容會(huì)對(duì)消息傳輸性能產(chǎn)生影響,所以在進(jìn)行消息過濾規(guī)則設(shè)置時(shí),并不對(duì)消息內(nèi)容進(jìn)行檢索解析,從而保證了過濾機(jī)制的性能幾乎無影響。接下來詳細(xì)介紹過濾規(guī)則語法。

主要語法規(guī)則如下:

過濾規(guī)則語法主要由三部分組成,即 lt;屬性gt; lt;操作gt; lt;值gt;。

過濾規(guī)則以lt;屬性gt;開頭,屬性可選如下三個(gè)值:

1.@tag

2.@attr

3.attr中的鍵:attr.name

分別代表著:

@tag消息標(biāo)記位內(nèi)容

@attr消息屬性鍵值對(duì)key值

attr中的鍵是消息屬性鍵值對(duì)的value值

過濾規(guī)則居中的是lt;操作gt;部分,操作可選如下值:

1.beg:以lt;值gt;開始

2.end:以lt;值gt;結(jié)束

3.weq:等于lt;值(字符串)gt;,支持通配符*,?

4.nweq:不等于lt;值(字符串)gt;,支持通配符*,?

5.ex:鍵值是否存在(attr),是

6.nex:鍵值是否存在(attr),否

7.gt:大于,值為數(shù)字

8.ge:大于等于,值為數(shù)字

9.le:小于等于,值為數(shù)字

10.lt:小于,值為數(shù)字

11.eq:等于,值為數(shù)字

12.neq:不等于,值為數(shù)字

操作主要包含對(duì)屬性部分的具體匹配操作,由于屬性中包含字符串內(nèi)容、數(shù)字、字母、中文,還有常用通配符需求,所以在操作中把如上判斷都進(jìn)行了兼容整合。

lt;值gt;字段則是具體需要按操作匹配的具體內(nèi)容。

按如上語法規(guī)則定義后,可以組合產(chǎn)生多種含義的不同語句,詳細(xì)說明如下:

1.“@tag beg prefix”" 代表著篩選出以prefix開頭的tag的消息

2.“@tag end suffix”" 代表著篩選出以suffix結(jié)尾的tag的消息

3.“@tag gt 1000 ? ?” 代表著篩選出tag值大于1000的消息

4.“@attr ex type ?”" 代表著篩選出attr是否存在type為key的消息

5.“type weq CA? ? ?”" 代表著篩選出attr中key為type 對(duì)應(yīng)的value值內(nèi)容是否等于 CA的消息

6.“mode neq 500 ? ?”代表著篩選出attr中key為mode 不等于 500的消息

7.“name beg ca ? ?” 代表著篩選出attr中key為name 以ca開頭的消息

(二)消息過濾處理機(jī)制

消息過濾處理主要是根據(jù)解析過濾規(guī)則語法,并從語法的屬性和操作組合中找到對(duì)應(yīng)不同的過濾控制器。消息過濾控制器負(fù)責(zé)檢索每條消息的消息屬性的鍵值對(duì)和消息標(biāo)記位內(nèi)容。根據(jù)規(guī)則過濾掉不符合規(guī)則語義的消息,達(dá)到消息分流的目的從而實(shí)現(xiàn)消息過濾處理能力。

圖5描述了過濾控制的完整流程,以下詳細(xì)描述:

1.消息生產(chǎn)者生產(chǎn)兩份內(nèi)容相同的消息到隊(duì)列組的不同兩個(gè)隊(duì)列中。

2.消息內(nèi)容分別按順序傳入內(nèi)容標(biāo)記位為tag1,屬性為attr2,屬性為attr1,標(biāo)記位為tag2,屬性為attr1的5條消息。

3.消息過濾語法解析器根據(jù)過濾規(guī)則控制器產(chǎn)生的過濾控制規(guī)則(@attr weq attr1,@tag beg tag1)含義為找到attr屬性等于attr1的消息和找到tag標(biāo)記位以tag1開頭的消息;根據(jù)規(guī)則獲取相應(yīng)的消息過濾器。

4.過濾控制器會(huì)先從隊(duì)列中逐條比對(duì)消息內(nèi)容,并把符合過濾規(guī)則的消息單獨(dú)取出。

5.過濾控制器會(huì)把取出的消息重新按順序排序后,返回給消費(fèi)者。

通過以上過程完成消息中間件的消息過濾控制,并且通過動(dòng)態(tài)產(chǎn)生處理規(guī)則可以動(dòng)態(tài)調(diào)整消息過濾情況。

五、結(jié)語

本文介紹了基于民航消息系統(tǒng)自定義規(guī)則的動(dòng)態(tài)消息過濾方法,在民航消息發(fā)布訂閱模式下,可以根據(jù)業(yè)務(wù)場(chǎng)景設(shè)置自定義的精細(xì)粒度的過濾規(guī)則,并動(dòng)態(tài)解析生效,可以把業(yè)務(wù)需要的消息精準(zhǔn)地過濾在指定的消息內(nèi)容中,做到最小化精確消息過濾語法,并完成消息過濾控制,具有簡(jiǎn)化業(yè)務(wù)開發(fā)復(fù)雜度、提升效率,提高業(yè)務(wù)消息處理速度等優(yōu)勢(shì)。

參考文獻(xiàn)

[1]中國(guó)民用航空局.智慧民航建設(shè)路線圖[EB/OL]. [2022-05-25].https://www.gov.cn/xinwen/2022-01/21/5669771/files/f7402a57bcf349b0ae8d1224a0f35737.pdf.

[2]章鵬.消息中間件技術(shù)在數(shù)字電視應(yīng)急廣播中的應(yīng)用研究[J].有線電視技術(shù),2019(03):28-31.

[3]呂勇,謝長(zhǎng)生,高三紅.實(shí)時(shí)測(cè)控計(jì)算機(jī)應(yīng)用系統(tǒng)的可靠性保障技術(shù)[J].計(jì)算機(jī)應(yīng)用,2003(06):101-103+106.

[4]王重楠,王宗陶,鮑忠貴,等.發(fā)布/訂閱模式測(cè)控消息中間件系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2015,35(03):878-881.

兴山县| 城市| 淄博市| 醴陵市| 玉门市| 宣化县| 平定县| 汉沽区| 弥勒县| 舞钢市| 黄浦区| 双江| 社旗县| 龙胜| 河北区| 栾城县| 贡山| 香河县| 沛县| 乌兰察布市| 册亨县| 镇康县| 论坛| 玉溪市| 商城县| 奈曼旗| 南郑县| 鹤山市| 漳平市| 历史| 湘阴县| 岳普湖县| 儋州市| 西贡区| 修水县| 绥江县| 安图县| 宁明县| 昂仁县| 靖边县| 贡觉县|