共計 2288 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要講解了“數據庫服務 activemq 在災備雙活建設中有什么作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“數據庫服務 activemq 在災備雙活建設中有什么作用”吧!
概述
activemq 是業界非常流行的、功能強大的、開源消息中間件。以快速、支持多種跨語言客戶端和協議著稱;完全支持 JMS 1.1 and J2EE 1.4。在各個行業中有大量的應用案例。
由于 activemq 承擔著消息服務的重要角色,在這篇文章中我們重點講述在災備雙活建設中 activemq 設計、規劃、部署。
目標
災備雙活建設最完美的架構設計:在同城、異地 2 個數據中心,在最極端情況下,例如單數據中心垮掉情況下,保證消息零丟失,支持 7 *24 服務要求。
需求描述
1.1 機房故障
1) 現象描述
消息隊列中間件部署在 A、B 兩個不同的機房中,客戶端根據負載的策略轉發到對應機房的消息中間件,其中 A 或者 B 機房因為斷電或者災難等因素出現故障,無法繼續提供服務。此時僅有一個機房正常。
2) 現象圖示
3) 服務影響
正常情況下,對于客戶端的連接平均分布在兩個機房中,出現單個機房故障后,連接在故障機房中的連接會斷開,正在執行未提交的事務將會回滾,對于發起的新連接不受任何影響,依然可以通過配置的負載策略訪問正常機房中的消息中間件服務。
4) 故障恢復
當機房恢復正常后,啟動消息中間件服務,此時,只要主機、網絡恢復正常,消息中間件服務就可以啟動成功。這時,AB 機房按照負載策略繼續處理連接,最終使得每個機房的中間件連接數無限接近。
1.2 服務器 DOWN
1) 現象描述
在運行的消息中間件集群架構中,存在 N 個主機,其中任意 N - 2 個主機 DOWN 機,不具備服務提供能力,僅剩余大于 1 個主機存活可以提供服務的場景。
2) 現象圖示
3) 服務影響
主機 DOWN 掉后,已經連接在該主機消息中間件上的連接會斷開,對應的事務會回滾,新的連接不受到影響。
4) 故障恢復
當主機故障處理后,啟動故障主機, 并啟動消息中間件服務。根據負載均衡算法,客戶端連接會重新分配到該主機上的節點。
1.3 消息中間件節點崩潰
1) 現象描述
在運行的消息中間件集群架構中,存在 N 個節點,其中任意 N - 2 個節點崩潰,不具備服務提供能力,僅剩余大于 1 個節點存活可以提供服務的場景。
2) 現象圖示
3) 服務影響
當消息中間件節點崩潰后,已經連接在該主機消息中間件上的連接會斷開,對應的事務會回滾,新的連接不受到影響。
4) 故障恢復
當消息隊列節點故障處理后,啟動消息中間件服務。根據負載均衡算法,客戶端連接會重新分配到該節點。
架構設計
1.1 架構設計要點
●、采用 activemq 的何種架構來實現上述需求?
采用主從 +Broker-Cluster 方式來實現,主從架構實現了 HA(高可用)功能,借用 zookeeper 的選舉投票功能,保證“過半即可用”,所以推薦的 HA 架構的節點數為單數,至少 3 個節點,任何時候垮掉一個節點都不影響正常使用。
同時結合 Broker-Cluster,Broker-Cluster 的部署方式可以解決負載均衡和分布式問題,因為單一主從方式無法解決負載均衡的問題。
●、如何保證未消費消息在各個節點間的同步?
采用 leveldb(LevelDB 是 Google 開源的持久化 KV 單機數據庫,具有很高的隨機寫,順序讀 / 寫性能)實現各個節點間的同步寫,保證數據在同一個 Broker-Cluster 組下復制,以 3 個節點為例,同一條堆積消息,在 3 個節點保持同步,在最極端情況下,即使 2 個節點的數據文件丟失,也能防止數據丟失。
●、如何保證在災難情況下,消息服務仍然可以正常提供服務?例如考慮最極端情況下,單邊數據中心宕機?
采用 2 套主從、2 套 Broker-Cluster,并且保證 2 個數據中心各包含一套主從的 2 個節點,如下圖所示,cluster1 的 2 個節點在 B 中心,cluster2 的 2 個節點在 A 中心,即使 A、B 整個數據中心發生災難,都不影響 jms 服務正常運行。
●、保證在各種災難場景都實現了 7 *24 和消息零丟失嗎?
是的,只要保證一個 cluster 下的 2 個節點可用的情況下,不管在任何一種組合下,jms 服務都是可用的。
●、客戶端如何來調用集群的 jms 地址
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
failover:(tcp://192.168.40.140:61616,tcp://192.168.40.140:61617,tcp://192.168.40.141:61619,tcp://192.168.40.141:61620,tcp://192.168.40.141:61621,tcp://192.168.40.140:61618)
如上例子,activemq 根據隨機策略,調用任一可用的節點
1.2 架構圖示
●、架構示例圖如下:
◆、哪一個節點是 master,沒有要求,那個先啟動那個就可能成為 master。
◆、master 節點是當前提供服務的節點。
感謝各位的閱讀,以上就是“數據庫服務 activemq 在災備雙活建設中有什么作用”的內容了,經過本文的學習后,相信大家對數據庫服務 activemq 在災備雙活建設中有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!