隆和志
近年來,Apache Kafka社區(qū)一直在開發(fā)一種使用自我管理元數(shù)據(jù)運行的新方法。這種新的KRaft社區(qū)模式提高了可擴展性和彈性,同時實現(xiàn)了Apache Kafka的部署。另外還有在每個Apache Kafka周圍運行Apache ZooKeeper集群的需要。
Apache Kafka 3.3版本包含許多新功能和改進,這里重點介紹一些更突出的功能。
KIP將KRaft標記為可用于Kafka 3.中的新近8-3版本的Apache K3的生產(chǎn)版本。IP -833 KRaft 3.5.0標記為連接KRaft的版本。
KIP- 7788允許升級KRaft集群,而不是雙滾模式。為了能夠升級在KRaft的下模式,需要升級和代理Apache的RPC,直到允許使用新的RPC和格式記錄集群升級。
KIP-841提高了干凈關閉期間主題執(zhí)行的保護功能。它通過強制以下不變量來完成:①保護受控關閉的副本不符合ISR的條件;②受保護的或受控的副本沒有資格成為領導者關閉。
KIP-836將描述Quorum API顯示給管理員客戶端,并添加每個副本到響應中。
使用KRaft模式,Apache Kafka向集群添加了一個新的控制器仲裁,這些控制器需要能夠提交記錄以使Apache Kafka可用。
KIP-835通過周期性增加高水位線和最后提交的偏移量來衡量可用性,監(jiān)控服務可以比較這些最后提交的偏移量是否正在推進。他們還可以使用這些指標來檢查所有代理和控制器是否在彼此的偏移量內(nèi)。
KIP-794改進了默認分區(qū)器,以在健康的代理之間分批均勻分布非監(jiān)控數(shù)據(jù),而向不健康的代理分配更少的數(shù)據(jù)。例如,具有異常行為的生產(chǎn)者工作負載的p99延遲從11 s減少到154 ms。
在KRaft模式下,集群元數(shù)據(jù)復制日志是集群中所有服務器元數(shù)據(jù)相關信息的來源。處理此日志時發(fā)生的任何錯誤都可能導致服務器的內(nèi)存狀態(tài)變得不一致,重要的是要使此類錯誤可見。KIP-859公開了可以監(jiān)控的指標,以便可以發(fā)現(xiàn)受影響的服務器。
KIP-373允許用戶為其他用戶創(chuàng)建委托令牌,允許以下用例:①指定的超級用戶可以創(chuàng)建令牌而不需要單獨的用戶憑據(jù);②指定的超級用戶可以代表另一個用戶運行Kafka客戶端。
日志恢復是Kafka服務器啟動時觸發(fā)的過程,如果之前有過不干凈的關閉,它可以確保日志處于良好狀態(tài)并且沒有損壞。KIP-831公開指標以允許用戶監(jiān)控日志恢復的進度。
KIP-709簡化了從消費者組獲取偏移量的過程,以便可以發(fā)出單個請求來獲取多個組的偏移量。這具有以下優(yōu)點:①減少了請求開銷;②簡化了客戶端代碼。
KIP-827公開了一個RPC,用于查詢每個日志目錄的磁盤總大小和磁盤使用大小,這有利于在不依賴公開指標的情況下查詢此信息的工具。
KIP-851在管理客戶端中添加了選項,用于在使用恰好一次語義時查詢提交的偏移量。
KIP-843允許指標API以原子方式查詢指標(如果存在)或創(chuàng)建指標(如果不存在)。
KIP-824允許將kafka-dump-logs工具配置為僅掃描和打印日志段開頭的記錄,而不是整個日志段。
借助普通消費者中可用的指標,Kafka Streams的用戶可以在子拓撲級別推導出其應用程序的消耗吞吐量,但對于產(chǎn)生的吞吐量而言,情況并非如此。
KIP-846填補了這一空白,并通過引入2個新的接收節(jié)點吞吐量指標,為最終用戶提供了一種計算每個子拓撲的生產(chǎn)率的方法。盡管可以使用現(xiàn)有的客戶端級別指標推導出消耗的吞吐量,但KIP-846還為源節(jié)點的吞吐量添加了2個新指標,提供與匯節(jié)點處新添加的指標同樣細粒度的指標范圍,簡化用戶體驗。
通過強制成員離開消費者組KIP-812可以永久關閉流。
KIP-834增加了暫停和恢復拓撲的能力。這可用于減少使用的資源或修改數(shù)據(jù)管道。暫停的拓撲跳過處理、標點和備用任務。對于分布式Streams應用程序,每個實例都需要單獨暫停和恢復。
KIP-820泛化了KStream API以整合可以轉發(fā)結果(Transformers)和不能轉發(fā)(Processors)。該更改使用了新的類型安全處理器API,這簡化了Kafka Streams,使其更易于使用和學習。
KIP-618為源連接器添加了一種語義支持。Connect框架已擴展為以原子方式將源記錄及其源偏移量寫入Apache Kafka,并防止僵尸任務向Apache Kafka生成數(shù)據(jù)。