好程式設計師大資料培訓分享關於kafka的幾個重要問題

好程式設計師IT發表於2019-08-20

  1.segment的概念

  topic中會有一個到多個分割槽,每個分割槽中會有多個segment,segment的大小在kafka的配置檔案裡可以設定,segment的大小是相等的,每個segment有多個index檔案和對應的資料檔案組成的

  2.資料儲存機制?(資料寫入快的原因)

  首先是broker接收到資料,將資料放到作業系統(linux)的快取裡(pagecache)

  pagecache 會盡可能多的使用空閒記憶體,會使用sendfile技術儘可能多的減少作業系統和應用程式之間進行重複快取,寫入資料的時候還會用到順序寫入的方式,寫入資料的速度可達600m/s

  3.consumer是怎麼解決負載均衡問題的?

  當同一個group 的consumer的數量發生改變時,會觸發kafka的負載均衡,首先獲取consumer消費的起始分割槽號,再計算出consumer要消費的分割槽數量,最後用起始分割槽號的hashcode值模餘分割槽數

1、資料的分發策略

  kafka預設呼叫自己的分割槽器(DefaultPartitioner)進行分割槽,也可以自定義分割槽器,自定義分割槽器需要實現Partitioner特質,實現partition方法

2、kafka是怎麼保證資料不丟失的?
kafka接收資料以後會根據建立的topic指定的副本數來儲存,副本資料是由kafka自己進行同步, 多副本機制保證了資料的安全性

3、kafka可以保證topic裡的資料全域性有序嗎

  kafka可以做到分割槽內有序,分割槽之間是無序的

  怎麼做到全域性有序呢?最簡單方式是建立分割槽topic時指定分割槽數為1

4、如果想消費已經被消費過的資料

  1.採用不同的group。

  2.透過一些配置,就可以將線上產生的資料同步到映象中去,然後再由特定的叢集區處理大批次的資料。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2654310/,如需轉載,請註明出處,否則將追究法律責任。

相關文章