分布式面試之Kafka面試題

2021-10-24 15:59:06 字數 3933 閱讀 8427

1、kafka的設計是什麼樣的?

kafka將訊息以topic為單位進行歸納將向kafka topic發布訊息的程式成為producers,將預訂topics並消費訊息的程式成為consumer。

kafka以集群的方式執行,可以由乙個或多個服務組成,每個服務叫做一 個broker。

producers通過網路將訊息傳送到kafka集群,集群向消費者提 供訊息

2、資料傳輸的事物定義有哪三種?

資料傳輸的事務定義通常有以下三種級別:

最多一次:訊息不會被重**送,最多被傳輸一次,但也有可能一次不 傳輸

最少一次:訊息不會被漏傳送,最少被傳輸一次,但也有可能被重複傳 輸.

精確的一次(exactly once):不會漏傳輸也不會重複傳輸,每個訊息都傳輸 被一次而且僅僅被傳輸一次,這是大家所期望的

3、kafka判斷乙個節點是否還活著有那兩個條件?

節點必須可以維護和zookeeper的連線,zookeeper通過心跳機制檢查每個節點的連線

如果節點是個follower,他必須能及時的同步leader的寫操作,延時不能太久

4、producer是否直接將資料傳送到broker的leader(主節點)?

producer直接將資料傳送到broker的leader(主節點),不需要在多個節點進行分發,為了幫助producer做到這點,所有的kafka節點都可以及時的告知哪些節點是活動的,目標topic目標分割槽的leader在哪。這樣 producer就可以直接將訊息傳送到目的地了

5、kafa consumer是否可以消費指定分割槽訊息?

kafa consumer消費訊息時,向broker發出」fetch」請求去消費特定分割槽的 訊息,consumer指定訊息在日誌中的偏移量(offset),就可以消費從這個位置開始的訊息,customer擁有了 offset的控制權,可以向後回滾去重新消費之前的訊息,這是很有意義的

6、kafka訊息是採用pull模式,還是push模式?

kafka最初考慮的問題是,customer應該從brokes拉取訊息還是brokers 將訊息推送到consumer,也就是pull還push。在這方面,kafka遵循了一種大部分訊息系統共同的傳統的設計,producer將訊息推送到broker, consumer從 broker拉取訊息

一些訊息系統比如scribe和apache flume採用了 push模式,將訊息推送到下游的consumer。

這樣做有好處也有壞處:由broker決定訊息推送的速率,對於不同消費速率的consumer就不太好處理了。訊息系統都致力於讓consumer以最大的速率最快速的消費訊息,但不幸的是,push模式下,當broker推送的 速率遠大於consumer消費的速率時,consumer恐怕就要崩潰了。最終 kafka還是選取了傳統的pull模式

pull模式的另外乙個好處是consumer可以自主決定是否批量的從broker 拉取資料。push模式必須在不知道下游consumer消費能力和消費策略的 情況下決定是立即推送每條訊息還是快取之後批量推送。如果為了避免consumer崩潰而採用較低的推送速率,將可能導致一次只推送較少的訊息而造成浪費。

pull模式下,consumer就可以根據自己的消費能力去決定這些策略

pull有個缺點是,如果broker沒有可供消費的訊息,將導致c onsumer不 斷在迴圈中輪詢,直到新訊息到t達。為了避免這點,kafka有個引數可 以讓consumer阻塞知道新訊息到達(當然也可以阻塞知道訊息的數量達到 某個特定的量這樣就可以批量發

7、kafka儲存在硬碟上的訊息格式是什麼?

訊息由乙個固定長度的頭部和可變長度的位元組陣列組成。頭部包含了乙個版本號和crc32校驗碼。

訊息長度:4 bytes (value: 1+4+n)

版本號:1 byte

crc 校驗碼:4 bytes

具體的訊息:n bytes

8、kafka高效檔案儲存設計特點

kafka把topic中乙個parition大檔案分成多個小檔案段,通過多個小檔案段,就容易定期清除或刪除已經消費完檔案,減少磁碟占用。

通過索引資訊可以快速定位message和確定response的最大大小。

通過index元資料全部對映到memory,可以避免segment file的10磁 盤操作。

通過索引檔案稀疏儲存,可以大幅降低index檔案元資料占用空間大 小。

9、kafka與傳統訊息系統之間有三個關鍵區別

kafka持久化日誌,這些日誌可以被重複讀取和無限期保留

kafka是乙個分布式系統:它以集群的方式執行,可以靈活伸縮,在內部 通過複製資料提公升容錯能力和高可用性

kafka支援實時的流式處理

10、kafka建立topic時如何將分割槽放置到不同的broker中

副本因子不能大於broker的個數;

第乙個分割槽(編號為0)的第乙個副本放置位置是隨機從brokerlist選擇的;

其他分割槽的第乙個副本放置位置相對於第0個分割槽依次往後移。也就是 如果我們有5個broker, 5個分割槽,假設第乙個分割槽放在第四個broker 上,那麼第二個分割槽將會放在第五個broker上;第三個分割槽將會放在第一 個broker上;第四個分割槽將會放在第二個broker上,依次類推;

剩餘的副本相對於第乙個副本放置位置其實是由nextreplicashift決定 的,而這個數也是隨機產生的

11、kafka新建的分割槽會在哪個目錄下建立

在啟動kafka集群之前,我們需要配置好log.dirs引數,其值是kafka數 據的存放目錄,這個引數可以配置多個目錄,目錄之間使用逗號分隔,通 常這些目錄是分布在不同的磁碟上用於提高讀寫效能。

當然我們也可以配置log.dir引數,含義一樣。只需要設定其中乙個即可。 如果log.dirs引數只配置了乙個目錄,那麼分配到各個broker上的分割槽肯定只能在這個目錄下建立資料夾用於存放資料。

但是如果log.dirs引數配置了多個目錄,那麼kafka會在哪個資料夾中創 建分割槽目錄呢?答案是:kafka會在含有分割槽目錄最少的資料夾中建立新的 分割槽目錄,分割槽目錄名為topic名+分割槽id。注意,是分割槽資料夾總數最少的目錄,而不是磁碟使用量最少的目錄!也就是說,如果你給log.dirs引數新增了乙個新的磁碟,新的分割槽目錄肯定是先在這個新的磁碟上建立直到這個新的磁碟目錄擁有的分割槽目錄不是最少為止。

12、partition的資料如何儲存到硬碟

topic中的多個partition以資料夾的形式儲存到broker,每個分割槽序號從0 遞增,且訊息有序

partition 檔案下有多個 segment(***.index, ***.log)。

segment檔案裡的大小和配置檔案大小一致可以根據要求修改預設為1g 如果大小大於1g時,會滾動乙個新的segment並且以上乙個segment最 後一條訊息的偏移量命名。

13、kafka 的 ack 機制

request.required.acks 有三個值 0 1 -1

0:生產者不會等待broker的ack,這個延遲最低但是儲存的保證最弱當 server掛掉的時候就會丟資料

1:服務端會等待ack值leader副本確認接收到訊息後傳送ack但是如果 leader掛掉後他不確保是否複製完成新leader也會導致資料丟失

-1:同樣在1的基礎上服務端會等所有的follower的副本受到資料後才會受到 leader發出的ack,這樣資料不會丟失

14、kafka的消費者如何消費資料

消費者每次消費資料的時候,消費者都會記錄消費的物理偏移量(offset )的 位置等到下次消費時,他會接著上次位置繼續消費

15、消費者負載均衡策略

乙個消費者組中的乙個分片對應乙個消費者成員,他能保證每個消費者成 員都能訪問,如果組中成員太多會有空閒的成員

16、資料有序

乙個消費者組裡它的內部是有序的,消費者組與消費者組之間是無序的。

17、kafaka生產資料時資料的分組策略

生產者決定資料產生到集群的哪個partition中每一條訊息都是以(key, valu e)格式

key是由生產者傳送資料傳入所以生產者(key)決定了資料產生到集群的哪 個 partition

分布式 分布式場景下面試題

redis相比memcached有哪些優勢 執行緒模型 redis 基於 reactor 模式開發了自己的網路事件處理器 這個處理器被稱為檔案事件處理器 file event handler 雖然檔案事件處理器以單執行緒方式執行,但通過使用 i o 多路復用程式來監聽多個套接字,檔案事件處理器既實現...

面試題 分布式常用技術

一 dubbo dubbo文件說明 dubbo原理 dubbo 集群容錯模式 負載均衡模式 dubbo的特點,8種通訊協議之對比 dubbo 架構圖 以及呼叫過程 dubbo和spring cloud微服務架構比較 dubbo面試題 dubbo admin安裝和使用 springboot整合dubb...

分布式快取的面試題8

1 面試題 了解什麼是redis的雪崩和穿透?redis崩潰之後會怎麼樣?系統該如何應對這種情況?如何處理redis的穿透?2 面試官心裡分析 其實這是問到快取必問的,因為快取雪崩和穿透,那是快取最大的兩個問題,要麼不出現,一旦出現就是致命性的問題。所以面試官一定會問你。3 面試題剖析 快取雪崩發生...