Kafka專(zhuān)題:4.kafka存儲(chǔ)層

kafka的存儲(chǔ)層主要包含 分區(qū),副本,日志,日志分段這些概念,以問(wèn)答的形式來(lái)描述

1.為什么kafka的每一個(gè)主題會(huì)有多個(gè)分區(qū)?
如果一個(gè)分區(qū),會(huì)造成日志文件集中在一個(gè)節(jié)點(diǎn)上,需要解決文件切分的問(wèn)題,多分區(qū)可以從源頭上保證日志文件分散在各分區(qū)節(jié)點(diǎn)上;而且,多分區(qū)情況下,生產(chǎn)者可以將一批消息寫(xiě)入不同分區(qū)節(jié)點(diǎn),不分區(qū)的話,寫(xiě)操作只能串行。讀操作同理,總結(jié)就是可以提高讀寫(xiě)性能。

2.為什么分區(qū)需要副本?
可用性的保證,主副本掛掉,備份副本可以頂上

3.消息寫(xiě)入最終是寫(xiě)到哪里?
寫(xiě)入到日志文件, 為防止隨著追加,日志文件不斷增大,采用日志分段的形式。每一個(gè)日志分段包含一個(gè)索引文件和一個(gè)數(shù)據(jù)文件
正常情況下,kafka的讀寫(xiě)都是順序讀寫(xiě),性能很高。如果需要讀取指定offset的消息。那么索引文件就可以起到作用了。

4.索引文件的特點(diǎn)?
1)稀疏索引,不會(huì)為每一條消息都建立索引
2)索引存儲(chǔ)的是相對(duì)偏移量和物理位置
3)偏移量是有序的,可以使用2分查找快速定位
4)索引可以通過(guò)內(nèi)存映射的方式放入內(nèi)存,加快查詢。

5.消息什么時(shí)候?qū)懭氲饺罩疚募?br> 日志管理器會(huì)定時(shí)調(diào)度f(wàn)lushDirtyLogs()方法將page cache中的消息真正刷寫(xiě)到磁盤(pán)日志文件上。刷寫(xiě)日志有兩種策略:時(shí)間策略與大小策略。

6.kafka的日志清除策略
1)刪除策略:直接刪除日志分段,確保磁盤(pán)空間不會(huì)一直膨脹
2)壓縮策略:只刪除相同的鍵但是偏移量比較舊的消息,保留最新的消息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • kafka生產(chǎn)者生產(chǎn)的消息需要存儲(chǔ)在服務(wù)端,那么服務(wù)端就需要保證消息的健壯性,需要保證其線性擴(kuò)展,負(fù)載均衡,故障容...
    紹圣閱讀 531評(píng)論 0 0
  • kafka的定義:是一個(gè)分布式消息系統(tǒng),由LinkedIn使用Scala編寫(xiě),用作LinkedIn的活動(dòng)流(Act...
    時(shí)待吾閱讀 5,539評(píng)論 1 15
  • 摘要:消息存儲(chǔ)對(duì)于每一款消息隊(duì)列都非常重要,那么Kafka在這方面是如何來(lái)設(shè)計(jì)做到高效的呢?Kafka這款分布式消...
    癲狂俠閱讀 29,465評(píng)論 4 45
  • 日志管理 消息代理節(jié)點(diǎn)的數(shù)據(jù)目錄(log.dirs)可以設(shè)置多個(gè)目錄,代理節(jié)點(diǎn)負(fù)責(zé)的所有分區(qū)分布在多個(gè)目錄中。一個(gè)...
    紹圣閱讀 512評(píng)論 0 0
  • 4. 設(shè)計(jì)思想 4.1 動(dòng)機(jī) 我們?cè)O(shè)計(jì)的 Kafka 能夠作為一個(gè)統(tǒng)一的平臺(tái)來(lái)處理大公司可能擁有的所有實(shí)時(shí)數(shù)據(jù)饋送...
    瘋狂的橙閱讀 1,149評(píng)論 1 4

友情鏈接更多精彩內(nèi)容