存儲機制Topic在每個Broker下存儲所屬的Partition,Partition下由 Index、Log 兩類文件組成 。
寫入Log 由多個Segment文件組成,每個Segment文件容量最多為1GB,接收到的新消息永遠是以追加的方式于Segment中(只追加不修改的方式減少了查詢的消耗),每個消息有自增編號 。
查詢Index 文件僅記錄固定消息量的索引編號范圍,Kafka在查詢時,先從Index中定位到小范圍的索引編號區(qū)間,再去Log中在小范圍的數(shù)據(jù)塊中查詢具體數(shù)據(jù),此索引區(qū)間的查詢方式稱為 - 稀疏索引 。
高效讀寫
- 分布式、多分區(qū)、各線程并行處理
- 稀疏索引 - 小范圍快速定位要消費的數(shù)據(jù)
- 數(shù)據(jù)文件,只追加不修改的順序寫方式(利用了物理磁盤的優(yōu)勢)
- 緩存技術 - 大量減少IO(由系統(tǒng)層面負責IO動作)
- 零拷貝技術 - 解放CPU,大量減少數(shù)據(jù)塊的Copy,數(shù)據(jù)直接從磁盤到網卡送出(利用了操作系統(tǒng)的技術)
# 數(shù)據(jù)文件過期時長配置項,三選一log.retention.hours# 小時,默認7天log.retention.minutes# 分鐘log.retention.ms# 毫秒# 刪除的容量警戒值,默認-1無窮大log.retention.bytes# 檢查過期間隔,默認5分鐘log.retention.check.interval.ms清理方式log.cleanup.policy = delect | compactdelect1、以Segment文件最后一條消息的時間為刪除依據(jù),刪除整個Segment文件 。2、以Log文件總大小,以 log.retention.bytes 的配置為準,刪除最早的Segment文件 。compact對于相同的key,僅保留最后一次的value,所有數(shù)據(jù)啟用壓縮策略(offset的id就不會連續(xù),后續(xù)說明) 。
【我的 Kafka 旅程 - 文件存儲機制】
經驗總結擴展閱讀
- 帶上我的小狗和玩具是什么歌
- 顧客嫌我的商品貴時怎樣應付
- 我的手機總是后臺偷跑流量怎么辦?
- 我的 Kafka 旅程 - broker
- Mobile 我的Vue之旅、05 導航欄、登錄、注冊
- 父親節(jié)素材
- 我的伯父魯迅先生中的四個小標題
- Docker搭建kafka及監(jiān)控
- 我的 Kafka 旅程 - Consumer
- 電視劇我的莫格利男孩一共多少集?
