1. 程式人生 > >如何保證訊息佇列的高可用?

如何保證訊息佇列的高可用?

面試題

如何保證訊息佇列的高可用?

面試官心理分析

如果有人問到你 MQ 的知識,高可用是必問的。上一講提到,MQ 會導致系統可用性降低。所以只要你用了 MQ,接下來問的一些要點肯定就是圍繞著 MQ 的那些缺點怎麼來解決了。

要是你傻乎乎的就幹用了一個 MQ,各種問題從來沒考慮過,那你就杯具了,面試官對你的感覺就是,只會簡單使用一些技術,沒任何思考,馬上對你的印象就不太好了。這樣的同學招進來要是做個 20k 薪資以內的普通小弟還湊合,要是做薪資 20k+ 的高工,那就慘了,讓你設計個系統,裡面肯定一堆坑,出了事故公司受損失,團隊一起背鍋。

面試題剖析

這個問題這麼問是很好的,因為不能問你 Kafka 的高可用性怎麼保證?ActiveMQ 的高可用性怎麼保證?一個面試官要是這麼問就顯得很沒水平,人家可能用的就是 RabbitMQ,沒用過 Kafka,你上來問人家 Kafka 幹什麼?這不是擺明了刁難人麼。

所以有水平的面試官,問的是 MQ 的高可用性怎麼保證?這樣就是你用過哪個 MQ,你就說說你對那個 MQ 的高可用性的理解。

RabbitMQ 的高可用性

RabbitMQ 是比較有代表性的,因為是基於主從(非分散式)做高可用性的,我們就以 RabbitMQ 為例子講解第一種 MQ 的高可用性怎麼實現。

RabbitMQ 有三種模式:單機模式、普通叢集模式、映象叢集模式。

單機模式

單機模式,就是 Demo 級別的,一般就是你本地啟動了玩玩兒的