Kafka 不再需要 ZooKeeper


img

Kafka 2.8.0 出爐了,此版本有一項重大改進:

實現了 Raft 分布式一致性機制,意味着可以脫離 ZooKeeper 獨立運行了。

ZooKeeper 在 Kafka 中扮演着重要的角色,用來存儲 Kafka 的元數據。

ZooKeeper 存儲着 Partition 和 Broker 的元數據 ,同時也負責 Kafka Controller 的選舉工作。

對於 Kafka 來講,ZooKeeper 是一套外部系統,要想部署一套 Kafka 集群,就要同時部署、管理、監控 ZooKeeper。

ZooKeeper 有自己的配置方式、管理工具,和 Kafka 完全不一樣,所以,一起搞兩套分布式系統,自然就提升了復雜度,也更容易出現問題。有時工作量還會加倍,例如要開啟一些安全特性,Kafka 和 ZooKeeper 中都需要配置。

除了復雜度,外部存儲也會降低系統效率

例如 Kafka 集群每次啟動的時候,Controller 必須從 ZooKeeper 加載集群的狀態信息。

再比如選舉出一個新的 Controller 之后也會比較麻煩,因為需要加載元數據,而此時元數據的量可能已經非常大了,這就產生了效率問題。

所以,ZooKeeper 帶來的復雜度、系統效率這兩個問題已經成為 Kafka 的痛點,Kafka 團隊一直在努力去除對 ZooKeeper 的依賴。Kafka 2.8.0 這個版本終於實現了。

使用 Raft 模式之后,元數據、配置信息都會保存在 @metadata 這個 Topic 中,自動在集群中復制。這樣 Kafka 就會簡單輕巧很多。

但需要注意的是,Zookeeper-less Kafka 還屬於早期版本,並不完善,所以,現在不要應用在線上產品環境中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM