• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    RabbitMQ在氣象通信系統(tǒng)中的應用研究

    2020-04-30 04:26:14余永城翁秋華
    計算機技術與發(fā)展 2020年4期
    關鍵詞:鍵值服務端隊列

    余永城,翁秋華,段 卿,袁 偉

    (福建省氣象信息中心,福建 福州 350001)

    0 引 言

    氣象通信系統(tǒng)是承擔氣象觀測數據從臺站生成—省級—國家級的收集、處理、分發(fā)的一套業(yè)務系統(tǒng)[1-2]?,F有的氣象通信系統(tǒng)1.0版本是基于傳統(tǒng)的FTP文件傳輸方式進行觀測數據的收集處理的,因為是文件級的傳輸,需要在服務器上落盤處理,因此對服務器磁盤的I/O性能要求比較高。同時,基于TCP/IP協(xié)議的FTP文件傳輸方式存在諸如效率低下和數據傳輸模式不合理等問題。隨著現代氣象自動觀測技術的迅速發(fā)展,氣象資料的數量及類型都大大增加。重要的氣象觀測資料產生的頻次已經提升到了分鐘級,傳輸的時效也提高到了秒級。目前的氣象通信系統(tǒng)1.0版本已無法滿足大數量、高頻次、多種類的觀測數據高時效傳輸。因此如何快速地將觀測數據通過氣象通信系統(tǒng)傳輸到省級和國家級是很關鍵的。

    RabbitMQ消息隊列技術支持多種客戶端,非常適合在分布式計算系統(tǒng)消息存儲轉發(fā)的場景中使用[3]。RabbitMQ采用Socket傳輸協(xié)議,服務器端支持隊列持久化,可以有效保證各個傳輸環(huán)節(jié)中數據的完整性[4],同時RabbitMQ提供路由控制轉發(fā)功能符合氣象數據傳輸的業(yè)務需求。通過對RabbitMQ消息隊列技術在氣象通信系統(tǒng)中的應用研究,設計開發(fā)了基于消息通信傳輸模式的氣象通信系統(tǒng)2.0版本。

    1 消息隊列技術

    1.1 消息中間件

    消息是消息隊列中的最小單元,實質上是一段可由一個或多個應用程序理解的數據[5-7],一般作為多個應用程序之間的信息傳輸載體。消息隊列(message queue),也即消息中間件,具有流量控制、低耦合、廣播、高效、可靠投遞、一致性等功能。消息隊列通過其高可靠的傳遞機制可進行和平臺無關的數據交換[8-11]。消息隊列技術正逐漸成為各行業(yè)通信系統(tǒng)中廣泛使用的核心技術,目前市面上有很多主流消息隊列中間件,如ActiveMQ,RabbitMQ,Kafka,RocketMQ等。

    消息中間件常見的有兩種傳遞方式:點對點(Point-to-Point)方式和發(fā)布/訂閱(Pub/Sub)方式[12]。Point-to-Point方式是基于隊列的。發(fā)布者將消息發(fā)布到隊列中,消息訂閱者從隊列中獲取消息。由于隊列的這種點對點傳遞機制,使得消息具備異步傳輸的功能。Pub/Sub方式定義了向一個主題(Topic)發(fā)布消息還是訂閱消息。在消息傳遞的過程中,主題作為傳輸介質,消息發(fā)布者和訂閱者都要依靠主題進行,發(fā)布者將消息發(fā)布到主題中,訂閱者則訂閱來自主題中的消息。

    1.2 RabbitMQ

    高級消息隊列協(xié)議(advanced message queuing protocol,AMQP)是一個面向消息的中間件設計的應用層協(xié)議開放標準[13]。無論客戶端/中間件不同的產品,不同的開發(fā)語言等,只要基于此協(xié)議的客戶端和消息中間件都可進行消息的傳遞。主要特點是面向消息、隊列、路由、可靠、安全[14-15]。RabbitMQ是一個開源的AMQP的標準實現,支持多種語言的客戶端,非常適合在分布式系統(tǒng)消息存儲轉發(fā)的場景中使用。RabbitMQ消息隊列采用Socket傳輸協(xié)議,服務端支持消息隊列的持久性,可以有效保證各個環(huán)節(jié)流轉過程的觀測數據完整性。同時,RabbitMQ提供靈活的路由控制轉發(fā)功能,符合氣象數據傳輸的業(yè)務需求。

    RabbitMQ服務端主要由主題(Topic)和隊列(Queue)組成??蛻舳送ǔS袃煞N類型:發(fā)布者(Producer)和消費者(Consumer)。主題負責接收消息和路由鍵值(Routing-Key)信息,然后根據路由鍵值信息將消息分配給消息隊列。RabbitMQ消息傳輸模式如圖1所示。首先,消息發(fā)布者P向主題X發(fā)送帶有路由鍵值R.#的消息。然后,服務端會根據路由鍵值信息將消息轉發(fā)到相應的隊列Q中。最后,消費者C就可以從隊列Q中獲取相應的消息進行消費。

    圖1 RabbitMQ消息傳輸模式

    2 RabbitMQ在氣象通信系統(tǒng)中的應用

    2.1 氣象觀測資料

    隨著自動觀測技術的快速發(fā)展,氣象觀測資料產生的頻次已經提升到了分鐘級。表1所示為部分的氣象觀測資料類型和它的數據傳輸頻次,每種資料大小都在200字節(jié)以上,有些可以達到幾KB,甚至幾MB。傳統(tǒng)TCP/IP協(xié)議的FTP文件傳輸方式已經無法滿足這么高的傳輸頻次和海量觀測數據的傳輸需要,而且頻繁的文件讀寫,會大大影響服務器的整體性能。

    表1 部分氣象觀測資料類型

    續(xù)表1

    為了解決觀測資料傳輸頻次和海量數據的傳輸問題,使用RabbitMQ消息隊列技術進行數據的傳輸。不僅可以保證傳輸的可靠性,還可以大大提高從臺站到省到國家的數據傳輸的及時性。而且,在整個過程中,不會生成文件,這也會減少磁盤的讀寫。

    2.2 消息傳輸架構設計

    基于RabbitMQ消息中間件技術開發(fā)的氣象通信系統(tǒng),包含消息傳輸客戶端,省級消息傳輸服務端和國家級消息傳輸服務端三大部分。其中,消息傳輸客戶端安裝在地面氣象觀測站,消息傳輸服務端分別部署在省級消息服務器和國家級消息服務器。氣象觀測數據消息傳輸流程如圖2所示,觀測臺站通過消息傳輸客戶端將ISOS軟件觀測到數據以消息的方式傳給省級下消息服務端,省級消息服務端通過配置shovel插件,將消息數據轉發(fā)到國家級的消息傳輸服務端。

    2.3 數據消息封裝

    通過研究RabbitMQ消息隊列技術,結合氣象觀測數據的特點,利用消息中間件傳輸觀測數據,有必要設計傳輸過程中的數據格式,即數據消息封裝。文中制定了一種氣象數據的消息傳輸格式,它包括消息頭(Message Header)和消息體(Message Body)。消息頭以鍵值對的形式存放消息屬性,消息體則以字符串的形式存放報文信息。消息頭和消息體封裝成消息,然后發(fā)送到消息隊列中。在消息傳輸過程中,不需要對報文進行解碼,通過讀取消息頭中的消息屬性就可以對需要監(jiān)視的信息進行提取,減少了傳輸過程中的處理成本。

    根據氣象數據的特點,消息屬性的詳細設計如表2所示。為了排查重復發(fā)送的報文,將隨機UUID添加到消息屬性設計中作為消息傳輸的唯一標識符;消息屬性里應包含消息發(fā)布者和消息接收者信息,通過讀取屬性,就可以知道消息的轉發(fā)方式;氣象數據在各個傳輸環(huán)節(jié)中,需要加以監(jiān)視,因此消息屬性中應該包含消息發(fā)送時間、站號、氣象資料四級編碼、觀測時間等監(jiān)視信息等。

    2.4 高時效高可靠設計

    氣象數據傳輸具有高度的時間敏感性,特別是對于國家級考核的資料要求的時效性更高。為了保證地面標準格式(BUFR)數據的秒級傳輸,設計了RabbitMQ多機多節(jié)點的集群部署模式,如圖3所示。臺站通過消息發(fā)送客戶端將消息發(fā)送到省級服務端,省級服務端通過HA-Proxy負載均衡技術將消息轉發(fā)給國家級服務端。HA-Proxy是一款高可用性、負載均衡以及基于四層TCP和七層HTTP應用的代理軟件,它可以支持數以萬計的并發(fā)連接[16]。

    圖4為多次模擬RabbitMQ雙機多節(jié)點(1~8節(jié)點)部署模式下,大批量消息數據從臺站生成到國家級接收的實際用時情況。從傳輸時效性曲線圖中可以得出結論:相同的測試環(huán)境下,不管是雙機單節(jié)點、雙機雙節(jié)點還是雙機8節(jié)點,87%以上的消息數據都能在1秒內完成臺站到國家級的傳輸,96%以上的數據都在2秒內完成傳輸,全部的數據都能在10秒內完成傳輸。從氣象資料時效性和服務器性能方面綜合考慮,決定在省級部署兩臺消息服務器,每臺服務器上部署八個RMQ節(jié)點,就可實現氣象觀測數據的秒級傳輸。

    圖3 RabbitMQ多機多節(jié)點集群部署模式

    圖4 雙機多節(jié)點傳輸時效性測試結果

    從實驗結果可以看出,RabbitMQ多機多節(jié)點集群模式可以大幅度提升消息傳輸效率。不但如此,多機多節(jié)點的集群模式允許消息發(fā)布者與消費者在某個RMQ節(jié)點意外宕機的情況下繼續(xù)保持運行,當RMQ節(jié)點在集群中宕機后,消息傳輸客戶端可以重新鏈接到集群中的其它節(jié)點繼續(xù)進行消息的傳輸。另外,為了增加消息傳輸的可靠性,采用了消息發(fā)布確認和消息接收確認模式。發(fā)布確認可以有效確保消息傳輸到了消息服務器,假如超過規(guī)定的時間,消息還沒有抵達到指定服務器,就會返回發(fā)送超時的錯誤代碼,當客戶端收到該錯誤代碼后,會試著再一次發(fā)送;接收確認的原理是:在消息消費者獲取消息之后,并沒有馬上把消息刪除,而是將消息標識為Unacked狀態(tài),直到收到消費者消費完消息返回ack指令后,才會從隊列中刪除消息,從而保證消息的完整,不丟失。

    2.5 交換控制策略設計

    消息隊列交換控制策略主要依賴于RabbitMQ的兩個核心組件:主題Topic和隊列Queue。在消息發(fā)布者將消息發(fā)布到主題之后,服務端根據消息中攜帶的路由鍵值對主題中的消息進行交換控制。也就是說,將含有某些特定標識符的路由鍵值信息捆綁到某一個隊列當中,消息訂閱者就可以從相應的隊列中獲取該消息。

    為了滿足氣象觀測數據的業(yè)務需要,研究并制定了基于RabbitMQ的氣象觀測數據消息傳輸控制策略。消息按照主題方式發(fā)送,每個主題代表一種氣象觀測資料。例如,國家地面自動站數據,臺站通過消息傳輸客戶端向省級主題X.OBS中發(fā)送消息;消息以隊列方式接收,對列名需要包含接收者的名稱,明確指定由誰來消費消息。例如,消息發(fā)給國家級,它的隊列名就是Q.OBS.TO.BABJ;從消息主題到消息隊列的轉發(fā)過程由路由鍵值來控制,路由鍵值名稱以“R.”開頭,鍵值名一般包含消息的發(fā)送者、級別、資料類型、資料編碼等。

    以國家級地面氣象自動站消息傳輸為例,其交換控制策略如圖5所示。臺站ISOS軟件觀測到的數據通過消息傳輸客戶端以消息的形式發(fā)送給省級主題X.OBS,然后通過路由鍵值R.#將消息存到消息隊列中Q.OBS.TO.BABJ、Q.OBS.TO.Server、Q.OBS.Monitor,最后通過Shovel將其轉發(fā)到國家級消息服務器和省級MDOS,CIMISS和Monitor用戶。

    圖5 地面自動站消息傳輸控制策略

    3 結束語

    通過對RabbitMQ消息隊列技術在氣象通信系統(tǒng)中的應用研究,設計開發(fā)了基于消息通信傳輸模式的氣象通信系統(tǒng)2.0版本,2018年12月已經在全國各省和臺站部署相關的應用并業(yè)務運行。通過兩個月觀測數據的傳輸情況分析得到:系統(tǒng)運行穩(wěn)定,96%的氣象觀測數據能夠在2秒內完成從臺站到國家級的傳輸,并且在10秒內完成全部數據的傳輸。同時,系統(tǒng)通過消息交換控制策略將觀測數據及時轉發(fā)到MDOS、CIMISS、MICAPS等氣象業(yè)務系統(tǒng)中供業(yè)務單位使用。業(yè)務應用結果表明,基于RabbitMQ技術的氣象通信系統(tǒng),可以滿足大數量、高頻次、多種類氣象觀測數據的高時效、高可靠傳輸,大幅提升了氣象數據的傳輸時效性和服務能力。

    猜你喜歡
    鍵值服務端隊列
    非請勿進 為注冊表的重要鍵值上把“鎖”
    隊列里的小秘密
    基于多隊列切換的SDN擁塞控制*
    軟件(2020年3期)2020-04-20 00:58:44
    在隊列里
    云存儲中基于相似性的客戶-服務端雙端數據去重方法
    新時期《移動Web服務端開發(fā)》課程教學改革的研究
    消費導刊(2018年8期)2018-05-25 13:19:48
    在Windows Server 2008上創(chuàng)建應用
    豐田加速駛入自動駕駛隊列
    一鍵直達 Windows 10注冊表編輯高招
    電腦愛好者(2017年9期)2017-06-01 21:38:08
    “鴿子”玩升級 黑你沒商量
    抚远县| 崇明县| 定远县| 江津市| 黑龙江省| 水富县| 唐山市| 洛浦县| 柞水县| 鄂伦春自治旗| 枣强县| 赣州市| 康马县| 阳曲县| 内乡县| 微博| 叶城县| 四平市| 南昌市| 儋州市| 宜春市| 英德市| 郑州市| 梅河口市| 潼关县| 察隅县| 枝江市| 鱼台县| 茶陵县| 建阳市| 莒南县| 开远市| 阳东县| 贺兰县| 天全县| 桃源县| 安平县| 天长市| 九江市| 唐山市| 阳高县|