如何保證MQ的高可用?

ActiveMQ:

Master-Slave 部署方式主從熱備,方式包括通過共享存儲目錄來實現(shared filesystem Master-Slave)、通過共享數據庫來實現(shared database Master-Slave)、5.9版本後新特性使用 ZooKeeper 協調選擇 master(Replicated LevelDB Store)。

Broker-Cluster 部署方式進行負載均衡。

 

RabbitMQ:

單機模式與普通集羣模式無法滿足高可用,鏡像集羣模式指定多個節點複製 queue 中的消息做到高可用,但消息之間的同步網絡性能開銷較大。

 

RocketMQ:

有多 master 多 slave 異步複製模式和多 master 多 slave 同步雙寫模式支持集羣部署模式。

Producer 隨機選擇 NameServer 集羣中的其中一個節點建立長連接,定期從 NameServer 獲取 Topic 路由信息,並向提供 Topic 服務的 Broker Master 建立長連接,且定時向 Master 發送心跳,只能將消息發送到 Broker master。

Consumer 同時與提供 Topic 服務的 Master、Slave 建立長連接,從 Master、Slave 訂閱消息都可以,訂閱規則由 Broker 配置決定。

 

Kafka:

由多個 broker 組成,每個 broker 是一個節點;topic 可以劃分爲多個 partition,每個 partition 可以存在於不同的 broker 上,每個 partition 存放一部分數據,這樣每個 topic 的數據就分散存放在多個機器上的。

replica 副本機制保證每個 partition 的數據同步到其他節點,形成多 replica 副本;所有 replica 副本會選舉一個 leader 與 Producer、Consumer 交互,其他 replica 就是 follower;寫入消息 leader 會把數據同步到所有 follower,從 leader 讀取消息。

每個 partition 的所有 replica 分佈在不同的機器上。某個 broker 宕機,它上面的 partition 在其他節點有副本,如果有 partition 的 leader,會進行重新選舉 leader。

 

 


【Java面試題與答案】整理推薦

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章