Kafka 再也不須要 ZooKeeper

img

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

實現了 Raft 分佈式一致性機制,意味着能夠脫離 ZooKeeper 獨立運行了。

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

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

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

ZooKeeper 有本身的配置方式、管理工具,和 Kafka 徹底不同,因此,一塊兒搞兩套分佈式系統,天然就提高了複雜度,也更容易出現問題。有時工做量還會加倍,例如要開啓一些安全特性,Kafka 和 ZooKeeper 中都須要配置。spa

除了複雜度,外部存儲也會下降系統效率code

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

再好比選舉出一個新的 Controller 以後也會比較麻煩,由於須要加載元數據,而此時元數據的量可能已經很是大了,這就產生了效率問題。部署

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

使用 Raft 模式以後,元數據、配置信息都會保存在 @metadata 這個 Topic 中,自動在集羣中複製。這樣 Kafka 就會簡單輕巧不少。it

但須要注意的是,Zookeeper-less Kafka 還屬於早期版本,並不完善,因此,如今不要應用在線上產品環境中。

相關文章
相關標籤/搜索