事件溯源概念深入人心:Kafka將拋棄ZooKeeper,替換為自我管理的後設資料仲裁
這是Kafka的KIP-500提案,目前,Kafka使用ZooKeeper儲存有關分割槽和代理的後設資料,並選擇其作為Kafka控制器的代理。我們想要刪除對ZooKeeper的這種依賴。這將使我們能夠以更具可擴充套件性和可靠性的方式管理後設資料,從而支援更多分割槽。它還將簡化Kafka的部署和配置。
將狀態作為一系列事件進行管理由很多好處。在Kafka中,偏移量指標指示資料流中的位置。多個消費者只需重播比當前偏移量更新的所有事件即可,這樣可以獲得最新狀態。日誌已經在事件之間建立明確的順序,並確保消費者始終沿著單個時間線移動。
然而,儘管我們的使用者享受這些好處,但卡夫卡本身也被排除在外。我們將後設資料的更改視為孤立的更改,彼此之間沒有任何關係。當控制器將狀態更改通知(例如LeaderAndIsrRequest)推送到叢集中的其他節點時,節點可能會獲得一些更改,但不是全部。雖然控制器重試幾次,但它最終會放棄。這可能使叢集中各個節點處於不同的狀態。
更糟糕的是,儘管ZooKeeper是記錄儲存,但ZooKeeper中的狀態通常與控制器記憶體中儲存的狀態不匹配。例如,當分割槽負責人在ZK中更改其ISR時,控制器通常在好幾秒內還不瞭解這些更改。控制器沒有通用的方法來遵循ZooKeeper事件日誌。
後設資料應該儲存在Kafka本身,而不是儲存在單獨的系統中。這將避免與控制器狀態和Zookeeper狀態之間的差異相關的所有問題。節點之間應該只從事件日誌中消費後設資料事件,而不是向其他節點推送通知。這可確保後設資料更改始終以相同的順序到達。節點將能夠在檔案中本地儲存後設資料。當他們啟動時,他們只需要讀取控制器發生的變化,而不是完整狀態。這將讓我們以更少的CPU消耗支援更多分割槽。
評論:Zebee已經根據EventSourcing實現了全新的訊息代理:如何使用Zebee構建高度可擴充套件的分散式工作流中介軟體?
相關文章
- 為什麼我們放棄使用Kafka Streams實現全部的事件溯源?-MateuszKafka事件
- postgresql 將jsonb中的資料替換為指定資料SQLJSON
- 使用Kafka實現事件溯源Kafka事件
- 從入門到放棄 - 事件溯源事件
- 無伺服器與事件溯源結合的演示案例:將事件溯源作為Azure函式的資料持久化機制的庫伺服器事件函式持久化
- 拋棄Excel後工資翻倍,阿里大廠的資料包表全靠它Excel阿里
- 事件溯源將顛覆關聯式資料庫! - Remy事件資料庫REM
- 使用事件溯源、Kafka和OGG從Oracle內部複製資料事件KafkaOracle
- Debezium zookeeper kafka mysql資料處理KafkaMySql
- spark direct kafka 將offset推到zookeeperSparkKafka
- 如何從MySQL中將變化的事件資料釋出到Kafka?MySql事件Kafka
- 替換空格 將一個字串中的空格替換成“ ”字串
- Spring Alibaba Nacos替換dubbo zookeeperSpring
- 俄國將拋棄維基百科 建設更可靠的本土版本
- Golang引入泛型:Go將Interface{}替換為“Any”Golang泛型
- ultraedit中將某字元替換為回車符字元
- 將專案裡的moment替換為day.jsJS
- Kafka 入門(三)--為什麼 Kafka 依賴 ZooKeeper?Kafka
- Kafka——zookeeper的作用Kafka
- 拋棄jQuery 深入原生的JavaScriptjQueryJavaScript
- Clickhouse Engine kafka 將kafka資料同步clickhouseKafka
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- 高速公路換輪胎——為遺留系統替換資料庫資料庫
- 將每個元素替換為右側最大元素
- 如何將Rust的“struct”轉換為資料流?RustStruct
- Apache Kafka資料模型概念簡介 - BaeldungApacheKafka模型
- 從CRUD程式設計切換到事件溯源和區塊鏈程式設計程式設計事件區塊鏈
- 事件溯源:是來自事件的狀態與作為狀態的事件? - verraes事件
- js做資料的轉義字元替換JS字元
- 被時代拋棄的危機感
- activiti-explorer(activiti 5.22) 替換為mysql資料庫MySql資料庫
- zookeeper、dubbo、kafkaKafka
- 事件協作和事件溯源事件
- 事件流與事件溯源事件
- PHP 事件溯源PHP事件
- 拯救祭天的程式設計師——事件溯源模式程式設計師事件模式
- 美軍拋棄安卓換上iPhone 6s:安卓當機太多安卓iPhone
- Java EE6 事件:JMS的輕量替換Java事件