Kafka 偏移量管理實現精確一次語義在Spark&Flink中的技術實踐-kafka商業應用實戰
本套技術專欄是作者(秦凱新)平時工作的總結和昇華,並深度整理大量網上資源和專業書籍。通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。QQ郵箱地址:[email protected],如有任何學術交流,可隨時聯絡。
1 Kafka 偏移量
1.1Kafka 0.9 之前版本
這裡的偏移量是指 kafka consumer offset,在 Kafka 0.9 版本之前消費者偏移量預設被儲存在 zookeeper 中(/consumers/<group.id>/offsets//),因此在初始化消費者的時候需要指定 zookeeper.hosts。
1.2Kafka 0.9 之後版本
隨著 Kafka consumer 在實際場景的不斷應用,社群發現舊版本 consumer 把位移提交到 ZooKeeper 的做法並不合適。ZooKeeper 本質上只是一個協調服務元件,它並不適合作為位移資訊的儲存元件,畢竟頻繁高併發的讀/寫操作並不是 ZooKeeper 擅長的事情。因此在 0.9 版本開始 consumer 將位移提交到 Kafka 的一個內部 topic(__consumer_offsets)中,該主題預設有 50 個分割槽,每個分割槽 3 個副本。