Apache Kafka內部刪除了對ZooKeeper的依賴
Apache Kafka使用Apache ZooKeeper儲存其後設資料,ZooKeeper有什麼問題呢?實際上,問題不在於ZooKeeper本身,而在於外部後設資料管理的概念。
有兩個系統會導致很多重複。畢竟,Kafka是複製的分散式日誌,其頂部是pub / sub API。ZooKeeper是一個複製的分散式日誌,頂部是檔案系統API。每個都有其自己的網路通訊,安全性,監視和配置方式。使用兩個系統會使維護人員的結果總複雜度大約翻倍。這導致不必要的陡峭學習曲線,並增加了某些配置錯誤導致安全漏洞的風險。
在外部儲存後設資料不是很有效。我們至少執行三個附加的Java程式,有時還要執行更多。實際上,我們經常看到Kafka叢集的ZooKeeper節點與Kafka節點一樣多!此外,ZooKeeper中的資料也需要反映在Kafka控制器上,這會導致雙重快取。
更糟糕的是,在外部儲存後設資料限制了Kafka的可伸縮性。當Kafka叢集啟動或選擇新的控制器時,控制器必須從ZooKeeper載入叢集的完整狀態。隨著後設資料量的增加,此載入過程的時間也隨之增加。這限制了Kafka可以儲存的分割槽數量。
最後,將後設資料儲存在外部會增加控制器的記憶體狀態與外部狀態不同步的可能性。控制器的活動檢視(位於群集中)也可以與ZooKeeper的檢視不同。
KIP-500
KIP-500概述了在Kafka中處理後設資料的更好方法。您可以將其稱為“ Kafka on Kafka”,因為它涉及將Kafka的後設資料儲存在Kafka本身中,而不是儲存在諸如ZooKeeper之類的外部系統中。
在後KIP-500時代,後設資料將儲存在Kafka內的分割槽中,而不是儲存在ZooKeeper中。控制器將成為該分割槽的負責人。僅Kafka本身就不會配置和管理外部後設資料系統。
我們將後設資料視為日誌。需要最新更新的代理只能讀取日誌的末尾。這類似於需要最新日誌條目的使用者僅需要讀取日誌的最後而不是整個日誌的方式。經紀人還將能夠在整個流程重啟期間保留其後設資料快取。
相關文章
- Kafka 入門(三)--為什麼 Kafka 依賴 ZooKeeper?Kafka
- docker 刪除依賴的父映象的命令Docker
- npm 安裝、刪除依賴命令NPM
- Spring 對Apache Kafka的支援與整合SpringApacheKafka
- Kafka——zookeeper的作用Kafka
- Maven依賴管理:控制依賴的傳遞Maven
- zookeeper、dubbo、kafkaKafka
- 在Idea 內搜尋新增Maven 依賴IdeaMaven
- word內容被刪除怎麼辦?word內容被刪除了的恢復方法
- 依賴管理和依賴範圍
- Apache Pulsar 與 Apache Kafka 在金融場景下的效能對比分析ApacheKafka
- rimraf 命令強制刪除依賴庫檔案
- 依賴
- 領域驅動設計對依賴的控制
- 關於我對Spring迴圈依賴的思考Spring
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- 探索Kafka消費者的內部結構Kafka
- kafka的內部實現、安裝和使用Kafka
- Elasticsearch依賴與Spring對應關係ElasticsearchSpring
- 半導體“依賴症”:世界依賴中國、中國依賴世界
- [Apache][Nginx]構建僅對團隊內部公開使用的web應用ApacheNginxWeb
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- spring 的依賴注入Spring依賴注入
- 我對控制反轉以及依賴注入的認識依賴注入
- 對控制反轉和依賴注入的突然頓悟依賴注入
- 一個.NET內建依賴注入的小型強化版依賴注入
- 滴滴雲部署 ZooKeeper + KafkaKafka
- kafka和zookeeper安裝Kafka
- 解題報告-論對“依賴揹包”的新理解
- Apache Curator 操作Zookeeper apiApacheAPI
- Apache Kafka 的基本概念ApacheKafka
- cargo 中的版本依賴Cargo
- nodejs 中的依賴管理NodeJS
- Flutter 中的依賴管理Flutter
- 再探迴圈依賴 → Spring 是如何判定原型迴圈依賴和構造方法迴圈依賴的?Spring原型構造方法
- Apache Kafka教程--Kafka新手入門ApacheKafka
- 依賴引入 | Android依賴引入史上最全攻略Android
- Spring的依賴注入的方式Spring依賴注入