• 沒有找到結果。

第二章 文獻探討

第五節 JMS(Java Message Service)

Layer 的遠端接口,分別有 Connector 與 Protocol Adaptor。Connector 提供一個協定 獨立(protocol-independent)、位置透明(location-transparent)的 MBean server 客戶端 連結介面,如 Remote Method Invocation (RMI) connector;而 Protocol Adaptor 則提 供了一個與協定相依的 MBean server 伺服器端介面,如 HTTP adapter。

本研究採用了遵循 JMX 與 SOA 架構的 JBoss Application Server 作為建置整個 雲端分散式運算架構的管理與佈署環境。在 JBoss 底下,MBean 為基本的管理單 位。本研究將整個龐大的雲端高頻交易平台依照功能切分成數組 MBean,並將之 掛載在由 JBoss Application Server 所建構的雲端叢集之上,這些 MBean 可以被視 為 SOA 架構底下定義的「Service」。

圖 3 JMX 分散式系統架構示意圖 (資料來源:本研究整理)

第五節 JMS(Java Message Service)

Java 訊息服務(Java Message Service, JMS)是一種可以讓 Java 應用程式創造、

傳送、接收以及閱讀訊息的 Java API。JMS 由 Sun 與其他的中介軟體提供商共同 設計,並提供了通用的訊息交換介面讓不同的 JMS 實作產品可以互相溝通。JMS 提供 Java 程式非同步與可靠的訊息交換能力,並進一步讓程式之間的互動可以達 到鬆散耦合(loosely coupled)關係。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

JMS 支援點對點與發佈/訂閱的訊息交換模型:

一、點對點模型(Point-to-Point):

點對點是屬於一對一關係的訊息交換模型,多個訊息接收者可以同時監聽同 一個訊息佇列(Queue),但特定的訊息只會被一個訊息接收者得到。訊息傳送者會 先將訊息傳送到 JMS Server 下的特定訊息佇列,接著再由 JMS Server 連續地將佇 列中的訊息傳送給正在監聽該佇列的訊息接收者。假如同時有多個接收者在監聽 該佇列,則 JMS Server 會依照「先來者優先」的原則來決定將訊息傳送給哪個接 收者;假如沒有接收者監聽該佇列,則訊息會被保留在佇列中,直到有訊息接收 者來監聽該訊息佇列為止。

圖 4 JMS 點對點模型示意圖 (資料來源:本研究整理) 二、發佈/訂閱模型(Publish/Subscribe):

在發佈/訂閱模型中,訊息訂閱者需要事先訂閱有興趣的主題(Topic),然而當 訊息發佈者傳送訊息到該主題的時候,所有訂閱該主題的訊息訂閱者都會接收到 同樣的訊息。主題與訊息訂閱者之間是一對多的關係,且存在於主題中的訊息會

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

被保留到所有訂閱該主題的訂閱者都收到該訊息為止。

圖 5 JMS 發佈/訂閱模型示意圖 (資料來源:本研究整理)

本研究於系統架構中應用發佈/訂閱模型來完成系統各模組之間的鬆散訊息交 換,並採用了遵循 JMS 框架、開源、支援多協定、且可內嵌的非同步訊息交換系 統的訊息交換系統-HornetQ。HornetQ 在訊息交換的工作上有非常高的效率與彈 性,同時支援叢集的訊息交換模式,讓叢集內的各個節點只透過訂閱特定的訊息 主題,就可以非同步、鬆散地接收到跨機器的訊息。

除了資訊交換的議題,本文亦應用了 HornetQ 的 Point-to-Point 訊息交換模式 來控制雲端叢集內的工作流程,以下為簡易示意圖(詳細的工作指派模型請參閱本 文的第四章內容。):

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 6 JBoss Cluster 工作指派簡易示意圖-初始狀態 (資料來源:本研究整理)

圖 7 JBoss Cluster 工作指派簡易示意圖-啟動新工作 (資料來源:本研究整理)

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 8 JBoss Cluster 工作指派簡易示意圖-控制執行中的工作 (資料來源:本研究整理)

相關文件