Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java System Message Queue 3 2005Q1 技術概述 

第4章
訊息伺服器

訊息伺服器中所介紹的 Message Queue 訊息伺服器,是由單一代理程式或一組共同運作的代理程式 (代理程式叢集) 所組成,負責執行訊息路由與傳送作業。

本章討論代理程式的內部架構、描述其各種元件,並說明在開發與生產環境配置與管理代理程式所需的步驟。它由下列部份所組成:

瞭解代理程式的功能元件可協助您配置想要的代理程式運作方式、調整作業,以及最佳化效能。本章內容較適用於管理員,而非應用程式開發者。


代理程式架構

若要執行訊息傳送,代理程式必須設定與用戶端通訊的通道、執行認證與授權、適當路由訊息、確保可靠傳送,並為監視系統效能提供資料。

若要執行這套複雜的功能,代理程式將使用一些不同的內部元件,並且每個元件在傳送過程中都有特定的作用。圖 4-1 中說明代理程式元件,表 4-1 中則簡單描述這些元件。訊息路由器元件執行主要的訊息路由和傳送服務,其他元件提供訊息路由器依存的重要之支援服務。

圖 4-1 代理程式元件

圖表顯示代理程式的功能元件。這些元件及其使用將在以下表格中描述。

表 4-1 主代理程式服務元件和功能 

元件

說明/功能

連線服務

管理代理程式與用戶端之間的實體連線,為進來和外送的訊息提供傳輸。

訊息路由器

管理訊息的路由與傳送:這些訊息包括 JMS 訊息以及 Message Queue 訊息傳送系統為支援 JMS 訊息傳送而使用的控制訊息。

持續性管理程式

管理向永久性儲存體的資料寫入,以便系統故障不會導致傳送 JMS 訊息的故障。

安全性管理程式

為請求連線至代理程式的使用者提供認證服務,為已認證的使用者提供授權服務 (存取控制)。

監視服務

產生可以寫入大量輸出通道的度量和診斷資訊,另外,您可以使用輸出通道來監視和管理代理程式。

根據載入條件、應用程式的複雜性等,您可以配置代理程式,以最佳化代理程式的效能。


代理程式元件

下列各節描述圖 4-1 中所列的各個代理程式元件、代理程式的功能,以及其運作方式。如需代理程式的個別特性與配置程序的詳細資訊,請參閱「Message Queue 管理指南」。

連線服務

Message Queue 代理程式支援與應用程式用戶端和管理用戶端的通訊。每種連線均由其服務類型和協定類型指定。

服務類型     指定此服務提供 JMS 訊息傳送 (NORMAL) 或提供支援管理工具的 Message Queue 管理服務 (ADMIN)。

協定類型     指定支援此服務的基本傳輸協定層。

目前,Message Queue 代理程式可提供的連線服務如表 4-2 中所示。

表 4-2 代理程式支援的連線服務 

服務名稱

服務類型

協定類型

jms

NORMAL

TCP

ssljms

NORMAL

TLS (基於 SSL 的安全性)

httpjms (企業版)

NORMAL

HTTP

httpsjms (企業版)

NORMAL

HTTPS (基於 SSL 的安全性)

admin

ADMIN

TCP

ssladmin

ADMIN

TLS (基於 SSL 的安全性)

您可以將代理程式配置為執行這些連線服務的任何一種或全部。每種連線服務可支援特定認證和授權 (存取控制) 功能 (請參閱安全性管理程式)。每種連線服務均為多重執行緒,支援多重連線。

每種連線服務可用於特定的連接埠,此連接埠由代理程式的主機名稱和連接埠號指定。可以動態配置連接埠,或您可以指定連線服務為可用時的連接埠。圖 4-2 中說明了一般方案。

圖 4-2 連線服務支援

圖表顯示與連接埠對映器和執行緒儲存區管理程式通訊的連線服務。

連接埠對映器

共用連接埠對映器會為連線服務指定連接埠。連接埠對映器本身常駐在標準的連接埠號 7676 上。當 Message Queue 用戶端執行階段設定與代理程式連線時,它會先聯絡連接埠對映器,以請求其所需的連線服務的連接埠號。

配置連線服務時,您可以為 jmsssljmsadminssladmin 連線服務指定靜態連接埠號,以覆寫連接埠對映器的設定。但是,靜態連接埠通常只用於特殊情況,例如透過防火牆連線 (請參閱 HTTP/HTTPS 支援),一般不建議使用。

執行緒儲存區管理程式

每種連線服務均為多重執行緒,支援多重連線。這些連線所需的執行緒,在執行緒儲存區管理程式元件所管理的執行緒儲存區中維護。您可以配置此執行緒儲存區管理程式,以設定此執行緒儲存區中所維護的執行緒的最小數目和最大數目。由於連線需要執行緒,因此可將執行緒新增至執行緒儲存區。當超過最小數目時,系統將關閉執行緒 (因為這些執行緒將成為自由執行緒,直至達到最小的臨界值),從而節省記憶體資源。執行緒儲存區中的執行緒可專屬於單一連線,或依需要指定給多重連線。

HTTP/HTTPS 支援

HTTP/HTTPS 支援可讓 Message Queue 用戶端使用 HTTP 協定與代理程式互動,而不需透過直接 TCP 連線。若用戶端必須與代理程式透過防火牆區隔,您可以使用 HTTP/HTTPS 服務,因為它允許透過防火牆進行通訊。


備註

HTTP/HTTPS 支援可用於 Java 用戶端,但不適用於 C 用戶端。


圖 4-3 顯示提供 HTTP/HTTPS 支援所需的主要元件。

圖 4-3 HTTP/HTTPS 支援架構

顯示 HTTP 代理和 HTTP 通道 Servlet 如何使訊息通過防火牆的圖表。圖以文字介紹。

圖 4-3 中顯示 HTTP 與 HTTPS 架構非常類似。主要區別在於,對於 HTTPS (httpsjms 連線服務),通道 Servlet 具有與用戶端和代理程式的安全連線。

Message Queue 的 HTTPS 通道 Servlet 會將自身簽名的憑證傳送至請求連線的任何代理程式。代理程式使用此憑證來設定與 HTTPS 通道 Servlet 的加密連線。一旦建立此連線,就可協商 Message Queue 用戶端與通道 Servlet 之間的安全連線。

使用「Message Queue 管理指南」中描述的特性,可配置 httpjmshttpsjms 服務。

訊息路由器

一旦使用支援的連線服務在用戶端和代理程式之間建立了連線,則可進行訊息路由與傳送。

Message Queue 訊息傳送以兩個階段的訊息傳送為前提:首先,從生產型用戶端到代理程式上的實體目標。接著,從代理程式上的目標到一或多個使用用戶端。訊息路由器會負責將到達的訊息存放在適當的目標,然後路由並傳送該訊息到適當的用戶。

本節說明不同的目標類型,個別且整體的管理這些目標的記憶體資源。您可以在第 3章「可靠訊息傳送」中找到路由與傳送訊息機制的說明。

實體目標

實體目標表示代理程式在實體記憶體中的位置,進來的訊息在路由至使用用戶端之前,會先被儲存。

根據建立方式與用途而定,目標分為數個種類:管理員建立的目標、自動建立的目標、暫存目標與停用的訊息佇列。

管理員建立的目標

管理員建立的目標是管理員使用 Message Queue 管理工具所建立的目標。這些目標對應到利用程式建立的邏輯目標,或對應到由目標管理的物件 (供用戶端查找)。

由於 Message Queue 訊息伺服器是訊息傳送系統中的中央集線器,因此其效能和可靠性對企業應用程式的成功相當重要。由於目標可使用大量資源 (取決於它們處理的訊息數目和容量,以及註冊的訊息用戶的數目和長期性),因此它們需要嚴密管理,以確保訊息伺服器的效能和可靠性。因此,管理員的標準慣例即為建立作為應用程式的目標、監視目標,以及必要時重新配置它們的資源需求。

自動建立的目標

自動建立的目標是由代理程式在需要時自動建立,而無需管理員的介入。要特別注意的是,當訊息用戶或訊息產生者嘗試存取不存在的目標時,會自動建立此類型的目標。這些目標用於需要動態建立目標的情況:一般是在開發與測試循環期間。您可以配置代理程式,以啟用或停用自動建立功能。

當自動建立目標時,可能導致不同的用戶端應用程式 (使用相同的目標名稱) 之間的衝突,或降低系統效能 (歸因於支援目標所需的資源)。由於此原因,當不再使用自動建立的目標時,此目標將被代理程式自動銷毀:即,當此目標不再有訊息用戶用戶端且不再包含任何訊息時。若代理程式重新啟動,則只有在它們包含永久性訊息時,才會重新建立自動建立的目標。

暫存目標

暫存目標由用戶端明確建立和銷毀 (使用 JMS API),這些應用程式需要目標以接收傳送至其他用戶端的訊息回覆。這些目標由代理程式維護,僅用於為建立目標所需連線的持續時間。只要暫存目標處於使用中,它無法由管理員銷毀,也無法由用戶端應用程式銷毀:即,如果它有使用中的訊息用戶。暫存目標不同於管理員建立的或自動建立的目標 (包含永久性訊息),它們無法永久儲存,且當重新啟動代理程式時從不重新建立。但是,它們對於 Message Queue 管理工具而言為可視。

停用的訊息佇列

停用的訊息佇列 是代理程式啟動時自動建立的專用目標,用於儲存作為診斷目的之停用訊息。停用的訊息是由於某種原因從系統移除,而非因為正常處理或明確管理動作而移除。可能成為停用訊息的原因有:到期、因為超過記憶體限制而從目標移除或嘗試傳送失敗。

有兩種方式可將訊息放置在停用的訊息佇列:

當訊息被放置到停用的訊息佇列時,會在該訊息中寫入額外的特性資訊,提供您訊息停用的相關資訊。

記憶體資源管理

訊息伺服器的資訊受到限制:記憶體、CPU 週期等。因此,視代理程式所支援之訊息傳送應用程式的使用式樣而定,當訊息伺服器無法回應或不穩定時,可能會造成過度負載。要特別注意的是,若針對目標產生訊息的速度快過於使用速度,就會發生問題。

訊息路由器有管理記憶體資源和預防代理程式耗盡記憶體的機制。它會使用三個記憶體保護級別,以在資源不足時維持系統作業:目標訊息限制、系統範圍限制和系統記憶體執行緒。

目標訊息限制

由於訊息可在目標保留較長一段時間,因此會出現記憶體資源問題。您不應為目標配置太多記憶體 (因為系統記憶體有限),也不應配置太少記憶體 (訊息可能被拒絕)。

考慮到基於每個目標載入需求的靈活性,您可設定特性以管理每個目標的記憶體資源與訊息流量。例如,您可以指定允許用於目標的產生者最大數目、目標中允許的最大訊息數量 (或大小),或每個單一訊息的最大大小。

您也可以指定當達到此類限制時,訊息路由器應採取下列四種回應中的哪一種回應。四個限制運作方式為:

系統範圍訊息限制

系統範圍訊息限制為第二道保護。您可以指定適用於代理程式上之所有目標的系統範圍限制:訊息總數目和所有訊息使用的記憶體。如果到達任何系統範圍訊息限制,訊息路由器會拒絕新的訊息。

系統記憶體執行緒

系統記憶體執行緒為第三道保護。您可以指定代理程式採取越來越重要的動作時可用的系統記憶體執行緒,以防止記憶體超過負載。此動作取決於記憶體資源的狀態:綠色 (大量記憶體可用)、黃色 (代理程式記憶體正在減少)、橙色 (代理程式記憶體不足) 以及紅色 (代理程式無記憶體)。在代理程式的記憶體狀態從綠色變為黃色和橙色,然後變為紅色的過程中,代理程式會採取越來越重要的動作,動作類型如下所示:

上述兩種方法皆會降低效能。

如果到達系統記憶體執行緒,那表示您尚未適當地按目標設定訊息限制和系統範圍訊息限制。在某些情況下,您無法及時為執行緒擷取潛在的記憶體負載。因此,您不應依賴此功能,而是應個別且整體地配置目標,以最佳化記憶體資源。

藉由謹慎監視與調校,基於目標的限制與運作方式可用來平衡流入和流出訊息,如此一來,將不會發生系統過度負載情況。這些機制會耗用時間並限制訊息流量,但他們會維護作業完整性。

持續性管理程式

如果要讓代理程式在發生失敗時回復,則此代理程式需要重新建立其訊息傳送作業的狀態。此操作要求它將所有永久性訊息以及重要的路由與傳送資訊儲存至資料儲存。若要回復,代理程式還必須可執行以下作業:

持續性管理程式管理所有此狀態資訊的儲存和擷取。

當重新啟動代理程式時,它會使用持續性管理程式所管理的資料來重新建立目標和長期訂閱、回復永久性訊息、回復開啟的作業事件,並為未傳送訊息重新建立其路由表格。然後,它可以繼續訊息傳送。

Message Queue 支援內建和外掛持續性模組 (請參閱圖 4-4)。內建持續性是基於檔案的資料儲存。外掛持續性使用 Java 資料庫連線 (JDBC™) 介面,並需要 JDBC 相容的資料儲存。內建持續性通常快於外掛持續性;但是某些使用者更喜歡使用 JDBC 相容資料庫系統所提供的的容錯和管理控制功能。

圖 4-4 持續性管理程式支援

圖表顯示持續性管理程式使用文字檔案儲存或 JDBC 相容的資料儲存。

內建持續性     預設 Message Queue 永久性儲存解決方案為基於檔案的資料儲存,基於檔案的資料儲存會使用個別檔案來儲存永久性資料。若要減少因新增和移除訊息而產生的分段程序,您可以壓縮基於檔案的資料儲存。若要最大化可靠性,您可以指定持續性作業同步化包含實體儲存裝置的內部記憶體狀態同步。這可以消除因系統當機而產生的資料遺失,但會降低效能。因為資料儲存可以包含敏感或專用性質的訊息,您應該保護資料儲存檔案的安全性,以防未經授權的存取。

外掛持續性     您可以設定代理程式,以透過 JDBC 驅動程式存取任何可存取的資料儲存。這包含設定一些與 JDBC 相關的代理程式配置特性,以及使用 Message Queue 的資料庫管理員公用程式來建立具有適當模式的資料儲存。「Message Queue 管理指南」中詳細介紹了這些程序和相關的配置特性。

安全性管理程式

Message Queue 提供認證與授權 (存取控制) 功能,還支援加密功能。

認證與授權功能因使用者儲存庫而異 (請參閱圖 4-5):包含有關訊息傳送系統使用者的資訊 (如使用者名稱、密碼和群組成員身份) 的檔案、目錄或資料庫。當請求與代理程式連線時,這些名稱和密碼用於認證使用者。使用者名稱和群組成員身份,連同存取控制檔案一起用於授權作業 (如針對目標生產或使用訊息)。

您可以寫入 Message Queue 提供的使用者儲存庫,或將預先存在的 LDAP 使用者儲存庫插入代理程式中。文字檔案使用者儲存庫非常易於使用;但是其安全性易受侵害,因此應僅將其用於評估與開發。LDAP 使用者儲存庫很安全,因此最適合用於生產。

以下小節說明認證、授權與加密。如需更多詳細資訊,請參閱「Message Queue 管理指南」。

認證

Message Queue 安全性支援基於密碼的認證。當用戶端請求連線至代理程式時,它必須提供使用者名稱和密碼。安全性管理程式將此用戶端提交的名稱和密碼與儲存在使用者儲存庫中的名稱和密碼進行比較。將此密碼從用戶端傳送至代理程式時,系統會使用基本 64 編碼或訊息摘要 (MD5) 對密碼進行編碼。如需更加安全的傳送,請參閱加密。您可以分別配置每種連線服務所使用的編碼類型,或在代理程式範圍基礎上設定編碼。

授權

一旦認證用戶端應用程式的使用者,此使用者便可被授權執行各種與 Message Queue 相關的作業。安全性管理程式支援基於使用者和基於群組的存取控制:根據使用者儲存庫中的使用者名稱或指定給此使用者的群組,此使用者可擁有執行某些 Message Queue 作業的許可權。您可以在存取控制特性檔案 (請參閱圖 4-5) 中指定存取控制。

圖 4-5 安全性管理程式支援

圖表顯示安全性管理程式使用使用者儲存庫和存取控制特性檔案。

當使用者嘗試執行作業時,安全性管理程式會檢查使用者名稱和群組成員身份 (在使用者儲存庫),是否與為存取此作業指定的那些名稱和成員身份 (在存取控制特性檔案中) 相符。存取控制特性檔案可指定以下作業的許可權:

您可以定義群組,並將使用者與使用者儲存庫中的那些群組相關聯 (儘管群組在文字檔案使用者儲存庫中不能完全得到支援)。然後,透過編輯存取控制特性檔案,您可以指定使用者或群組對目標的存取權,以用於生產、使用或瀏覽。您可以使個別目標或所有目標僅可由特定使用者或群組進行存取。

此外,如果代理程式已配置為允許自動建立目標 (請參閱自動建立的目標),則您可以透過編輯存取控制特性檔案來控制代理程式可為何人自動建立目標。

加密

若要加密在用戶端與代理程式之間傳送的訊息,您需要使用基於安全套接層 (SSL) 標準的連線服務。透過在已啟用 SSL 的代理程式與已啟用 SSL 的用戶端之間建立已加密連線,SSL 可提供連線級別的安全性。

監視服務

代理程式包括一些用於監視和診斷其作業的元件。這些元件如下:

圖 4-6 中說明了一般方案。

度量產生器

圖 4-6 顯示的度量產生器提供代理程式活動的相關資訊,例如流入和流出代理程式的訊息流量、代理程式記憶體中的訊息數目和使用的記憶體、開啟連線的數目,以及使用的執行緒數目。

您可以開啟或關閉度量資料的產生,並指定產生度量報告的頻率。

圖 4-6 監視服務支援

圖表顯示記錄程式的輸入、錯誤級別和輸出通道。圖以文字介紹。

記錄程式

圖 4-6 中顯示的 Message Queue 記錄程式會取得代理程式程式碼產生的資訊和度量產生器,並將資訊寫入一些輸出通道:標準輸出 (主控台)、記錄檔及 Solaris™ 平台上的 syslog 常駐程式。

您可以指定記錄程式收集的資訊類型,以及寫入每個輸出通道的類型。在記錄檔中,您還可以指定何時關閉記錄檔並將輸出自動重建至新檔案。一旦記錄檔達到指定容量或存在時間,系統將儲存此記錄檔並建立新的記錄檔。

如需配置記錄程式以及如何使用它來取得效能資訊的詳細資訊,請參閱「Message Queue 管理指南」。

度量訊息產生者 (企業版)

圖 4-6 中顯示的度量訊息產生者元件會在固定時間間隔,從度量產生器元件收到資訊,並將資訊寫入訊息,接著根據訊息中包含的度量資訊類型,將訊息傳送到一些度量主題目標。

指定至這些度量主題目標的 Message Queue 用戶端,可使用目標中的訊息並處理訊息中包含的度量資訊。這允許開發者建立自訂監視工具以支援訊息傳送應用程式。如需每個度量訊息類型中報告的度量數目詳細資訊,請參閱「Message Queue Developer'sGuide for Java Clients」,以瞭解如何開發使用度量訊息的 Message Queue 用戶端。如需配置度量訊息產生的詳細資訊,請參閱「Message Queue 管理指南」。


開發與生產環境

開發與測試訊息傳送應用程式時,以及在生產環境部署與管理那些應用程式時,都需要 Message Queue 服務所提供的訊息傳送基礎結構。

本節介紹在開發與生產環境使用 Message Queue 的不同方法。它涵蓋下列主題:

雖然管理員需負責設定與管理生產環境和工作,但開發者也必須瞭解此環境,才能提供管理員設定與配置此環境以及判斷用戶端是否如預期般運作的相關資訊。

開發環境與工作

在開發環境中,工作重點為 Message Queue 用戶端應用程式的程式設計。Message Queue 服務主要用於測試。

出廠即可使用的配置

Message Queue 產品的設計是出廠即可使用。您可以使用預設值來啟動代理程式,它會提供您預設的資料儲存、使用者儲存庫,以及存取控制特性檔案。

預設的使用者儲存庫是使用預設項目所建立,它允許在安裝後立即使用 Message Queue 代理程式,無需管理員介入。換言之,要使用的代理程式無需初始使用者/密碼設定。預設使用者名稱 (guest) 與密碼 (guest) 可用於認證用戶端使用者。

此外,也提供一些範例應用程式,可引導您開發新應用程式。

開發慣例

在開發環境中強調靈活性,且通常您會採取以下作業:

生產環境與工作

在生產環境中,必須部署、管理與調校應用程式,以最大化效能。在此狀況下,管理與調校訊息傳送基礎結構非常重要,雖不能稱為必要,但卻是基本需求。

此外,部署必須支援企業需求,不論是在擴充性或可用性方面。這需要針對訊息服務進行自訂配置與設定、調校效能與系統以符合日益增加的負載,以及針對訊息服務與應用程式特定資源執行每日監視與管理作業。因此,管理工作取決於訊息傳送系統的複雜性及其必須支援的應用程式的複雜性。下列各節將管理工作分成設定作業與維護作業來說明。如需執行這些工作所需的程序,請參閱「Message Queue 管理指南」。

設定作業

生產環境需要設定安全存取、配置連線工廠與目標物件、設定叢集、配置永久性儲存,以及管理記憶體。


踊t若要設定生產環境

通常,您必須至少執行以下設定作業中的一些作業 (如果不是全部):

維護作業

在生產環境中,需要監視和控制 Message Queue 訊息伺服器資源。應用程式效能、可靠性以及安全性是必需的,您必須使用 Message Queue 管理工具執行一些不間斷的工作,如下所述:


踊t維護生產環境



上一頁      目錄      索引      下一頁     


文件號碼 819-2224。   Copyright 2005 Sun Microsystems, Inc. 版權所有。