偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Kafka 為什么要拋棄 Zookeeper?

開發(fā)
本文我們分析了為什么 Kafka 要移除 ZooKeeper,主要原因有兩個:ZooKeeper不能滿足 Kafka的發(fā)展以及 Kafka想創(chuàng)建自己的生態(tài)。

在曾經很長一段時間里,ZooKeeper都是 Kafka的標配,現如今,Kafka官方已經在慢慢去除ZooKeeper,Kafka 為什么要拋棄 Zookeeper?這篇文章我們來聊聊其中的緣由。

Kafka 和 ZooKeeper 的關系

ZooKeeper 是一個分布式協(xié)調服務,常用于管理配置、命名和同步服務。長期以來,Kafka 使用 ZooKeeper 負責管理集群元數據、控制器選舉和消費者組協(xié)調等任務理,包括主題、分區(qū)信息、ACL(訪問控制列表)等。

ZooKeeper 為 Kafka 提供了選主(leader election)、集群成員管理等核心功能,為 Kafka提供了一個可靠的分布式協(xié)調服務,使得 Kafka能夠在多個節(jié)點之間進行有效的通信和管理。然而,隨著 Kafka的發(fā)展,其對 ZooKeeper的依賴逐漸顯露出一些問題,這些問題也是下面 Kafka去除 Zookeeper的原因。

拋棄ZooKeeper的原因

(1) 復雜性增加

ZooKeeper 是獨立于 Kafka 的外部組件,需要單獨部署和維護,因此,使用 ZooKeeper 使得 Kafka的運維復雜度大幅提升。運維團隊必須同時管理兩個分布式系統(tǒng)(Kafka和 ZooKeeper),這不僅增加了管理成本,也要求運維人員具備更高的技術能力。

(2) 性能瓶頸

作為一個協(xié)調服務,ZooKeeper 并非專門為高負載場景設計, 因此,隨著集群規(guī)模擴大,ZooKeeper在處理元數據時的性能問題日益突出。例如,當分區(qū)數量增加時,ZooKeeper需要存儲更多的信息,這導致了監(jiān)聽延遲增加,從而影響Kafka的整體性能34。在高負載情況下,ZooKeeper可能成為系統(tǒng)的瓶頸,限制了Kafka的擴展能力。

(3) 一致性問題

Kafka 內部的分布式一致性模型與 ZooKeeper 的一致性模型有所不同。由于 ZooKeeper和 Kafka控制器之間的數據同步機制不夠高效,可能導致狀態(tài)不一致,特別是在處理集群擴展或不可用情景時,這種不一致性會影響消息傳遞的可靠性和系統(tǒng)穩(wěn)定性。

(4) 發(fā)展自己的生態(tài)

Kafka 拋棄 ZooKeeper,我個人覺得最核心的原因是:Kafka生態(tài)強大了,需要自立門戶,這樣就不會被別人卡脖子。縱觀國內外,有很多這樣鮮活的例子,當自己弱小時,會先選擇使用別家的產品,當自己羽翼豐滿時,再選擇自建完善自己的生態(tài)圈。

引入KRaft

為了剝離和去除 ZooKeeper,Kafka 引入了自己的親兒子 KRaft(Kafka Raft Metadata Mode)。KRaft 是一個新的元數據管理架構,基于 Raft 一致性算法實現的一種內置元數據管理方式,旨在替代 ZooKeeper 的元數據管理功能。其優(yōu)勢在于:

  • 完全內置,自包含:KRaft 將所有協(xié)調服務嵌入 Kafka 自身,不再依賴外部系統(tǒng),這樣大大簡化了部署和管理,因為管理員只需關注 Kafka 集群。
  • 高效的一致性協(xié)議:Raft 是一種簡潔且易于理解的一致性算法,易于調試和實現。KRaft 利用 Raft 協(xié)議實現了強一致性的元數據管理,優(yōu)化了復制機制。
  • 提高元數據操作的擴展性:新的架構允許更多的并發(fā)操作,并減少了因為擴展性問題導致的瓶頸,特別是在高負載場景中。
  • 降低延遲:在消除 ZooKeeper 作為中間層之后,Kafka 的延遲性能有望得到改善,特別是在涉及選主和元數據更新的場景中。
  • 完全自主:因為是自家產品,所以產品的架構設計,代碼開發(fā)都可以自己說了算,未來架構走向完全控制在自己手上。

KRaft的設計細節(jié)

控制器(Controller)節(jié)點的去中心化:KRaft 模式中,控制器節(jié)點由一組 Kafka 服務進程代替,而不是一個獨立的 ZooKeeper 集群。這些節(jié)點共同負責管理集群的元數據,通過 Raft 實現數據的一致性。

  • 日志復制和恢復機制:利用 Raft 的日志復制和狀態(tài)機應用機制,KRaft 實現了對元數據變更的強一致性支持,這意味著所有控制器節(jié)點都能夠就集群狀態(tài)達成共識。
  • 動態(tài)集群管理:KRaft 允許動態(tài)地向集群中添加或移除節(jié)點,而無需手動去 ZooKeeper 中更新配置,這使得集群管理更為便捷。

下面給出一張 Zookeeper 和 KRaft的對比圖:

總結

本文,我們分析了為什么 Kafka 要移除 ZooKeeper,主要原因有兩個:ZooKeeper不能滿足 Kafka的發(fā)展以及 Kafka想創(chuàng)建自己的生態(tài)。在面臨越來越復雜的數據流處理需求時,KRaft 模式為 Kafka 提供了一種更高效、簡潔的架構方案。不論結局如何,Kafka 和 ZooKeeper曾經也度過了一段美好的蜜月期,祝福 Kafka 在 KRaft模式越來越強大,為使用者帶來更好的體驗。

責任編輯:趙寧寧 來源: 猿java
相關推薦

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2021-04-21 12:29:45

KafkaZookeeper模型

2013-01-05 09:19:18

OpenFlowSDN

2021-04-21 17:54:02

KafkaZookeeper場景

2022-08-15 08:27:02

基站網絡

2015-08-06 10:14:15

造輪子facebook

2013-03-12 14:30:09

Ubuntu操作系統(tǒng)

2024-02-26 21:15:20

Kafka緩存參數

2020-12-23 16:02:42

操作系統(tǒng)紅帽CentOS

2025-09-01 02:15:00

JavaScript框架成本曲線

2014-08-25 10:00:18

開源

2019-03-19 08:59:13

物聯網IOT技術

2019-01-14 07:28:56

大數據云計算互聯網

2017-04-05 16:40:45

2021-02-11 13:30:56

Nodejs源碼c++

2017-09-08 08:35:16

Android代碼API設計

2015-05-12 11:04:42

Java EE學習Java EE

2019-11-27 10:25:15

SaaS云端IT架構

2019-12-26 14:52:31

微軟CortanaAndroid

2019-09-30 07:50:51

ITOps云端ITOM
點贊
收藏

51CTO技術棧公眾號