RabbitMQ新的持久的、可複製的分散式事務一致的仲裁佇列 – Richard Seroter
分散式系統中的狀態複製協調非常困難。在一系列聯網過程中如何共享狀態資料資訊並彼此保持同步?最近,RabbitMQ團隊釋出了一種新型的佇列,該佇列使用Raft Consensus演算法在叢集中提供了持久的,先進先出的排隊體驗。這非常適合您無法承受資料丟失並且還希望叢集環境提供高可用性的方案。由於RabbitMQ廣受歡迎並在各地使用,因此我認為深入研究仲裁佇列很有趣,並提供一個示例,您可以沿用。
仲裁佇列是在2019年秋季釋出的RabbitMQ 3.8大版本的一部分,是映象佇列的後繼者,並以多種方式對其進行了改進。預設情況下,佇列位於群集中的單個節點上。顯然,位於單個節點上的裝置可能會出現當機風險!因此,我們通過建立叢集來減輕這種風險。映象佇列具有一個主節點,並且跨叢集中的輔助節點進行映象以實現高可用性。如果主伺服器發生故障,則將升級其中一個映象,然後繼續處理。我的新同事傑克有一個很棒的帖子有關仲裁佇列如何“解決”映象佇列的一些同步和儲存難題。它們是一個很好的改進,這就是為什麼我想對其進行一些探索的原因。
Spring Boot試驗細節點選標題進入原文。試驗內容大概是:
開啟第一個應用是訊息釋出者,第二個應用是訊息的訂閱者,第三個應用將在時間到時關閉RabbitMQ節點,模擬故障當機。
開啟訊息釋出,會看到釋出者正在釋出,訂閱者正在訂閱。訊息從仲裁佇列按順序到達。然後關閉RabbitMQ三個節點中一個,但是處理過程中沒有暫停,並且Spring Boot應用程式保持愉快地按順序傳送和接收資料。仲裁佇列有了新的領導者,並且三個叢集成員中只有兩個處於聯機狀態。
為了娛樂,再次啟動已停止的節點,發現它迅速重新加入群集並再次開始參與仲裁佇列。
相關文章
- 基於 HBase 構建可伸縮的分散式事務佇列分散式佇列
- 分散式訊息佇列RocketMQ--事務訊息--解決分散式事務的最佳實踐分散式佇列MQ
- 分散式事務(一)—分散式事務的概念分散式
- 分散式事務(2)---強一致性分散式事務解決方案分散式
- 分散式事務最終一致性的簡單案例分散式
- RabbitMQ延時佇列的使用MQ佇列
- RabbitMQ的工作佇列和路由MQ佇列路由
- 深入理解分散式系統:分割槽、複製、分散式事務以及系統一致性與共識分散式
- 老生常談——利用訊息佇列處理分散式事務佇列分散式
- 基於asyncio和redis的Python分散式任務佇列RedisPython分散式佇列
- 本地事務和分散式事務的區別分散式
- 分散式事務,強一致性方案有哪些?|分散式事務系列(二)分散式
- 用 RabbitMQ 的死信佇列來做定時任務MQ佇列
- 帶複製建構函式、賦值運算子的模板佇列函式賦值佇列
- 強一致性的分散式事務幾種模式對比分散式模式
- 淺談ORACLE的分散式事務Oracle分散式
- 避不開的分散式事務分散式
- 關於分散式事務的理解分散式
- 解除分散式事務的掛起分散式
- 分散式事務之Seata的AT模型分散式模型
- Golang 實現 RabbitMQ 的死信佇列GolangMQ佇列
- 深入剖析分散式事務一致性分散式
- Disque:Redis之父新開源的分散式記憶體作業佇列Redis分散式記憶體佇列
- 分散式之訊息佇列複習精講分散式佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- 基於Dynomite的分散式延遲佇列MIT分散式佇列
- 分散式事務利器——RocketMQ事務訊息的啟示分散式MQ
- 常用的分散式事務解決方案分散式
- 面試必備的分散式事務方案面試分散式
- 跨Mysql、Redis、Mongo的分散式事務MySqlRedisGo分散式
- MySQL 分散式事務的“路”與“坑”MySql分散式
- 再看rabbitmq的交換器和佇列的關係MQ佇列
- 分散式資料庫的複製原理 - Quastor分散式資料庫AST
- Golang 實現 RabbitMQ 的延遲佇列GolangMQ佇列
- RabbitMQ的佇列模式你真的懂嗎MQ佇列模式
- 比較微服務中的分散式事務模式微服務分散式模式
- 微服務的分散式事務模式比較 | RedHat微服務分散式模式Redhat
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列