您好,登錄后才能下訂單哦!
網易面試真題:講講 kafka 維護消費狀態跟蹤的方法?
解析:大部分消息系統在 broker 端的維護消息被消費的記錄:一個消息被分發到consumer 后 broker 就馬上進行標記或者等待 customer 的通知后進行標記。這樣也可以在消息在消費后立馬就刪除以減少空間占用。
但是這樣會不會有什么問題呢?如果一條消息發送出去之后就立即被標記為消費過的,一旦 consumer 處理消息時失敗了(比如程序崩潰)消息就丟失了。為了解決這個問題,很多消息系統提供了另外一個個功能:當消息被發送出去之后僅僅被標記為已發送狀態,當接到 consumer 已經消費成功的通知后才標記為已被消費的狀態。這雖然解決了消息丟失的問題,但產生了新問題,首先如果 consumer處理消息成功了但是向 broker 發送響應時失敗了,這條消息將被消費兩次。第二個問題時,broker 必須維護每條消息的狀態,并且每次都要先鎖住消息然后更改狀態然后釋放鎖。這樣麻煩又來了,且不說要維護大量的狀態數據,比如如果消息發送出去但沒有收到消費成功的通知,這條消息將一直處于被鎖定的狀態,Kafka 采用了不同的策略。Topic 被分成了若干分區,每個分區在同一時間只被一個 consumer 消費。這意味著每個分區被消費的消息在日志中的位置僅僅是一個簡單的整數:offset。這樣就很容易標記每個分區消費狀態就很容易了,僅僅需要一個整數而已。這樣消費狀態的跟蹤就很簡單了。
Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。在大廠Kafka也是經常被問到的一個問題,我學習Kafka的時候也整理一些學習筆記,和收集了很多的面試真題,希望能夠對大家有一定的幫助。
如何獲取 topic 主題的列表
生產者和消費者的命令行是什么?
consumer 是推還是拉?
講講 kafka 維護消費狀態跟蹤的方法
講一下主從同步
為什么需要消息系統,mysql 不能滿足需求嗎?
Zookeeper 對于 Kafka 的作用是什么?
數據傳輸的事務定義有哪三種?
Kafka 判斷一個節點是否還活著有那兩個條件?
Kafka 與傳統 MQ 消息系統之間有三個關鍵區別
講一講 kafka 的 ack 的三種機制
消費者故障,出現活鎖問題如何解決?
如何控制消費的位置
kafka 分布式(不是單機)的情況下,如何保證消息的順序消費?
kafka 的高可用機制是什么?
kafka 如何減少數據丟失
kafka 如何不消費重復數據?比如扣款,我們不能重復的扣。
我整理的關于Kafka(含核心知識點以及思維導圖xmind):
Kafka 概念:
Kafka 是一種高吞吐量、分布式、基于發布/訂閱的消息系統,最初由 LinkedIn 公司開發,使用Scala 語言編寫,目前是 Apache 的開源項目。
broker:Kafka 服務器,負責消息存儲和轉發
topic:消息類別,Kafka 按照 topic 來分類消息
partition:topic 的分區,一個 topic 可以包含多個 partition,topic 消息保存在各個partition 上
offset:消息在日志中的位置,可以理解是消息在 partition 上的偏移量,也是代表該消息的唯一序號
Producer:消息生產者
Consumer:消息消費者
Consumer Group:消費者分組,每個 Consumer 必須屬于一個 group
Zookeeper:保存著集群 broker、topic、partition 等 meta 數據;另外,還負責 broker 故障發現,partition leader 選舉,負載均衡等功能
Kafka 數據存儲設計:
partition 的數據文件(offset,MessageSize,data)
數據文件分段 segment(順序讀寫、分段命令、二分查找)
數據文件索引(分段索引、稀疏存儲)
生產者設計:
負載均衡(partition 會均衡分布到不同 broker 上)
批量發送
壓縮(GZIP 或 Snappy)
消費者設計:
Consumer Group
由于題量較多,篇幅的限制,文章中的面試題分享沒有全部附上詳細的解析,希望各位同仁理解
但是整理成了一份詳細的PDF文檔可分享給大家
領取方式:關注我的供種號(Java周某人)即可領取
近千道大廠面試題整理(PDF)帶詳細解析
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。