複寫訊息儲存
如果訊息儲存在代理程式的硬碟上或單一資料庫中,那麼在訊息持久性方面,您會有單點故障的問題。如果遺失了整台機器、磁碟或資料庫,您就會遺失訊息。
對於某些高端使用者來說,訊息絕不應該遺失,因為它們可能會對業務產生重大影響。這類使用者通常需要某種災難復原 (DR)策略來支援訊息複寫,以便他們可以遺失整個資料中心而仍然不會遺失訊息。
有各種解決方案可以減少訊息遺失的機率。
使用 RAID 磁碟
如果您使用足夠條紋化的 RAID 磁碟,您只需重新啟動機器 - 或將磁碟移動到新機器並重新啟動代理程式即可。如果您是小型企業,這可能就足夠了,但如果您有嚴格的災難復原 (DR)要求,那麼如果您遺失了資料中心,RAID 選項就不是解決方案。
SAN 或共用網路磁碟機
如果您使用基於檔案的持久性機制之一,例如預設的高效能日誌和 Apache Derby,您可以寫入 SAN 或共用網路磁碟機,並且在發生故障時,使用故障代理程式中的檔案啟動新的代理程式。
此外,4.1 版允許您啟動多個從同一個共用檔案系統讀取的代理程式,以透過共用檔案系統主從功能支援高可用性。
主/從
另一種方法是使用主從功能將代理程式配對在一起,以便所有訊息都複寫到主代理程式和從代理程式,以確保訊息有兩個實體副本,以便可以處理災難性的硬體故障(例如遺失整個資料中心)。
叢集 JDBC 資料庫
各種資料庫(如 Oracle 和 MySQL)都支援叢集資料庫;因此,我們可以將這些資料庫與 JDBC MessageStore 一起使用,以獲得叢集訊息儲存。請注意,如果使用此選項,則必須停用高效能日誌(這會嚴重影響效能)。
使用 C-JDBC
如果您沒有或無法負擔叢集資料庫,則可以使用 C-JDBC 在多個實體資料庫之間複寫狀態,以避免單點故障並提供災難復原 (DR)解決方案。如上所述,使用複寫的 JDBC 方法非常慢,因為它要求我們停用高效能日誌。