• 
    

    
    

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

      ?

      一種分布式架構(gòu)下的實時消息同步機(jī)制的設(shè)計與實現(xiàn)

      2018-06-08 10:03陳鑫
      科技視界 2018年8期
      關(guān)鍵詞:監(jiān)聽隊列消息

      陳鑫

      【摘 要】由于筆者工作中經(jīng)常面臨如何快速、準(zhǔn)確的實現(xiàn)多終端之間基于Client/Server架構(gòu)下實施消息同步的問題。于是,通過引用數(shù)據(jù)庫中的Service Broker技術(shù)和WCF消息框架,開發(fā)并實現(xiàn)了一套分布式架構(gòu)下的實時消息同步中間件。本文以此為契機(jī),介紹了這種分布式架構(gòu)下的實時消息同步機(jī)制的設(shè)計與實現(xiàn)方法。本文先對這種消息同步機(jī)制的架構(gòu)進(jìn)行了介紹,給出了其實現(xiàn)框架,進(jìn)而介紹了如何在此框架下有效的構(gòu)建消息傳遞的機(jī)制,并對其性能進(jìn)行了分析。本套解決方案已經(jīng)成功應(yīng)用在空中交通管制專業(yè)中,實現(xiàn)了面向空中交通管制的消息實施傳遞,并對其他行業(yè)有輕量級實時消息傳遞需求的應(yīng)用有一定參考作用。

      【關(guān)鍵詞】消息實時同步;空中交通管制

      中圖分類號: TP277 文獻(xiàn)標(biāo)識碼: A 文章編號: 2095-2457(2018)08-0234-002

      Design and implementation of a real-time message synchronization mechanism under a distributed architecture

      CHEN Xin

      (China Civil Aviation Air Traffic Management Bureau, Guangzhou, Guangdong 510000, China)

      【Abstract】Since my work is often faced with how to quickly and accurately implement the problem of implementing message synchronization between multiple terminals based on Client/Server architecture. Therefore, a set of real-time message synchronization middleware under a distributed architecture is developed and implemented by referring to the Service Broker technology and WCF message framework in the database. This article takes this opportunity to introduce the design and implementation of a real-time message synchronization mechanism under this distributed architecture.

      This paper first introduces the architecture of this message synchronization mechanism, gives its implementation framework, and then introduces how to build a message delivery mechanism effectively under this framework and analyzes its performance. This set of solutions has been successfully applied in the air traffic control professional, realized the implementation of message transmission for air traffic control, and has certain reference effect on the application of lightweight real-time messaging needs in other industries.

      【Key words】Real-time synchronization of messages; Air traffic control

      如何讓數(shù)據(jù)庫中不斷變化的航班數(shù)據(jù)無延時的送給管制員一直是困擾開發(fā)人員的一個課題。在以往的系統(tǒng)中,大部分采用的技術(shù)是定時的查詢數(shù)據(jù)庫,獲得數(shù)據(jù)庫中變化的數(shù)據(jù)或者獲取整個數(shù)據(jù)庫中最新的快照,然后通過處理之后再前臺展現(xiàn)出來。這樣的方法就存在數(shù)據(jù)更新不及時,并發(fā)訪問時突發(fā)數(shù)據(jù)量大,容易發(fā)生數(shù)據(jù)庫死鎖等問題。不僅在用戶感受上,也在系統(tǒng)穩(wěn)定性上處于不利狀態(tài)。如果在管制員對航班進(jìn)行管制的時候,能獲得實時的航班數(shù)據(jù)將大大提高管制的效率和安全性,不僅如此,這樣的方式也避免了高頻率的整表輪詢,隔離了數(shù)據(jù)庫和前臺應(yīng)用程序,從技術(shù)上大大提高了系統(tǒng)的穩(wěn)定性。隨著微軟.NET 3.x開發(fā)平臺和SQL SERVER 2005的推出,將數(shù)據(jù)實時傳送給管制員從技術(shù)上走向了可能。中南空管局通信網(wǎng)絡(luò)中心在近期的塔臺自動化項目中,就采用了這樣的刷新方案。

      整個數(shù)據(jù)實時刷新解決方案的架構(gòu)包括了三組程序:數(shù)據(jù)庫激發(fā)層(Messages Activate Layer),消息處理服務(wù)器(Messages Process Server),客戶端消息處理核心(Messages Process Client Core)。其中,數(shù)據(jù)庫激發(fā)層主要用來捕獲數(shù)據(jù)庫發(fā)生的變化,并且把變化信息存儲進(jìn)一個可靠的安全隊列中。消息處理服務(wù)器以將監(jiān)聽到的數(shù)據(jù)庫發(fā)生的變化進(jìn)行解析,重構(gòu),并且發(fā)送給客戶端??蛻舳讼⑻幚砗诵挠脕肀WC和服務(wù)端的連接,同時將接收到的數(shù)據(jù)緩存和傳送給前臺程序。

      SQL SERVER 2005在SQL SERVER 2005中引入了Service Broker的概念。Service Broker 為 SQL Server 提供隊列和可靠的消息傳遞。利用觸發(fā)器和Service Broker的消息隊列我們可以構(gòu)建一個消息激發(fā)層(Messages Activate Layer),利用這個消息激發(fā)層我們可以將數(shù)據(jù)庫中某個表的變化組織成XML格式的消息,并放入Service Broker提供的消息隊列中。其結(jié)構(gòu)簡圖如上:

      在Service Broker提供的消息隊列中,提供給用戶一個安全的消息隊列,所謂安全就是當(dāng)數(shù)據(jù)庫訪問程序沒有顯式取走數(shù)據(jù)之前或者消息在失效之前,消息將會安全的被保存在消息隊列中。

      值得一提的是,在觸發(fā)器封裝消息時必須必須和消息拆箱擁有相同的類型,從ServiceBroker設(shè)計書中看出在Service Broker中必須按照以下要求預(yù)先定義好進(jìn)入消息隊列的數(shù)據(jù)類型和輸出隊列的消息類型,在消息入隊和出隊時都必須遵循以下定義:

      CREATE MESSAGE TYPE message_type_name

      [ AUTHORIZATION owner_name ]

      [ VALIDATION = { NONE

      | EMPTY

      | WELL_FORMED_XML

      |VALID_XML WITH SCHEMA COLLECTION

      schema_collection_name

      } ]

      [ ; ]

      消息類型的定義就是要讓消息收發(fā)的雙方都遵循同樣一種數(shù)據(jù)類型對消息進(jìn)行處理,以避免類型混亂導(dǎo)致無法正確輸出消息的情況。

      在將數(shù)據(jù)庫變化存入隊列后就可以通過一個分布式的程序集來對消息進(jìn)行解析和分發(fā)。這個消息傳遞模塊對于Service Broker來說是一個客戶端,他用阻塞監(jiān)聽的方式等待消息隊列中的消息,一旦消息隊列中存在消息,則監(jiān)聽線程將會獲得這條消息。其核心是利用了T-SQL中的RECEIVE語句。

      [ WAITFOR ( ]

      RECEIVE [ TOP ( n ) ]

      [ ,...n ]

      FROM

      [ INTO table_variable ]

      [ WHERE { conversation_handle = conversation_handle

      | conversation_group_id = conversation_group_id } ]

      [ ) ] [ , TIMEOUT timeout ]

      [ ; ]

      當(dāng)消息處理服務(wù)器收到消息后將會對消息正文中類型化的XML的數(shù)據(jù)進(jìn)行解包和分拆,然后發(fā)送已經(jīng)在消息處理服務(wù)器上注冊的客戶端。

      客戶端程序通過消息處理服務(wù)器的負(fù)載均衡控制模塊獲得連接端口之后就可以通過WCF的訂閱發(fā)布模式連接到消息處理服務(wù)器提供的tcp.net契約上,這個契約將會在消息處理服務(wù)器和消息處理客戶端之間建立一個安全的通信通道,并且通過這個通道,客戶端可以直接使用一個在消息處理服務(wù)器上定義的事件,通過這個事件,消息將會以.NET中的高級類型(例如DataTable)將數(shù)據(jù)發(fā)送給客戶端。

      通過這樣的一個方案,數(shù)據(jù)庫產(chǎn)生的變化就可以避免以輪詢的方式傳遞到客戶端,而是通過阻塞監(jiān)聽——委托事件的方式實施傳遞給前臺,消息流轉(zhuǎn)的時間資源開銷將被大大降低。從壓力測試的結(jié)果來看,一個消息處理服務(wù)器對應(yīng)一個消息處理客戶端的情況下,每分鐘消息傳遞的最大值是2400條。在多個客戶端的情況下,處理效率會略減。

      【參考文獻(xiàn)】

      [1]虞益誠.SQL Server 2005數(shù)據(jù)庫應(yīng)用技術(shù)(第二版). 中國鐵道出版社.

      [2]趙麗輝,岳淑玲.JOY MUNDY.SQL Server 2005數(shù)據(jù)庫技術(shù)與應(yīng)用.機(jī)械工業(yè)出版社.

      [3]Klaus Aschenbrenner. Pro SQL Server 2005 Service Broker. APress.

      猜你喜歡
      監(jiān)聽隊列消息
      千元監(jiān)聽風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
      隊列里的小秘密
      在隊列里
      豐田加速駛?cè)胱詣玉{駛隊列
      網(wǎng)絡(luò)監(jiān)聽的防范措施
      應(yīng)召反潛時無人機(jī)監(jiān)聽航路的規(guī)劃
      消息
      消息
      消息
      局域網(wǎng)監(jiān)聽軟件的設(shè)計
      会理县| 龙江县| 万山特区| 如皋市| 龙江县| 贺州市| 绥化市| 文山县| 固镇县| 和政县| 女性| 容城县| 土默特左旗| 辽中县| 巩义市| 扶风县| 福建省| 南郑县| 无极县| 武乡县| 永善县| 秦皇岛市| 神木县| 栾川县| 邵武市| 曲阳县| 大同县| 安图县| 东兴市| 井陉县| 忻城县| 息烽县| 大姚县| 昭觉县| 教育| 富蕴县| 沙洋县| 宝清县| 乐陵市| 公主岭市| 准格尔旗|