• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      生產(chǎn)者—消費者模式在地震預(yù)警系統(tǒng)中的應(yīng)用

      2022-08-26 03:37:38李水龍周躍勇周施文于偉恒
      現(xiàn)代信息科技 2022年9期
      關(guān)鍵詞:生產(chǎn)者預(yù)警系統(tǒng)倉庫

      李水龍,周躍勇,周施文,于偉恒

      (福建省地震局,福建 福州 350003)

      0 引 言

      地震預(yù)警利用震中周圍少量觸發(fā)臺站的信息,估算地震基本參數(shù),基于預(yù)警目標及時發(fā)出告警信息,以減輕人員傷亡,減少經(jīng)濟損失,因此對地震預(yù)警系統(tǒng)的處理時效提出了較高的要求。

      地震預(yù)警處理涉及的環(huán)節(jié)較多,包括數(shù)據(jù)接收、仿真變換、震相撿拾、幅值量算、特征周期計算、地震事件判定、震中定位、震級估算、可靠度計算、預(yù)警烈度預(yù)測、預(yù)警時間估算等多個環(huán)節(jié)。傳統(tǒng)的處理方式是以串行的方式從數(shù)據(jù)接收開始按流程依次處理,由于各個環(huán)節(jié)計算復(fù)雜度不同,計算量存在較大差異,整個過程的處理效率容易受計算較為復(fù)雜環(huán)節(jié)的影響,從而降低地震預(yù)警處理的時效性。

      在地震預(yù)警系統(tǒng)的研發(fā)過程中,必須從技術(shù)上尋求能夠解耦不同處理環(huán)節(jié)的密切關(guān)聯(lián)、探索從串行處理向并行處理轉(zhuǎn)變的途徑,從而有力地保證地震預(yù)警系統(tǒng)的時效性。

      1 生產(chǎn)者—消費者模式

      生產(chǎn)者—消費者模式是并發(fā)、多線程編程中一種經(jīng)典的設(shè)計模式,將串行處理變成并行處理,實現(xiàn)了流程解耦,提升了整個系統(tǒng)的處理效率。生產(chǎn)者—消費者模型通過“找出需要做什么”和“執(zhí)行需要做什么”的分離,簡化了開發(fā)模型。生產(chǎn)者和消費者能夠以不同的速度生產(chǎn)和消費數(shù)據(jù)。

      軟件開發(fā)經(jīng)常會遇到這樣的情況:一個模塊負責生成由另一個模塊處理的數(shù)據(jù)(這里的模塊是通用的,它們可以是類、函數(shù)、線程、進程等)。產(chǎn)生數(shù)據(jù)的模塊被形象地稱為生產(chǎn)者,處理數(shù)據(jù)的模塊稱為消費者。為了匹配生產(chǎn)者和消費者之間的速度差異,通常會在兩者之間插入一個倉庫充當中介。生產(chǎn)者將數(shù)據(jù)放入倉庫,消費者從倉庫中取出數(shù)據(jù),完成一次數(shù)據(jù)傳輸過程。

      因此,生產(chǎn)者—消費者模式包含三類參與者:生產(chǎn)者——負責生產(chǎn)產(chǎn)品;倉庫——負責存放產(chǎn)品;消費者——負責消耗產(chǎn)品。生產(chǎn)者—消費者模式結(jié)構(gòu)如圖1所示。

      圖1 生產(chǎn)者—消費者模式結(jié)構(gòu)示意圖

      生產(chǎn)者在倉庫有空位時生產(chǎn),倉庫滿倉時便停止生產(chǎn)。只有倉庫不是空無一物并且處于等待狀態(tài)時,消費者才能消費。當消費者發(fā)現(xiàn)倉庫中沒有產(chǎn)品可以消費時,他們會通知生產(chǎn)者生產(chǎn)。生產(chǎn)者在生產(chǎn)消耗性產(chǎn)品時,應(yīng)通知等待的消費者進行消費。生產(chǎn)者—消費者運行流程如圖2所示。

      圖2 生產(chǎn)者消費者運行流程圖

      生產(chǎn)者—消費者模式能為系統(tǒng)研發(fā)帶來以下好處:(1)支持流程解耦——通過引入共享倉庫,實現(xiàn)生產(chǎn)者與消費者之間的解耦,隔離生產(chǎn)者與消費者各自變化導(dǎo)致的連鎖反應(yīng)。(2)支持并發(fā)執(zhí)行——通過把生產(chǎn)者活動和消費者活動分別放入獨立的并發(fā)主體中,把活動環(huán)節(jié)從串行轉(zhuǎn)變?yōu)椴⑿小#?)支持忙閑不均——根據(jù)共享倉庫的容量,可以支持生產(chǎn)者和消費者以不同的速度完成各自的工作。

      2 地震預(yù)警應(yīng)用

      在地震預(yù)警系統(tǒng)中引入生產(chǎn)者—消費者模式,可以實現(xiàn)各個地震預(yù)警處理環(huán)節(jié)的流程解耦,提升地震預(yù)警處理的并行化程度,對提高地震預(yù)警處理效率起到至關(guān)重要的作用。

      通過對地震預(yù)警各個具體處理環(huán)節(jié)的歸納抽象,可知地震預(yù)警處理過程在較高層面包含以下環(huán)節(jié):數(shù)據(jù)接收、數(shù)據(jù)派發(fā)、通道處理、綜合處理、控制網(wǎng)關(guān)、外圍應(yīng)用,等等。把生產(chǎn)者—消費者模式應(yīng)用到上述各個環(huán)節(jié),形成地震預(yù)警系統(tǒng)的并行化解決方案,如圖3所示。

      圖3 生產(chǎn)者—消費者模式在地震預(yù)警中應(yīng)用的示意圖

      在地震預(yù)警處理的生產(chǎn)活動和消費活動之間,常常將數(shù)據(jù)單元作為交換數(shù)據(jù)的基準。每一項生產(chǎn)活動都被存入倉庫緩沖區(qū)(一個數(shù)據(jù)單元),每個消費活動都從倉庫緩沖區(qū)中取出一個數(shù)據(jù)單元。數(shù)據(jù)單元必須與業(yè)務(wù)對象相關(guān)聯(lián),因此數(shù)據(jù)單元的設(shè)計受到特定業(yè)務(wù)邏輯的影響。

      在設(shè)計數(shù)據(jù)單元時,要滿足以下要求:(1)整體性。在生產(chǎn)活動和消費活動之間交換數(shù)據(jù)單元時,要么將整個數(shù)據(jù)單元傳遞給消費活動,要么根本不傳遞數(shù)據(jù)單元,部分傳遞的情況是不被允許的。(2)獨立性。數(shù)據(jù)單元之間不相互依賴。某個數(shù)據(jù)單元傳輸失敗不影響已完成傳輸和尚未傳輸?shù)臄?shù)據(jù)單元。(3)顆粒度。業(yè)務(wù)對象與數(shù)據(jù)單元對應(yīng)關(guān)聯(lián)的程度。粒度粗細的權(quán)衡基于眾多因素,出于一些經(jīng)驗上的考慮,是一個綜合權(quán)衡的結(jié)果。

      以數(shù)據(jù)接收和通道處理兩個處理環(huán)節(jié)的流程解耦為例,解釋說明生產(chǎn)者—消費者模式在地震預(yù)警系統(tǒng)中的具體應(yīng)用。原來數(shù)據(jù)接收環(huán)節(jié)與通道處理環(huán)節(jié)直接相連,兩者之間存在著較強的流程綁定關(guān)系。在新的設(shè)計里,引入數(shù)據(jù)派發(fā),作為數(shù)據(jù)接收和通道處理之間的緩沖。數(shù)據(jù)派發(fā)從數(shù)據(jù)接收中獲取實時波形數(shù)據(jù),內(nèi)部緩存后再將波形數(shù)據(jù)轉(zhuǎn)發(fā)給通道處理,進行仿真變換和特征提取。通過這種方式,較好地解決了連續(xù)不斷的海量波形數(shù)據(jù)到達與復(fù)雜多變的特征處理效率不一致引起的堵塞問題,從整體上保證了地震預(yù)警處理的高效穩(wěn)定,具體應(yīng)用示例如圖4所示。

      圖4 生產(chǎn)者—消費者模式的具體應(yīng)用示例

      上述處理的部分核心代碼為:

      生產(chǎn)活動——把陸續(xù)到達的二進制字節(jié)數(shù)據(jù)流轉(zhuǎn)化為一個個MiniSeed對象,存入緩沖隊列中。

      倉庫——阻塞式、以先入先出方式訪問的緩沖隊列。MiniSeed對象是基本的數(shù)據(jù)單元,存儲miniseed格式的波形數(shù)據(jù)。

      miniSeedQueue = new ArrayBlockingQueue<MiniSeed>(c apac

      ity,true);

      消費活動——啟動一個新線程,從緩沖隊列中依次獲取MiniSeed對象,遞交給通道處理器進行仿真變換和特征提取等處理。

      地震預(yù)警波形數(shù)據(jù)接收主要負責從多個實時流服務(wù)器接收獲取臺站的實時波形數(shù)據(jù)流,根據(jù)波形數(shù)據(jù)格式,自動產(chǎn)生符合格式要求的波形數(shù)據(jù)包并進行解析,生成對應(yīng)的波形數(shù)據(jù)對象,為后續(xù)的波形數(shù)據(jù)質(zhì)量檢測提供數(shù)據(jù)來源。另外,實現(xiàn)自動重連實時波形流服務(wù)器的功能,以提高實時波形數(shù)據(jù)的連續(xù)性和系統(tǒng)的可靠性。下面是地震預(yù)警數(shù)據(jù)接收的主要流程,流程圖如圖5所示。

      圖5 地震預(yù)警波形數(shù)據(jù)接收流程

      (1)當有新的波形數(shù)據(jù)到達時,本項功能就會啟動。

      (2)系統(tǒng)置位對應(yīng)的實時波形流服務(wù)器的數(shù)據(jù)到達標記。

      (3)系統(tǒng)把接收到的波形數(shù)據(jù)的字節(jié)數(shù)組存放到波形數(shù)據(jù)字節(jié)緩沖區(qū)中。

      (4)系統(tǒng)根據(jù)波形數(shù)據(jù)包大小從緩沖區(qū)中提取所需字節(jié)的數(shù)據(jù)。

      (5)系統(tǒng)根據(jù)波形數(shù)據(jù)格式解析出波形數(shù)據(jù)對象,并存放到臨時波形數(shù)據(jù)對象列表中。

      (6)重復(fù)步驟4,直至波形數(shù)據(jù)緩沖區(qū)中的內(nèi)容符合要求為止。

      (7)系統(tǒng)輸出臨時波形數(shù)據(jù)對象列表的全部內(nèi)容。

      (8)本項功能執(zhí)行結(jié)束。

      下面是輔助流程,流程圖如圖6所示。

      圖6 地震預(yù)警波形數(shù)據(jù)接收輔助流程

      針對每個連接的實時波形流服務(wù)器,建立一個定時監(jiān)控過程:

      (1)設(shè)定時間間隔到達時,本項功能就會啟動。

      (2)檢查對應(yīng)的實時波形流服務(wù)器的數(shù)據(jù)到達標記。

      (3)如果數(shù)據(jù)到達標記已被置位,則清空數(shù)據(jù)到達標記,并轉(zhuǎn)到步驟5。

      (4)如果數(shù)據(jù)到達標記并未置位,則重新與對應(yīng)的實時波形流服務(wù)器建立連接。

      (5)本項功能執(zhí)行結(jié)束。

      內(nèi)部信息傳遞接口通過封裝使不同數(shù)據(jù)對象以規(guī)范統(tǒng)一樣式在系統(tǒng)的各個部分之間無礙流通。該接口的簡要定義為:

      public interface IDataArrive{

      當有新的數(shù)據(jù)對象到達時,dataArrive方法會被激活以實現(xiàn)對數(shù)據(jù)對象的進一步加工處理。dataContainer參數(shù)實現(xiàn)了對不同數(shù)據(jù)對象的統(tǒng)一封裝,它的簡要定義為:

      3 結(jié) 論

      在實際的測試和在線運行過程中,當接入的臺站數(shù)量較多時,生產(chǎn)者產(chǎn)生數(shù)據(jù)多而且快,而消費者卻無法及時處理消費完畢,會產(chǎn)生“快生產(chǎn)者-慢消費者”問題,實時數(shù)據(jù)流服務(wù)器將會把預(yù)警系統(tǒng)當作“慢消費者”,進而強制斷開其連接,導(dǎo)致預(yù)警系統(tǒng)無法接收到臺站數(shù)據(jù),因此,在引入生產(chǎn)者—消費者模式的同時,在臺站數(shù)量足夠龐大時,還需引入高性能并發(fā)處理框架,解決“快生產(chǎn)者—慢消費者”的瓶頸問題。

      猜你喜歡
      生產(chǎn)者預(yù)警系統(tǒng)倉庫
      倉庫里的小偷
      1月巴西生產(chǎn)者價格指數(shù)上漲3.92%
      民用飛機機載跑道入侵預(yù)警系統(tǒng)仿真驗證
      填滿倉庫的方法
      四行倉庫的悲壯往事
      一種基于CNN遷移學(xué)習的井下煙、火智能感知預(yù)警系統(tǒng)
      基于ZigBee與GPRS的輸電桿塔傾斜監(jiān)測預(yù)警系統(tǒng)
      電子制作(2019年11期)2019-07-04 00:34:36
      2019德國IF設(shè)計大獎
      家禽福利的未來:生產(chǎn)者能期待什么?
      橋、隧安全防范聲光預(yù)警系統(tǒng)
      凤凰县| 安达市| 东港市| 甘南县| 麻城市| 定边县| 绵竹市| 西充县| 保山市| 隆子县| 镇坪县| 廉江市| 奉节县| 左贡县| 万山特区| 汶川县| 宁南县| 正镶白旗| 新乐市| 抚顺市| 津南区| 维西| 景德镇市| 桦川县| 延庆县| 巴塘县| 蒙阴县| 昔阳县| 师宗县| 任丘市| 天全县| 上虞市| 保定市| 浠水县| 通江县| 渭源县| 调兵山市| 曲周县| 沾化县| 剑川县| 理塘县|