鎖屏面試題百日百刷,每個作業日堅持更新面試題,請看到最后就能獲取你想要的,接下來的是今日的面試題:
1.如何保證Kafka的訊息有序
Kafka對于訊息的重復、丟失、錯誤以及順序沒有嚴格的要求,
Kafka只能保證一個partition中的訊息被某個consumer消費時是順序的,事實上,從Topic角度來說,當有多個partition時,訊息仍然不是全域有序的,
2.kafka資料丟失問題,及如何保證
1)資料丟失:
acks=1的時候(只保證寫入leader成功),如果剛好leader掛了,資料會丟失,
acks=0的時候,使用異步模式的時候,該模式下kafka無法保證訊息,有可能會丟,
2)brocker如何保證不丟失:
acks=all : 所有副本都寫入成功并確認,
retries = 一個合理值,
min.insync.replicas=2 訊息至少要被寫入到這么多副本才算成功,
unclean.leader.election.enable=false 關閉unclean leader選舉,即不允許非ISR中的副本被選舉為leader,以避免資料丟失,
3)Consumer如何保證不丟失
如果在訊息處理完成前就提交了offset,那么就有可能造成資料的丟失,
enable.auto.commit=false 關閉自動提交offset
處理完資料之后手動提交,
3.kafka的balance是怎么做的
官方原文
Producers publish data to the topics of their choice. The producer is able to choose which message
to assign to which partition within the topic. This can be done in a round-robin fashion simply to
balance load or it can be done according to some semantic partition function (say based on some
key in the message). More on the use of partitioning in a second. 翻譯:
生產者將資料發布到他們選擇的主題,生產者可以選擇在主題中分配哪個磁區的訊息,這可以通過回圈的方式來完成,只是為了平衡負載,或者可以根據一些語意磁區功能(比如訊息中的一些鍵)來完成,更多關于磁區在一秒鐘內的使用,
4.kafka的消費者方式
consumer采用pull(拉)模式從broker中讀取資料,
push(推)模式很難適應消費速率不同的消費者,因為訊息發送速率是由broker決定的,它的目標是盡可能以最快速度傳遞訊息,但是這樣很容易造成consumer來不及處理訊息,典型的表現就是拒絕服務以及網路擁塞,
而pull模式則可以根據consumer的消費能力以適當的速率消費訊息,
對于Kafka而言,pull模式更合適,它可簡化broker的設計,consumer可自主控制消費訊息的速率,同時consumer可以自己控制消費方式——即可批量消費也可逐條消費,同時還能選擇不同的提交方式從而實作不同的傳輸語意,
pull模式不足之處是,如果kafka沒有資料,消費者可能會陷入回圈中,一直等待資料到達,為了避免這種情況,我們在我們的拉請求中有引數,允許消費者請求在等待資料到達的“長輪詢”中進行阻塞,
全部內容在git上,了解更多請點我頭像或到我的主頁去獲得,謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/550069.html
標籤:其他
