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
- apache kafka系列之在zookeeper中儲存結構ApacheKafka
- docker 刪除依賴的父映象的命令Docker
- npm 安裝、刪除依賴命令NPM
- saltstack對遞迴依賴條件(死迴圈依賴)的處理遞迴
- Kafka——zookeeper的作用Kafka
- Spring 對Apache Kafka的支援與整合SpringApacheKafka
- Maven依賴管理:控制依賴的傳遞Maven
- zookeeper、dubbo、kafkaKafka
- 依賴管理和依賴範圍
- 關於UNDO 內部一致性讀和回滾依賴的UNDO CHAIN描述AI
- 依賴
- kafka的內部實現、安裝和使用Kafka
- 探索Kafka消費者的內部結構Kafka
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- Oracle啟動後對控制檔案的依賴Oracle
- 如何刪除字串內部的空格字串
- rimraf 命令強制刪除依賴庫檔案
- Apache Pulsar 與 Apache Kafka 在金融場景下的效能對比分析ApacheKafka
- 在Idea 內搜尋新增Maven 依賴IdeaMaven
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- Maven依賴範圍及依賴傳遞Maven
- [Apache][Nginx]構建僅對團隊內部公開使用的web應用ApacheNginxWeb
- 對控制反轉和依賴注入的突然頓悟依賴注入
- 關於我對Spring迴圈依賴的思考Spring
- 我對控制反轉以及依賴注入的認識依賴注入
- 一個.NET內建依賴注入的小型強化版依賴注入
- Elasticsearch依賴與Spring對應關係ElasticsearchSpring
- 如何對 Android 庫進行依賴管理?Android
- ASP.NET Core中的依賴注入(2):依賴注入(DI)ASP.NET依賴注入
- AI依賴算力,而算力依賴能源AI
- 滴滴雲部署 ZooKeeper + KafkaKafka
- kafka和zookeeper安裝Kafka
- cargo 中的版本依賴Cargo
- Flutter 中的依賴管理Flutter
- spring 的依賴注入Spring依賴注入
- nodeJs的模組依賴NodeJS