![]() | |
Sun Java System Message Queue 3 2005Q4 技術摘要 |
第 4 章
代理程式叢集Message Queue 企業版支援代理程式叢集的使用:代理程式群組協作工作,提供向用戶端傳送訊息服務。叢集可使管理員透過分散數個代理程式間的用戶端連線,根據訊息流量來調整訊息傳送作業。
本章說明代理程式叢集的架構和內部功能。涵蓋下列主題:
請注意,代理程式叢集提供服務可用性,但不提供資料可用性。如果叢集中的代理程式失敗,連線至該代理程式的用戶端可以重新連線到叢集中的其他代理程式,但是在重新連線到替代代理程式時,部分資料可能會遺失。
叢集架構圖 4-1 顯示代理程式叢集的 Message Queue 架構。叢集中的每個代理程式會直接連線到其他所有代理程式。每個用戶端 (訊息產生者或用戶) 都擁有單獨的主代理程式,藉以直接通訊,進行發送和接收訊息,就好像此主代理程式為叢集中唯一的代理程式一樣。事實上,主代理程式與其他代理程式一起合作,為所有連線的用戶端提供傳送服務。
在叢集中,服務可用性取決於代理程式是否能夠共用目標與長期用戶的資訊。如果叢集代理程式失敗,此狀態資訊有可能會不同步。為防止出現這種可能情況,可以將叢集內的某個代理程式指定為主代理程式。主代理程式會維護配置變更記錄,以追蹤對叢集的永久性實體 (目標與長期訂閱) 所作的變更。此記錄可用以傳遞此類變更資訊至變更發生時離線的代理程式。
圖 4-1 叢集架構
下列各節說明即使一或多個代理程式處於離線的狀態,如何在叢集中執行訊息傳送以及如何配置和同步代理程式。
訊息傳送在叢集配置中,代理程式會共用目標與訊息用戶的資訊:每個代理程式均瞭解下列資訊:
這可讓每個代理程式從其本身直接連線的訊息產生者,路由訊息到遠端訊息用戶。產生者的主代理程式與用戶的主代理程式有不同的職責:
叢集代理程式會一起運作,以將叢集內的訊息流量降到最低;例如,如果遠端代理程式針對相同的主題目標有兩個相同的訂閱,則訊息只會經由線路傳送一次。您可以設定目標特性,指定傳送至本機用戶優先於傳送至遠端用戶,以進一步減少流量。
如果用戶端與代理程式之間需要安全且加密的訊息傳送,可以配置叢集以提供代理程式之間安全的訊息傳送。
目標屬性
針對叢集代理程式上實體目標所設定的屬性,可以套用到叢集中該目標的所有實例;但是這些屬性指定的部分限制會整個套用到叢集,而其他限制則會套用到個別目標實例。表 4-1 列出您可以為實體目標設定的屬性,並指定屬性的範圍。
叢集和目標
不管目標是由管理員建立的、自動建立的還是暫時的,都會影響目標在叢集中傳遞的方式,以及在連線時或代理程式失敗時處理目標的方式。
圖 4-2 顯示四種叢集代理程式。顯示了代理程式之間的直接 (私人) 連線,以及用戶端與其所連代理程式之間的連線。圖中描述多種可能性,並在隨後小節中進行說明。
圖 4-2 叢集範例
使用回覆發送模型產生至佇列
如前圖所示:
產生至自動建立的目標
如前圖所示:
發佈至主題目標
如前圖所示:
在連線或代理程式失敗時處理目標
表 4-2 說明不同類型的目標如何在叢集中進行複製與刪除。
叢集配置若要在啟動時在叢集中的代理程式之間建立連線,每個代理程式都必須傳送所有其他代理程式的主機名稱與連接埠號碼 (包括主代理程式,如果有)。此資訊由一組叢集配置特性指定,而叢集中所有代理程式的這些設定都應該相同。雖然可以為每個代理程式個別指定配置特性,但這種方法易產生錯誤並容易導致叢集配置的不一致性。相反,建議您將叢集配置特性置於一個在啟動時每個代理程式均參照的中央叢集配置檔案。這樣可確保所有代理程式共用相同的配置資訊。
請參閱「Message Queue 管理指南」以獲得叢集配置特性的詳細資訊。
叢集同步化無論叢集的配置何時變更,關於變更的資訊即會自動傳遞至叢集中的所有代理程式。發生下列情況之一時,叢集配置會有所變更:
這類變更資訊將立即傳遞至發生變更時叢集內所有線上的代理程式。但是,離線的代理程式 (例如,已損毀的代理程式) 在變更發生時將不會收到變更通知。考量到離線的代理程式,Message Queue 為叢集維護一個配置變更記錄,記錄所有已建立或銷毀的永久性實體 (目標與長期訂閱)。當離線的代理程式重新連線時 (或當新的代理程式加入叢集中時),代理程式會參考此記錄以取得關於目標與長期訂閱者的資訊,然後與其他代理程式交換目前使用中的訊息用戶之相關資訊。
叢集中的一個代理程式會指定為主代理程式,負責維護配置變更記錄。因為其他代理程式無法在沒有主代理程式的情況下完成初始化,所以主代理程式務必是叢集中首先啟動的代理程式。如果主代理程式離線,則配置資訊將無法在叢集中傳遞,因為其他代理程式無法存取配置變更記錄。在這些情況下,如果您嘗試建立、重新配置或銷毀目標或長期訂閱,或嘗試執行如重新啟動長期訂閱等相關作業,則會出現異常。(但非管理訊息的傳送則會繼續正常工作。) 使用主代理程式和配置變更記錄是選擇性的。如果您擔心叢集配置變更或代理程式失敗之後叢集無法同步,才會需要主代理程式和配置變更記錄。