叢集

功能 > 叢集

叢集是一個很大的主題,對不同的人來說通常意味著不同的事情。 我們將嘗試列出叢集的各個方面以及它們與 ActiveMQ Classic 的關係

佇列消費者叢集

ActiveMQ Classic 支援跨消費者的佇列訊息可靠、高效能的負載平衡。 在企業整合中,此情境稱為競爭消費者模式。 下圖說明了這個概念

此解決方案接收生產者傳送的訊息,將其放入佇列,並將其分配給所有已註冊的消費者。 這有許多好處

  • 負載以非常動態的方式分配。 可以在高負載期間佈建額外的消費者並將其連接到佇列,而無需修改佇列中的任何配置,因為新消費者將僅作為另一個競爭消費者。
  • 比使用負載平衡器的系統更好的可用性。 負載平衡器通常依賴監控系統來找出哪些實際伺服器不可用。 使用競爭消費者,即使沒有監控,失敗的消費者也不會競爭訊息,因此訊息不會傳遞給它。
  • 高可靠性,如果消費者失敗,任何未確認的訊息都會重新傳遞給佇列中的其他消費者。

缺點是,在需要訂單處理的系統中,此模式可能不是理想的。 為了在維持優勢的同時減輕這個問題,競爭消費者模式應與其他 ActiveMQ Classic 功能(例如獨佔消費者訊息群組)結合使用,如ActiveMQ Classic 的常見問題中所述。

代理人叢集

JMS 環境中叢集最常見的心智模型是存在一組 JMS 代理人,JMS 用戶端將連接到其中一個;然後如果 JMS 代理人關閉,它將自動重新連接到另一個代理人。

我們在 JMS 用戶端中使用 failover:// 通訊協定來實作此功能。 請參閱容錯移轉傳輸參考頁面,了解如何設定容錯移轉通訊協定的詳細資訊。 注意:ActiveMQ Classic 3.x 中的 reliable:// 通訊協定現在已變更為 failover:// 通訊協定

如果我們僅在網路上執行多個代理人,並使用靜態探索動態探索告知用戶端,則用戶端可以輕鬆地從一個代理人容錯移轉到另一個代理人。 但是,獨立的代理人不知道其他代理人上的消費者;因此,如果某個代理人上沒有消費者,則訊息可能會堆積而未被消耗。 我們有一個未解決的功能請求,以在用戶端解決此問題 - 但目前解決此問題的方案是建立代理人網路,以在代理人之間儲存和轉發訊息。

代理人探索

我們支援使用靜態探索動態探索的代理人自動探索,因此用戶端可以自動偵測並連接到邏輯代理人群組中的代理人,代理人也可以探索並連接到其他代理人以形成大型網路。

代理人網路

如果您使用用戶端/伺服器或中心/輻射式拓撲,並且您有許多用戶端和許多代理人,則有可能一個代理人有生產者但沒有消費者,因此訊息會堆積而未處理。 為了避免這種情況,ActiveMQ Classic 支援代理人網路,該網路提供儲存和轉發功能,以將訊息從具有生產者的代理人移動到具有消費者的代理人,這使我們能夠支援跨代理人網路的分散式佇列和主題

這允許用戶端連線到任何代理人 - 並且在發生故障時容錯移轉到另一個代理人 - 從用戶端的角度來看,提供了一個代理人叢集。

代理人網路還允許我們在網路中擴展到大量的用戶端,因為我們可以根據需要執行任意數量的代理人。

您可以將其視為一個連接到具有自動容錯移轉和探索功能的代理人叢集的用戶端叢集,從而形成一個簡單易用的訊息傳遞結構。

主從

在網路中執行許多獨立代理人或代理人的問題是,訊息在任何時間點都由單個實體代理人擁有。 如果該代理人關閉,則必須等待其重新啟動才能傳遞訊息。(如果您使用的是非持久訊息傳遞,並且代理人關閉,則通常會遺失訊息)。

主從背後的想法是將訊息複製到從屬代理人,以便即使您的主機器的硬體、檔案系統或資料中心發生災難性故障,您也可以立即容錯移轉到從屬代理人而不會遺失訊息。

複製訊息儲存

主從的替代方案是尋找某種方法來複製訊息儲存;因此,以某種方式共用磁碟檔案。 例如,使用 SAN 或共用網路磁碟機,您可以共用代理人的檔案,以便如果它發生故障,另一個代理人可以立即接管。

因此,透過支援複製訊息儲存,您可以降低訊息遺失的風險,以提供 HA 備份或能夠在資料中心故障中倖存下來的完整DR 解決方案。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。 版權所有 © 2024,Apache 軟體基金會。 根據Apache 授權 2.0授權。