《Kafka技術內幕》閱讀筆記系列(一)

2022-05-06 04:24:09 字數 1834 閱讀 7501

不是對書中內容的摘抄。因此想要對該書詳細內容有更多了解的同學,可以自行購書翻閱。

每章或每節形成一張思維導圖。目的是總結書中內容,構建自己的知識架構。

提煉問題並給出答案。答案盡量用自己組織的語言通俗易懂的表達出來,而非複製貼上。

kafka的主題與分割槽內部是如何儲存的,它有什麼特點?(分割槽模型)

kafka集群為每個主題維護了分布式的分割槽日誌檔案,物理意義上把主題看作分割槽的日誌檔案。

特點:每個分區內的日誌檔案中的訊息保證有序。

對同一消費組來說,同一主題的每個分割槽只會分配給的消費組中唯一的乙個消費者。

分割槽是訊息處理的並行單元,是kafka中訊息處理的最小粒度。

與傳統的訊息系統相比,kafka的消費模型有什麼優點?(消費模型)

kafka的消費模型是「拉取模型」,傳統的訊息系統是「推送模型」。優點:

推送模型要求訊息**記錄訊息的消費狀態,如果採用訊息**推送訊息後即將訊息的狀態更新為「已消費」,則有可能在消費者掛掉的情況下導致訊息丟失;如果訊息**在傳送之後先更新為「已傳送」,需要在接收到消費者的確認訊息之後才將訊息的狀態更新為「已消費」,這就需要訊息**不僅記錄訊息的狀態,還需要跟蹤處理來自消費者的確認請求,使得訊息**的系統壓力增大。

拉取模型使得各個消費者之間互相獨立,各自管理自己的消費狀態。

拉取模型允許消費者以從訊息佇列中的任意偏移量處消費訊息(可以處理之前已經處理過的訊息)。

kafka如何實現分布式的資料儲存與資料讀取?(分布式模型)

kafka的分割槽有「多副本機制」,每個分割槽會以副本的方式複製到多個訊息**節點上,所有的外部讀寫訊息請求都由主副本處理。

資料儲存方面,涉及到生產者的訊息分割槽策略:訊息有鍵時,根據分割槽語義確保相同鍵的訊息在同一分割槽;訊息無鍵時,以輪詢的方式為訊息分配分割槽。

資料讀取方面,訊息模型採用「佇列模式」和「發布-訂閱模式」的結合。對不同消費組的消費者來說,獲取訊息屬於「發布-訂閱模式」,對於同一消費組的消費者來說,獲取訊息屬於「佇列模式」。

談一談kafka的訊息模型和消費模型

訊息模型指的是對於kafka來說,訊息的乙個流轉方式,分為「佇列模式」和「發布-訂閱模式」。

消費模型指的是對於消費者來說,訊息的獲取方式,分為「拉取模型」和「推送模型」。

kakfa是如何高效地持久化日誌檔案和加快資料傳輸訊息的?

高效地持久化日誌檔案,利用作業系統的優化技術如預讀、後寫、空閒記憶體作為磁碟快取,使得對於磁碟的順序訪問可以與隨機訪問記憶體的速度相比。

加快資料傳輸訊息,採用「零拷貝」技術。

kafka生產者如何批量地傳送訊息?

生產者會在記憶體中嘗試收集足夠資料,並在請求乙個請求中一次性傳送一批資料。生產者可以設定「在指定的時間內收集不超過指定數量的訊息」,如設定訊息大小上限為64位元組,延遲時間為100ms,那麼如果在100ms內訊息大小達到64位元組則會立即傳送,否則不論訊息大小,在100ms時會把已經收集到的訊息傳送出去。

kafka的副本機制如何工作,當故障發生時,怎麼確保資料不會丟失?

只有主副本負責處理外界的讀寫請求,當主副本出現故障時,備份副本會替換舊主副本成為新的主副本,繼續處理讀寫請求;備份副本始終盡量保持與主副本的資料同步,kafka中有乙個 isr (in sync replias)的概念,想進入isr的副本需滿足以下兩點:

節點必須和zk保持會話(表明節點是存活的)。

如果該節點是備份副本,則它必須複製主副本的寫操作,並且複製的進度不能太落後。

發生故障時,主副本機制如何確保資料不會丟失呢?kafka中,只有成功提交到生產者的訊息才能被消費者看見從而消費。而「成功提交」的定義是:訊息必須被isr集合的所有副本都運用到本地的日誌檔案。這就保證了,如何時刻,只要isr至少有乙個副本是存活的,kafka就可以保證「一條訊息被提交,就不會丟失」。

VC 技術內幕筆記

3。crect有乙個成員函式ptinrect用來測試乙個點是否落在某個矩形內。只適用於裝置座標系。crgn的ptinregion。4。mm twips對映模式常用於印表機。乙個twip單位等於1 20磅。1磅等於1 72英吋。水晶報表中的pagemargins單位就是twip。5。cscrollvi...

vc技術內幕筆記

1,當使用者改變了視窗尺寸,或者當視窗恢復了先前被遮蓋的部分 自動呼叫ondraw 或者當應用程式改變了視窗資料時,視窗都需要被重新繪製 用invalidate或invalidaterect 2.按照慣例,mfc庫中非靜態資料成員名字以m打頭。3.乙個csize物件是兩個cpoint物件的差,而且我...

Mysql技術內幕筆記

mysql由以下幾個部分組成 連線池元件 管理服務和工具元件 sql介面組價 查詢分析器組價 優化器組價 快取 cache 組價 外掛程式式儲存引擎 物理檔案。可以看出,mysql資料庫區別於其他資料庫的最重要的乙個特點就是其外掛程式式的表儲存引擎。儲存引擎是基於表的,而不是資料庫。是底層物理結構的...