KAFKA架構重溫

kafka架構組成部分:由kafka集群,zookeeper集群,生產者和消費者構成,其中zookeeper存盤kafka相關元資料資訊以及負責監控和維護kafka集群的健康狀態,
? kafka集群由服務實體Broker組成,每一個Broker只持有主題topic中的一部分資料稱之為主磁區資料,其復制磁區以一種冗余的容錯的方式存盤到其他Broker中,
? Topic是一類資料集的集合,其實就是一種record佇列,每一個record中由一個offset(偏移量)記錄讀取和寫入位置,每一個磁區都是一個有序的持續的可追加的不可變record佇列,并在kafka中以結構化日志檔案commit log檔案來存盤的,且不管訊息消費與否,都會有個默認的保留周期,
? 生產者負責生產資料,將訊息發布到Topic主題中,生產者訊息發布策略,當record的k不為空時,使用哈希取模的發布策略(key.hashCode % numPartitions);當record中的key為空時,使用輪詢磁區的方式進行訊息的發布;手動指定record存盤的磁區序號,當生產者發布訊息之后存盤時會有一個ack機制,當ack機制設定為0時broker無需應答,當ack設定為1時及寫入主磁區不管復制磁區是否寫入成功,立即應答,當ack設定為all或者-1時表示資料發寫入到主磁區且同步到復制磁區時才進行應答,當超過默認時長30s時進行retry重新將資料寫入到主磁區,此時必定會有一個問題就是造成主磁區資料重復,為了解決這個問題引入冪等操作(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true),生產者的批量發送,將多個Record存放一個緩沖區,當滿足條件(緩沖區大小 | 逗留時間)時以批量的形式發送存放kafka集群;
? 消費者消費topic中的資料,由所屬消費組進行操作,同組以同組一種負載均衡,不同組廣播的方式進行資料的消費;當同組消費者出現故障時,會自動進行容錯處理,將當前消費者所負責的磁區均勻的笑給其他消費者進行處理;消費者有三種消費方式:只訂閱,訂閱一個到n個topic所有磁區的所有資料;指定消費磁區:訂閱一個或者多個topic中的磁區資料;手動指定磁區消費位置:每一個消費者維護一個消費位置offset,可以手動設定offset做到重新消費或者跳過不感興趣的資料;當消費者首次訂閱時,有兩種方式,latest和earliest,當設定為earliest時,如當前磁區有已經提交的offset,從當前offset進行消費,若沒有則從最后即最新產的生的資料進行消費;如果設定為earliest,如有已提交的offset,從當前offset進行消費,若沒有,從當前磁區的開頭進行消費,
消費組的作用:用來組織消費者的一種方式,同組負載均衡不同組廣播,記錄同組消費者的消費者位置,不同的消費組,Topic資料會復制給所有的消費組,但是只能由消費組中的一個消費者進行資料的處理,同時維護組員中的消費位置
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290032.html
標籤:其他
