您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何進行Apache Kafka 2.7.0加速移除Zookeeper的分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
分布式發布與訂閱系統Apache Kafka社區,發布了2.7.0這個遲來的版本,該版本的幾個重點更新,包括持續將Apache Kafka中的ZooKeeper替換掉,加入了新的內部代理API,并且增加新的Core Raft共識演算法,現在Apache Kafka中具有單獨包含核心共識協定的Core Raft模塊。另外,分層儲存的工作也持續進行中,以提供無限擴展和更快達到重新均衡的能力。
Zookeeper原本是在Apache Kafka中,扮演協調代理的角色,所有代理服務器啟動時,都會連接到Zookeeper進行注冊,當代理狀態發生變化時,Zookeeper便會儲存這些數據,Kafka的代理會通過Zookeeper與其他代理溝通進行同步,也就是說Kafka沒有Zookeeper,也就無法順利運行。
不過,Zookeeper并非Kafka的一部分,因此運行每一個Kafka集群,都必須部署兩套系統,這產生了許多問題,包括造成多余資源的耗費,包括更多網路、監控功能以及安全性等資源配置,而Kafka集群規模增加,也就代表Zookeeper必須要跟著擴展,必須使用更多的存取,且Zookeeper作為外部的數據儲存服務,當數據越來越多,使得控制器載入時間越來越長,限制了Kafka集群的規模擴展。
因此在2019年的時候,Apache Kafka社區就開始移除Zookeeper的工作,要由Kafka本身提供數據管理功能,而Apache Kafka 2.7.0總共有7個更新,與移除Zookeeper工作有關,包括了KIP-497新增內部代理API,來替換原本的內部同步副本(In-Sync Replica,ISR)。
目前Kafka分區負責程序(Partition Leader)和ISR信息,皆儲存在Zookeeper中,控制器與分區負責程序都可以更新此狀態,但由于任一方都可以更新狀態,也就存在共享信息的機制,而這會使ISR的更新出現延遲,也就代表數據請求可能會收到舊信息。
Apache Kafka 2.7.0加入了一個新的AlterIsr API,賦予控制器獨占能力,更新分區負責程序和ISR的狀態,新API的好處是讓數據請求,總能獲得最新的狀態。官方提到,要刪除ZooKeeper,添加此API是重要的一步。
因為Kafka集群的規模日益增加,用戶需要在Kafka中儲存更多的數據,因此他們開始引入分層儲存的概念。Kafka的儲存現在分為本地端與遠端兩層,用戶可以將數據在本地暫存之后,丟到遠端進行較長期的儲存,如此,本地端儲存層留存資料的時間,將會從數天降到數小時,使用HDFS或S3等儲存系統的遠端層,就可以將資料留存數天甚至數月的時間。
關于如何進行Apache Kafka 2.7.0加速移除Zookeeper的分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。