天天看點

面向消息的持久通信與面向流的通信

一、面向消息的持久通信  

消息隊列系統為持久異步通信提供多種支援,本質是提供消息的中介存儲能力,這樣就不需要消息發送方和接收方在消息傳輸過程中都保持激活狀态。

消息隊列模型

  應用程式可以通過在特定隊列中插入消息來進行通信。消息由一系列通信伺服器依次進行轉發,最終送達目的地。即使在消息發送過程中接收方的機器未處于運作狀态,消息也能送到。

  消息隊列系統的重要特征之一是,通常隻能確定發送方發出的消息最終能插入到接收方的隊列中,并不保證消息到達的時間,甚至不保證消息一定會得到讀取,這完全由接收方來決定。

  

面向消息的持久通信與面向流的通信

  消息轉換器可以像一個消息格式重新編排工具一樣簡單。比如說,假定輸入的小細胞含有資料庫中的一張表,其中,記錄之間通過特殊的代表記錄結束的分隔符來分割,而記錄中的字段長度已知且固定。如果目的應用程式希望使用另外的分隔符來分割記錄,并且希望字段是可變長度,就需要使用消息轉換器來講消息格式轉換為目的應用程式所能夠接受的格式。

  普通消息隊列系統的目标并不僅僅在于為最終使用者提供支援,建立這樣的系統要解決的重要問題是:要為程序間的持久通信提供支援,無論該程序是在運作使用者程式,在處理對資料庫的通路,還是在進行計算等,都必須能夠支援其通信。 比如說:一個設計若幹個資料庫查詢可能需要切分成為幾個子查詢,然後将這些子查詢轉發給相應的資料庫。在這個過程中可以利用消息隊列系統所提供的基本方法來講每個子查詢打包進消息中去,然後将消息發送給相應的資料庫。

二、面向流的通信

  1、為連續媒體提供支援

  媒體是指傳送資訊的手段,其中包括存儲以及傳輸媒體。媒體的重要類型是資訊的表示方式,也就是資訊在計算機系統中的編碼方式。比如文本一般是用ASCII或Unicode來進行編碼。圖像可以采用GIF或JPEG等格式來表示。而計算機中的音頻流可以采用諸如PCM的16位樣本來編碼。

  2、資料流

  對于連續資料流來說,同步是極為關鍵的。為了捕捉同步狀況,要對不同傳輸模式做出區分。在異步傳輸模式下,流中的資料項是逐個傳輸的,但是對于某一項在何時進行傳輸并沒有進一步的限制。比如:檔案可以作為資料流來傳輸,但是每一資料項傳輸完成的确于時間通常是無關緊要的。

  在同步傳輸模式下,資料流中的每一個單元都定義了一個端到端最大延遲時間。比如:傳感器以某個特定的采樣率對溫度值進行采樣,然後将采樣結果通過網絡傳送給操作員。

  等待傳輸模式,在這種模式中資料單元必須按時傳輸,也就是資料傳輸的端到端延遲時間必須同時受到上限和下限的限制,端到端延遲時間上限和下限也稱為邊界延遲抖動。這種傳輸模式對分布式多媒體系統極為有用。

  一個簡單的流隻包含有單個資料序列,而一個複雜的流由若幹相關的簡單流----子流構成。一個複雜流的例子是關于影片傳輸的。這個流由單個視訊流,以及兩個用于以立體聲方式傳輸電影中聲音的音頻流。第四個流用來傳輸自摸或者翻譯成其他語言的文字。各子流間的同步依然是重要的。如果無法做到同步,就無法完整地複現影片。

面向消息的持久通信與面向流的通信

3、同步機制

  那麼到底是如何做到同步的呢?包含兩方面問題,(1)兩個流同步的基本機制 (2)在網絡環境下這些機制的分布式版本

  同步是通過顯式地對單個流的資料單元進行操控來實作的。在本質上,存在一個專門在少數幾個簡單流上執行讀寫操作的程序。

面向消息的持久通信與面向流的通信

  多媒體中間件系統中,中間件提供了一組接口用于控制視訊流和音頻流,其中包括諸如顯示器、照相機和買客房等裝置的接口。每個裝置和每個流都有自己的進階接口,其中包括在發生某些事件時通知應用程式接口,後者用來編寫用于流同步的處理程式。

面向消息的持久通信與面向流的通信

那麼最後總結:

  面向消息的中間件模型一般提供持久異步通信,用在RPC不适用的場合。主要用來協助高度分散的資料庫繼承進大規模資訊系統中。

  流是一種完全不同的通信方式,主要問題是兩個連續的消息是否有時間上的練習。在連續資料流中,每個小弟都規定了端到端的最大延遲時間。發送的消息還要受到端到端最小延遲時間的限制。

參考文獻:《分布式系統原理與泛型》