![]() | |
Sun Java System Message Queue 3 2005Q4 技術摘要 |
第 3 章
Message Queue 服務Message Queue 用戶端效能取決於用戶端的設計以及您配置和管理 Message Queue 服務的方式。本章將更詳細地說明第一章中介紹的 Message Queue 服務,檢查服務的元件,介紹用以配置這些元件的工具,並總結在不同環境中管理訊息服務所需的工作。本章涵蓋以下小節:
元件服務圖 3-1 顯示了 Message Queue 服務。第 2 章會描述程式設計模型,以及用戶端如何使用 Java 和 C API 與用戶端執行階段 (存取用戶端應用程式的一部份訊息服務) 互動。本章側重介紹存取管理員的訊息服務之元件及服務。
圖 3-1 Message Queue 服務
您可以透過設定代理程式特性來控制 Message Queue 服務。這些特性根據某個特性所影響的服務或代理程式元件,劃分為多個種類。代理程式服務包括:
以下各節說明每項服務,並總結針對特殊需求用以自訂服務的特性。
代理程式特性可在不同的配置檔案中定義,也可在用於啟動代理程式的指令行上定義。「Message Queue 管理指南」會說明這些配置檔案以及優先順序,根據此順序,一個檔案的特性值可用於置換其他檔案設定的值。使用啟動指令設定的特性可置換所有其他設定。
連線服務
您可以使用連線相關的特性,配置和管理代理程式及其用戶端之間的實體連線。Message Queue 用戶端可用的連線服務在連線至代理程式中有介紹,其中描述的可用連線服務如下:服務的名稱、類型和基礎協定。連線服務為多重執行緒,並透過專屬連接埠使用,此專屬連接埠可由代理程式的連接埠對映器動態指定,或由管理員靜態指定。依預設,啟動代理程式時,jms 和 admin 服務會啟動並執行。
由於每個連線均涉及兩方,兩端都會發生連線配置,因此需要協調:
用戶端可以透過防火牆連線到 Message Queue 服務。若要這麼做,可以請防火牆管理員開啟特定的連接埠,然後連線到該 (靜態) 連接埠;或者使用 HTTP 連線中總結的 HTTP 或 HTTPS 服務。
每個連線服務也支援特定認證與授權功能。請參閱安全性服務,以獲得更多資訊。
連接埠對映器
常駐在代理程式主連接埠 7676 的共用連接埠對映器會為連線服務動態指定連接埠。當 Message Queue 用戶端執行階段設定與代理程式的連線時,它會首先連絡連接埠對映器,為選擇的連線服務請求連接埠號碼。
配置連線服務時,可以透過為 jms、ssljms、admin 與 ssladmin 連線服務指定靜態連接埠號碼,覆寫連接埠對映器。但是,靜態連接埠通常僅在特殊情況下使用,例如透過防火牆連線,一般不建議使用。
執行緒池管理
每種連線服務均為多重執行緒,支援多重連線。這些連線所需的執行緒由代理程式在執行緒池中維護。其配置方式則取決於您為最小執行緒與最大執行緒所指定的值,以及您所選擇的執行緒模型。
您可以設定代理程式特性,指定執行緒的最小數值和最大數值。當連線需要執行緒時,就會為支援該連線的服務新增執行緒到執行緒池數。最小值會指定可配置的執行緒數。當可用執行緒超過此最小臨界值時,系統將會關閉執行緒,這樣這些執行緒在再次達到最小值之前會變為可用的,從而可以節省記憶體資源。在負載量較大的情況下,執行緒的數目會增加,直至達到執行緒池的最大數目為止;此時會拒絕新的連線,直至有執行緒變為可用為止。
您選擇的執行緒模型會指定執行緒是專屬於單一連線,還是由多重連線共用:
目標與路由服務
用戶端連線到代理程式後,便能進行路由與傳送訊息。在此階段中,代理程式會負責建立與管理不同類型的實體目標,確保訊息流量順暢,以及有效使用資源。代理程式使用與路由和目標相關的代理程式特性,以符合您應用程式所需的方式來管理這些工作。
之前已介紹過代理程式上實體目標的概念,這是一個訊息傳送到訊息用戶之前儲存訊息的記憶體位置。實體目標有四種:
管理目標
您可以使用 imqcmd 公用程式管理目標。管理目標包括下列一項或多項工作:
管理工作會隨正在管理的目標類型而有所變更:管理員建立的目標、自動建立的目標、暫存目標或停用的訊息佇列。例如,暫存目標不需要明確銷毀,自動建立的特性會經由代理程式配置特性配置,並套用到該代理程式上所有自動建立的目標。
配置實體目標
為了最佳化效能,您可以在建立或更新實體目標時設定特性。可以設定的特性包括下列項目:
您也可以針對佇列目標配置備份用戶的最大數目,並且可以指定 (針對叢集代理程式) 是否要傳送到本機佇列。
您也可以配置停用訊息佇列的限制和運作方式。不過請注意,此佇列的預設特性和標準佇列的預設特性不同。
管理記憶體
目標可使用大量資源 (取決於它們處理的訊息數目和大小,以及註冊的用戶數目和期限),因此必須密切管理這些資源,以確保良好的訊息傳送服務效能與可靠性。
您可以設定特性以避免代理程式有過多的內送訊息,進而避免代理程式記憶體不足。代理程式使用三層記憶體保護,以在資源不足時維持訊息傳送服務作業:目標限制、系統範圍限制和系統記憶體臨界值。理想情況下,如果目標限制和系統範圍限制設定適當,則應絕對不會到達嚴重的系統記憶體臨界值。
目標訊息限制
您可以設定目標屬性,以管理每個目標的記憶體和訊息流量。例如,您可以指定允許用於目標的產生者最大數目、目標中允許的最大訊息數量 (或大小),或每個單一訊息的最大大小。
您也可以指定到達這類限制時,代理程式應採取的反應措施:減緩產生者、捨棄最舊的訊息、捨棄最不重要的訊息,或拒絕最新的訊息。
系統範圍訊息限制
您也可以使用特性設定套用到代理程式上所有目標的限制:可以指定訊息總數和所有訊息使用的記憶體。如果到達任何系統範圍訊息限制,代理程式會拒絕新的訊息。
系統記憶體執行緒
最後,可以使用特性來設定臨界值,代理程式在到達此臨界值時,會不斷採取重要動作以防止記憶體超過負載。此動作取決於記憶體資源的狀態:green (大量記憶體可用)、yellow (代理程式記憶體正在減少)、orange (代理程式記憶體不足) 以及 red (代理程式無記憶體)。如果代理程式記憶體的狀態從 green 變為 red,代理程式會不斷採取重要動作:
永久性服務
如果要在代理程式失敗時回復,則此代理程式需要重新建立其訊息傳送作業的狀態。若要執行此操作,就必須將狀態資訊儲存到資料存放區。重新啟動代理程式時,它會使用儲存的資料來重新建立目標和長期訂閱,回復永久性訊息,回復開啟的作業事件,並為未傳送的訊息重新建立路由表格。然後,它可以恢復訊息傳送。
Message Queue 服務支援檔案型和 JDBC 相容的永久性模組 (請參閱圖 3-2),且預設使用檔案型永久性模組。
圖 3-2 永久性支援
檔案型永久性
檔案型永久性是使用個別檔案儲存永久性資料的機制。如果您使用檔案型永久性,您可以設定代理程式特性執行下列作業:
檔案型永久性通常快於 JDBC 型永久性;但是某些使用者更喜歡使用 JDBC 相容存放區所提供的備援和管理控制功能。
JDBC 型永久性
JDBC 型永久性使用 Java 資料庫連接 (JDBC 介面,將代理程式連接到 JDBC 相容的資料存放區。若要讓代理程式透過 JDBC 驅動程式存取資料存放區,您必須執行下列作業:
「Message Queue 管理指南」中詳細介紹了完成這些工作和相關配置特性的完整程序。
安全性服務
Message Queue 服務支援每個代理程式實例的認證和授權 (存取控制),也支援加密:
認證和授權取決於包含有關訊息傳送系統使用者的資訊 (如使用者名稱、密碼和群組成員身份) 的儲存庫。此外,若要授權特定作業給使用者或群組,則代理程式必須檢查指定使用者或群組可執行作業的存取控制特性檔案。您負責設定代理程式需要認證使用者和授權使用者動作的資訊。
圖 3-3 顯示代理程式所需的元件,以提供認證和授權。
圖 3-3 安全性管理員支援
如圖 3-3 所示,您可以在 Message Queue 服務隨附的平面檔案使用者儲存庫中儲存使用者資料,或者您可以外掛於預先存在的 LDAP 儲存庫中。您可以設定代理程式特性來表示您的選擇。
認證和授權
當用戶端請求連線時,用戶端必須提供使用者名稱和密碼。代理程式會對指定名稱和密碼與儲存在使用者儲存庫中的名稱和密碼進行比較。將此密碼從用戶端傳送至代理程式時,系統會使用基本 64 編碼或訊息摘要 (MD5) 雜湊法對密碼進行編碼。MD5 用於平面檔案儲存庫,LDAP 儲存庫則需要基本 64。如果使用 LDAP,可能會想使用安全 TLS 協定。您可以設定代理程式特性以分別配置每種連線服務所使用的編碼類型,或在代理程式範圍基礎上設定編碼。
當使用者嘗試執行作業時,代理程式會檢查使用者名稱和群組成員身份 (從使用者儲存庫),是否與為存取此作業所指定的那些名稱和成員身份 (在存取控制特性檔案中) 相符。存取控制特性檔案可指定以下作業的許可權給使用者或群組:
設定代理程式特性以指定下列資訊:
加密
若要加密在用戶端與代理程式之間傳送的訊息,您需要使用基於安全套接層 (SSL) 標準的連線服務。透過在已啟用 SSL 的代理程式與已啟用 SSL 的用戶端之間建立已加密連接,SSL 可提供連接級別的安全性。
您可以設定代理程式特性,以指定要使用的 SSL 密鑰存放區之安全性特性,以及密碼檔案的名稱和位置。
監視服務
代理程式包含可監視和診斷應用程式和代理程式效能的元件。這些元件包括:
圖 3-4 中說明了一般方案。
圖 3-4 監視服務支援
度量產生器
度量產生器提供代理程式活動的相關資訊,例如流入和流出代理程式的訊息流量、代理程式記憶體中的訊息數目和使用的記憶體、開啟連線的數目,以及使用的執行緒數目。
您可以設定代理程式特性,以開啟或關閉度量資料的產生,並指定產生度量報告的頻率。
記錄程式
Message Queue 記錄程式會記錄代理程式碼和度量產生器產生的資訊,再將該資訊寫入標準輸出 (主控台)、日誌檔,在 Solaris 平台上如果發生錯誤時,會寫入 syslog 常駐程式程序。
您可以設定代理程式特性以指定記錄程式收集的資訊類型,以及寫入每個輸出通道的類型。在日誌檔中,您還可以指定關閉日誌檔的位置以及將輸出自動重建至新檔案的位置。一旦日誌檔達到指定容量或存在時間,系統將儲存此日誌檔並建立新的日誌檔。
如需配置記錄程式以及如何使用它來取得效能資訊的詳細資訊,請參閱「Message Queue 管理指南」。
度量訊息產生者 (企業版)
圖 3-4 中顯示的度量訊息產生者會在固定時間間隔,從度量產生器收到資訊,並將資訊寫入訊息,接著根據訊息中包含的度量資訊類型,將訊息傳送到一些度量主題目標之一。
訂閱至這些度量主題目標的 Message Queue 用戶端,可使用目標中的訊息,並處理訊息中所包含的度量資料。這允許開發者建立自訂監視工具以支援訊息傳送應用程式。如需每個度量訊息類型中所報告之度量數目的詳細資訊,請參閱「Message Queue Developer's Guide for Java Clients」。如需配置度量訊息產生的詳細資訊,請參閱「Message Queue 管理指南」。
管理工具和工作本節描述用於配置 Message Queue 服務的工具,以及完成支援開發或生產環境所需的工作。
管理工具
圖 3-5 顯示除用戶端連線以外的訊息服務檢視,並著重在代理程式元件和用以管理這些元件的工具。
圖 3-5 管理工具
您可以使用下列指令行工具,配置及管理 Message Queue 服務。
- 使用 imqbrokerd 公用程式啟動代理程式。您可以使用 imqbrokerd 指令的選項,指定是否應在叢集中連線代理程式,並指定其他啟動配置資訊。
- 啟動代理程式後,請使用 imqcmd 公用程式建立、更新和刪除實體目標,控制代理程式及其連線服務,以及管理代理程式的資源。
- 使用 imqobjmgr 公用程式,新增、列示、更新及刪除 JNDI 物件存放區中管理的物件。
- 使用 imqusermgr 公用程式寫入檔案型使用者儲存庫,以進行使用者認證和授權。
- 使用 imqdbmgr 公用程式建立和管理用於永久性儲存的 JDBC 相容資料庫。(內建檔案存放區不需要外部管理。)
- 使用 imqkeytool 公用程式,產生用於 SSL 認證的自身簽名憑證。
- 使用 imqsvcadmin 公用程式安裝、查詢和移除作為 Windows 服務的代理程式。
GUI 型管理主控台結合了 imqcmd 和 imqobjmgr 公用程式的部份功能。您可以用於執行下列作業:
支援開發環境
開發用戶端元件時,最好保持管理工作量為最低。Message Queue 產品是專為協助您執行此作業設計的,拿出包裝盒即可使用。只需啟動代理程式即可。下列作業會讓您專注在開發工作上:
支援生產環境
在生產環境中,訊息服務管理在應用程式效能和滿足企業可延伸性、可用性和安全性需求上,發揮關鍵作用。在此環境中,管理員還要執行多項工作。這些工作大致上可分為設定與維護作業。
設定作業
一般必須執行下列設定作業:
維護作業
若要監視和控制代理程式資源,以及調校應用程式效能,必須在部署應用程式之後,執行下列作業:
調整 Message Queue 服務Message Queue 服務可以經由連線多個代理程式並允許其共用資訊,來進行水平調整。這可讓任一代理程式存取遠端目標,並為大量用戶端提供服務。請參閱第 4 章「代理程式叢集」,以取得其他資訊。