MQ消息中間件,面試能問寫什么?
來自:blog.csdn.net/qq_29676623/article/details/85108070
1. 為什么使用消息隊列?
解耦


異步


削峰


2. 消息隊列的有點和缺點?

3. kafka、activemq、rabbitmq、rocketmq都有什么優(yōu)缺點?
1. 引入消息隊列之后如何保證其高可用性?
(1)RabbitMQ的高可用性


(2)kafka的高可用性

2. 如何保證消息不被重復消費(如何保證消息消費時的冪等性)?


3. 如何保證消息的可靠傳輸(如何處理消息丟失的問題)?
(1)rabbitmq

(2)kafka

給這個topic設(shè)置replication.factor參數(shù):這個值必須大于1,要求每個partition必須有至少2個副本
在kafka服務(wù)端設(shè)置min.insync.replicas參數(shù):這個值必須大于1,這個是要求一個leader至少感知到有至少一個follower還跟自己保持聯(lián)系,沒掉隊,這樣才能確保leader掛了還有一個follower吧
在producer端設(shè)置acks=all:這個是要求每條數(shù)據(jù),必須是寫入所有replica之后,才能認為是寫成功了
在producer端設(shè)置retries=MAX(很大很大很大的一個值,無限次重試的意思):這個是要求一旦寫入失敗,就無限重試,卡在這里了
1. 如何保證消息的順序性?


那如何保證消息的順序性呢?簡單簡單


(1)大量消息在mq里積壓了幾個小時了還沒解決

(2)這里我們假設(shè)再來第二個坑
(3)然后我們再來假設(shè)第三個坑
(4)能不能支持數(shù)據(jù)0丟失???可以的,參考我們之前說的那個kafka數(shù)據(jù)零丟失方案
評論
圖片
表情
