1. 程式人生 > >訊息中介軟體原理及JMS簡介之一

訊息中介軟體原理及JMS簡介之一

在寫部落格的時候,找到這樣一篇部落格,分析總結的很好,學習了,感謝博主的分享,轉載到這裡大笑

原文作者:orangelizq

--------------------------------------------------------------------

摘要:

       現今,越來越多的企業面臨著各種各樣的資料整合和系統整合,CORBA、DCOM、RMI等RPC中介軟體技術也應運而生,但由於採用RPC同步處理技術,在效能、健壯性、

可擴充套件性上都存在著諸多缺點。而基於訊息的非同步處理模型採用非阻塞的呼叫特性,傳送者將訊息傳送給訊息伺服器,訊息伺服器在合適的時候再將訊息轉發給接收者;傳送和

接收是非同步的,傳送者無需等待,二者的生命週期也可以不必相同,而且傳送者可以將訊息間接傳給多個接收者,大大提高了程式的效能、可擴充套件性及健壯性,這使得非同步處理

模型在分散式應用上比起同步處理模型更具有吸引力。[5]

       本文首先介紹了訊息中介軟體的原理,然後介紹了目前流行的訊息中介軟體產品和一些開源實現。最後詳細分析了SUN及其夥伴公司提出的旨在統一各種訊息中介軟體系統介面的

規範(JMS)。

關鍵字:訊息中介軟體,JMS,點對點,釋出/訂閱

一、中介軟體簡介

1.中介軟體的定義

中介軟體(middleware)是基礎軟體的一大類,屬於可複用的軟體範疇。中介軟體在作業系統軟體,網路和資料庫之上,應用軟體之下,總的作用是為處於自己上層的應用軟體提供運

行於開發的環境,幫助使用者靈活、高效的開發和整合複雜的應用軟體。[1]

IDC對中介軟體的定義為:中介軟體是一種獨立的系統軟體或服務程式,分散式應用軟體藉助這種軟體在不同的技術之間共享資源,中介軟體定位於客戶機伺服器的作業系統之上,管

理計算機資源和網路通訊。

因而中介軟體是指一類軟體,是基於分散式處理的軟體,最突出的特點是其網路通訊功能。也可認為中介軟體是位於平臺和應用之間的通用服務,這些服務具有標準的程式介面和協

議。針對不同的作業系統和硬體平臺,可以有符合介面和協議的多種實現。[1]


1.2 中介軟體的分類

按照IDC的分類方法,中介軟體可分為六類:[1]

1)        終端模擬/螢幕轉換

2)        資料訪問中介軟體(UDA)

3)        遠端過程呼叫中介軟體(RPC)

4)        訊息中介軟體(MOM)

5)        交易中介軟體(TPM)

6)        物件中介軟體

    然而在實際應用中,一般將中介軟體分為兩大類:一類是底層中介軟體,用於支撐單個應用系統或解決一類問題,包括交易中介軟體、應用伺服器、訊息中介軟體、資料訪問中介軟體等;另一類是高層中介軟體,更多的用於系統整合,包括企業應用整合中介軟體、工作流中介軟體、門戶中介軟體等,他們通常會與多個應用系統打交道,在系統中層次較高,並大多基於前一類的底層中介軟體執行。

1.2.1 終端模擬/螢幕轉換

此類中介軟體用於實現客戶機圖形使用者介面與已有的字元介面方式的伺服器應用程式之間的互操作,應用與早期的大型機系統,現在已很少使用。

1.2.2 資料訪問中介軟體

此類中介軟體是為了建立資料應用資源互操作的模式,對異構環境下的資料庫或檔案系統實現聯接。

1.2.3 遠端過程呼叫中介軟體

此類中介軟體可以使開發人員在需要時呼叫位於遠端伺服器上的過程,遮蔽了在呼叫過程中的通訊細節。一個應用程式使用RPC來遠端執行一個位於不同地址空間裡的過程,在效果上看和執行本地呼叫相同。

1.2.4 交易中介軟體

此類中介軟體是專門針對聯機交易系統而設計的。聯機交易系統需要處理大量併發程序,處理併發涉及到作業系統,檔案系統,程式語言,資料通訊,資料庫系統,系統管理,應用軟體等。而交易中介軟體根據分散式交易處理的標準及參考模型,對資源管理,交易管理和應用進行了實現,從而使得基於交易中介軟體開發應用程式更為簡單。交易中介軟體基本上只適用於聯機交易系統,是一種較為專用的中介軟體。

1.2.5 訊息中介軟體

此類中介軟體是指利用高效可靠的訊息傳遞機制進行平臺無關的資料交流,並基於資料通訊來進行分散式系統的整合。通過提供訊息傳遞和訊息排隊模型,它可以在分散式環境下擴充套件程序間的通訊。

訊息中介軟體可以即支援同步方式,又支援非同步方式。非同步中介軟體比同步中介軟體具有更強的容錯性,在系統故障時可以保證訊息的正常傳輸。非同步中介軟體技術又分為兩類:廣播方式和釋出/訂閱方式。由於釋出/訂閱方式可以指定哪種型別的使用者可以接受哪種型別的訊息,更加有針對性,事實上已成為非同步中介軟體的非正式標準。目前主流的訊息中介軟體產品有IBM的MQSeries,BEA的MessageQ和Sun的JMS等[1]

1.2.6 物件中介軟體

傳統的物件技術通過封裝、繼承及多型提供了良好的程式碼重用功能。但這些物件只存在與一個程式中,外界並不知道它們的存在,也無法訪問它們。物件中介軟體提供了一個標準的構建框架,能使不同廠家的軟體通過不同的地址空間,網路和作業系統實現互動訪問。物件中介軟體的目標是為軟體使用者及開發者提供一種應用級的即插即用的互操作性。目前主流的物件中介軟體有OMG的CORBA,Microsoft 的COM以及IBM的SOM,Sun的RMI等。

1.3 中介軟體的特點

一般來講,中介軟體具有以下一些特點:滿足大量應用的需求,運行於多種硬體和作業系統平臺,支援分散式計算,支援標準介面和協議。開發人員通過呼叫中介軟體提供的大量API,實現異構環境的通訊,從而遮蔽異構系統中複雜的作業系統和網路協議。

由於標準介面對於可移植性和標準協議對於互操作性的重要性,中介軟體已成為許多標準化工作的主要部分。分散式應用軟體藉助中介軟體可以在不同的技術之間共享資源。

總的來說,中介軟體遮蔽了底層作業系統的複雜性,使程式開發人員面對一個簡單而統一的開發環境,減少了程式設計的複雜性,將注意力集中與自己的業務上,不必再為程式在不同軟體系統上的移植而重複工作,從而大大減少了技術上的負擔。

二、訊息中介軟體原理

       面向訊息的中介軟體(MOM),提供了以鬆散耦合的靈活方式整合應用程式的一種機制。它們提供了基於儲存和轉發的應用程式之間的非同步資料傳送,即應用程式彼此不直接通訊,而是與作為中介的MOM通訊。MOM提供了有保證的訊息傳送(至少是在儘可能地做到這一點),應用程式開發人員無需瞭解遠端過程呼叫(PRC)和網路/通訊協議的細節。

2.1 訊息中介軟體簡介

       訊息中介軟體利用高效可靠的訊息傳遞機制進行平臺無關的資料交流,並基於資料通訊來進行分散式系統的整合。通過提供訊息傳遞和訊息排隊模型,它可以在分散式環境下擴充套件程序間的通訊。

       訊息中介軟體適用於需要可靠的資料傳送的分散式環境。採用訊息中介軟體機制的系統中,不同的物件之間通過傳遞訊息來啟用對方的事件,完成相應的操作。傳送者將訊息傳送給訊息伺服器,訊息伺服器將訊息存放在若干佇列中,在合適的時候再將訊息轉發給接收者。訊息中介軟體能在不同平臺之間通訊,它常被用來遮蔽掉各種平臺及協議之間的特性,實現應用程式之間的協同,其優點在於能夠在客戶和伺服器之間提供同步和非同步的連線,並且在任何時刻都可以將訊息進行傳送或者儲存轉發,這也是它比遠端過程呼叫更進一步的原因。

       如下圖所示,應用程式A與應用程式B通過使用 MOM 的應用程式程式設計介面(API)傳送訊息進行通訊。


   MOM將訊息路由給應用程B,這樣訊息就可以存在於完全不同的計算機上,MOM 負責處理網路通訊。如果網路連線不可用,MOM會儲存訊息,直到連線變得可用時,再將訊息轉發給應用程式B。 
   靈活性的另一方面體現在,當應用程式A傳送其訊息時,應用程式B甚至可以不處於執行狀態。MOM將保留這個訊息,直到應用程式B開始執行並試著檢索訊息為止。這還防止了應用程式A因為等待應用程式B檢索訊息而出現阻塞。 這種非同步通訊要求應用程式的設計與現在大多數應用程式不同,不過,對於時間無關或並行處理,它可能是一個極其有用的方法。

2.2 訊息中介軟體與分散式物件呼叫的比較

分散式物件呼叫,如CORBA,RMI和DCOM,提供了一種通訊機制,透明地在異構的分散式計算環境中傳遞物件請求,而這些物件可以位於本地或遠端機器。它通過在物件與物件之間提供一種統一的介面,使物件之間的呼叫和資料共享不再關心物件的位置、實現語言及所駐留的作業系統。這個介面就是面向物件的中介軟體。

儘管面向物件的中介軟體是一種很強大的規範被廣泛應用,但是面對大規模的複雜分散式系統,這些技術也顯示出了局限性:

1.同步通訊:客戶發出呼叫後,必須等待服務物件完成處理並返回結果後才能繼續執行。

2.客戶和服務物件的生命週期緊密耦合:客戶程序和服務物件程序都必須正常執行,如果由於服務物件崩潰或網路故障導致客戶的請求不可達,客戶會接收到異常。

為了解決這些問題,出現了面向訊息的中介軟體,它較好地解決了以上的問題。

訊息中介軟體作為一箇中間層軟體,它為分散式系統中建立、傳送、接收訊息提供了一套可靠通用的方法,實現了分散式系統中可靠的、高效的、實時的跨平臺資料傳輸。訊息中介軟體減少了開發跨平臺和網路協議軟體的複雜性,它遮蔽了不同作業系統和網路協議的具體細節,面對規模和複雜度都越來越高的分散式系統,訊息中介軟體技術顯示出了它的優越性:

1.採用非同步通訊模式:傳送訊息者可以在傳送訊息後進行其它的工作,不用等待接收者的迴應,而接收者也不必在接到訊息後立即對傳送者的請求進行處理;

2.客戶和服務物件生命週期的鬆耦合關係:客戶程序和服務物件程序不要求都正常執行,如果由於服務物件崩潰或者網路故障導致客戶的請求不可達,客戶不會接收到異常,訊息中介軟體能保證訊息不會丟失。

相關推薦

訊息中介軟體原理JMS簡介之一

在寫部落格的時候,找到這樣一篇部落格,分析總結的很好,學習了,感謝博主的分享,轉載到這裡 原文作者:orangelizq -------------------------------------------------------------------- 摘要:

訊息中介軟體原理JMS簡介之二

哈,還是原作者的哦 原文作者:orangelizq ---------------------------------------- 2.3 訊息中介軟體的傳遞模式 訊息中介軟體一般有兩種傳遞模型:點對點模型(PTP)和釋出-訂閱模型(Pub/Sub)[2]。 1.

訊息中介軟體原理JMS簡介(2)

  2.3 訊息中介軟體的傳遞模式   訊息中介軟體一般有兩種傳遞模型:點對點模型(PTP)和釋出-訂閱模型(Pub/Sub)。   1. 點對點模型(PTP)   點對點模型用於訊息生產者和訊息消費者之間點到點的通訊。訊息生產者將訊息發動到由某個名字標識的特定消費者。這個名字實際上對應於訊息服務中的一個佇

JMS訊息中介軟體原理ActiveMQ在企業中的應用(接上篇)

程式碼實現:傳送訊息---》接受訊息---》伺服器配置 //1 傳送訊息(接受回覆訊息) public class SenderMessageService { //釋出指定訊息到指定地址(在釋出之前,建議將訊息儲存到資料庫)  public void publish(St

applyMiddleware原理和middleware中介軟體原理應用場景

  首先看下redux執行流程: redux設計思想: (1)Reducer:純函式,只承擔計算 State 的功能,不合適承擔其他功能,也承擔不了,因為理論上,純函式不能進行讀寫操作。 (2)View:與 State 一一對應,可以看作 State 的視覺層,也

訊息中介軟體解決方案-JMS-ActiveMQ

一、JMS入門   1.1 JMS簡介   JMS是Java平臺上有關面向訊息中介軟體的技術規範,它本身只定義了一系列的介面規範,是一種與廠商無關的API,用來訪問訊息收發系統。訊息是JMS中的一種型別物件,由兩部分組成:報頭和訊息主體。報頭由路由資訊以及有關該訊息的元資料組成。訊息主體則攜帶者應用程式的

redux中介軟體原理實現

最近看跟react相關庫的原始碼,越來越發現裡面中介軟體機制的特別重要,各種類庫都是基於此封裝的功能,比如redux簡單的幾個函式,卻巧妙的實現了中介軟體建立,組合,呼叫,下面就一一分析 先看下面最簡單的redux使用例子 import { createStore, ap

訊息中介軟體系列-JMS基本概念和模型

一、定義: JMS 全稱:Java Message Service,Java訊息服務,是Java EE中的一個技術,它定義了Java 中訪問訊息中介軟體的介面,並沒有給予實現,實現JMS介面的訊息中介軟體成為JMS Provider,例如:Active MQ 二、訊息模型

電商專案day13(訊息中介軟體解決方案 JMS&ActiveMQ)

今日目標: 配置nginx反向代理 jms入門 spring整合jms ActiveMQ應用到專案實現上下架同時更改索引庫以及靜態頁面 一.nginx配置專案的反向代理 nginx是什麼? Nginx (engine x) 是一個高效能的HTTP和反向代理服

訊息中介軟體系列-JMS例項(ActiveMQ)

一、ActiveMQ安裝、配置、啟動、視覺化介面 1、安裝 下載地址:http://activemq.apache.org/download.html2、配置(conf目錄下) 1)使用者名稱密碼設定 2)開啟jmx監控 activemq.xml中進行如下修改 注:這裡的配

ActiveMQ訊息中介軟體 原理詳解 &&附demo實現、以及與springboot整合的demo

一、 訊息中介軟體概述1. 什麼是訊息中介軟體? 面向訊息的中介軟體(MessageOrlented MiddlewareMOM)較好的解決了以上問題。傳送者將訊息傳送給訊息伺服器, 訊息伺服器將消感

訊息中介軟體MQ(三)JMS常識簡單案例

1JMS概念 JMS即Java訊息服務(Java Message Service)應用程式介面,是一個Java平臺中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。Java訊息服務是一個與具體平臺無關的AP

訊息中介軟體 AMQP協議 核心概念原理

Headers Exchange A headers exchange is designed for routing on multiple attributes that are more easily expressed as message headers than a routing key. H

JMS|訊息中介軟體(一)簡介

1什麼是訊息中介軟體   訊息中介軟體利用高效可靠的訊息傳遞機制進行平臺無關的資料交流,並基於資料通訊來進行分散式系統的整合。通過提供訊息傳遞和訊息排隊模型,它可以在分散式環境下擴充套件程序間的通訊。對於訊息中介軟體,常見的角色大致也就有 Producer(生

憑什麼說AMQP比JMS優秀啊?JMS才是真正實現了一個客戶端呼叫多種產品的訊息中介軟體

一、AMQP 歷史​ 訊息佇列(Message Queue)起源於一位來自 MIT 的硬體設計教育工作者 Vivek Ranadivé 設想了一種通用軟體匯流排,就像主機板上的匯流排那樣,供其他應用程式接入。Vivek在1983年成立了 Teknekron,高盛等公司作為第一批使用者再金融交易中採用了 Tek

訊息中介軟體JMS

一.什麼是訊息中介軟體      訊息中介軟體利用高效可靠的訊息傳遞機制進行平臺無關的資料交流,並基於資料通訊來進行分散式系統的整合。通過提供訊息傳遞和訊息排隊模型,它可以在分散式環境下擴充套件程序間的通訊。   ActiveMQ 是Apache出品,最流行的,能力強勁的開源訊息匯流排。Acti

訊息中介軟體JMS和spring框架的整合使用

整合其實與原生的非常相似,只是將重複的很多步驟都寫在了配置檔案中,將所有能new的都交給了spring進行管理   生產者productor專案 第一步:導包 匯入一個是跟spring框架整合的包, 一個是訊息中介軟體的包,這時候因為有跟spring整合的包,所以sprin

訊息中介軟體JMS的原生寫法

第一部分: 點對點Queue佇列模式 queque模式特點:訊息持久化,只要消費者上線就可以消費 原生的生產者步驟總結: 1 new一個ActiveMQConnectionFactory工廠跟安裝有訊息中介軟體的連線上  2 通過連線物件獲取session  &

騰訊 VS 阿里 VS 攜程訊息中介軟體設計方案思路

原文連結:https://blog.csdn.net/lizhitao/article/details/51718156 背景 目前我們美團正在設計和不斷迭代、升級訊息中介軟體方案,為了避免走彎路,希望站在巨頭肩膀上,學習經驗、吸取精華,推動美團MQ快速演進,為美團業務高速擴張提供支撐 目標

activemq訊息中介軟體--JMS概述(1)

1 JMS概述 目前現在很多的RPC中介軟體技術都有如下問題: (1)同步通訊,客戶端發出呼叫請求,必須等待服務端處理完成以後返回結果才能繼續執行。 (2)客戶和服務物件的生命週期緊密耦合,客戶程序和服務程序都必須正常進行,如果由於服務物件的崩潰和網路故障導致客戶請求不可達,客戶收到