Kafka 4.0 发布,彻底移除 ZooKeeper!

[复制链接]
发表于 2025-10-9 04:25:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
迩来 Apache Kafka 4.0 版本发布,这是 Kafka 的一个告急里程碑。Kafka 移除 ZooKeeper 早在几年前就开始预备,4.0 版本是第一个可以完全不利用 ZooKeeper 的版本。
Kafka 4.0 默认允许在 KRaft 模式下,大大简化了集群的摆设和管理,消除了集成 ZooKeeper 的复杂性。
在 KRaft 模式下,一些设置、指标和功能发生了不小的厘革,本日我们来看一下都有哪些改变。
删除了暗码编码相干的设置
这些设置在 ZooKeeper 模式下利用,用来界说和备份暗码,这个密钥用于加密加密敏感数据(如暗码)。须要指定加密的算法和密钥天生方法(如 AES、RSA),并控制密钥长度和加密强度。相干参数如下:
  1. password.encoder.secret
  2. password.encoder.old.secret
  3. password.encoder.keyfactory.algorithm
  4. password.encoder.cipher.algorithm
  5. password.encoder.key.length
  6. password.encoder.iterations
复制代码
在 KRaft 模式下,Kafka 将敏感数据存储在 records,这些敏感数据不须要加密。
移除下面设置
  1. Removed control.plane.listener.name
复制代码
Kafka 依赖 ZooKeeper 管理元数据,但是一些内部操纵(比如 Broker Controller 宁静凡 Broker 之间通讯)依然须要 Kafka 内部控制面板来和谐。
在 KRaft 模式下,Kafka 消除了对 ZooKeeper 的依赖,控制面板功能完全集成到 Kafka 内部。处理处罚脚色明白分开:brokers 处理处罚与数据相干的哀求,而 broker controllers 管理跟元数据相干的哀求。controllers 利用 Raft 协议举行内部通讯,操纵方式与 ZooKeeper 模子差异。利用以下参数来设置控制面板监听器:
  1. controller.listener.names
  2. listeners
  3. listener.security.protocol.map
复制代码
删除优雅停服相干设置
利用外部注册中央,多数情况是须要设置优雅停服的。这些设置在 ZooKeeper 模式下用于界说主动停服的最大重试次数和重试回退时间。它可以低落不测 Controller 变动和数据不同等的风险。
  1. controlled.shutdown.max.retries
  2. controlled.shutdown.retry.backoff.ms
复制代码
在 KRaft 模式下,Kafka 利用 Raft 协议来管理元数据。Broker 关闭过程跟基于仲裁模式的 ZooKeeper 模式差异。Raft 协议的 Controller 切换依赖主动领导者切换,元数据由 Controller 更新,关闭过程更加可靠和高效。
删除了天生 Broker id 相干的设置
这些设置在 ZooKeeper 模式下用于主动天生 Broker id 并控制 Broker id 天生过程。
  1. reserved.broker.max.id
  2. broker.id.generation.enable
复制代码
node id
Kafka在 KRaft 模式下利用 node id 来标识 server。
  1. node.id
复制代码
删除了 Broker 协议版本相干的设置
  1. inter.broker.protocol.version
复制代码
这些设置在 ZooKeeper 模式下用于界说 Broker 之间的通讯协议版本。在 KRaft 模式下,Kafka 利用 metadata.version 来控制集群的特性级别,而且可以利用 bin/Kafka-features.sh 脚本举行管理。
移除 ZooKeeper 相干的动态设置
  1. advertised.listeners
复制代码
在 KRaft 模式下,要修改这些设置,就须要重启 Broker。
删除了领导者不平衡设置
  1. leader.imbalance.per.broker.percentage
复制代码
这个设置只在 ZooKeeper 中利用。用于限定 ZooKeeper 中的推选领导者的频率。
移除 ZooKeeper 相干设置
  1. zookeeper.connect
  2. zookeeper.session.timeout.ms
  3. zookeeper.connection.timeout.ms
  4. zookeeper.set.acl
  5. zookeeper.max.in.flight.requests
  6. zookeeper.ssl.client.enable
  7. zookeeper.clientCnxnSocket
  8. zookeeper.ssl.keystore.location
  9. zookeeper.ssl.keystore.password
  10. zookeeper.ssl.keystore.type
  11. zookeeper.ssl.truststore.location
  12. zookeeper.ssl.truststore.password
  13. zookeeper.ssl.truststore.type
  14. zookeeper.ssl.protocol
  15. zookeeper.ssl.enabled.protocols
  16. zookeeper.ssl.cipher.suites
  17. zookeeper.ssl.endpoint.identification.algorithm
  18. zookeeper.ssl.crl.enable
  19. zookeeper.ssl.ocsp.enable
复制代码
删除了 ZooKeeper 相干监控监控指标
下面参数监控监控网络处理处罚器匀称空闲率:
  1. ControlPlaneNetworkProcessorAvgIdlePercent
复制代码
下面指标监控监控全部处理处罚器上断开的毗连总数:
  1. ControlPlaneExpiredConnectionsKilledCount
复制代码
在 KRaft 模式下,Kafka 提供了网络处理处罚器毗连逾期指标。指标如下:
  1. NetworkProcessorAvgIdlePercent
  2. ExpiredConnectionsKilledCount
复制代码
删除了 ZooKeeper 独有指标
  1. kafka.controller:type=ControllerChannelManager,name=QueueSize
  2. kafka.controller:type=ControllerChannelManager,name=RequestRateAndQueueTimeMs
  3. kafka.controller:type=ControllerEventManager,name=EventQueueSize
  4. kafka.controller:type=ControllerEventManager,name=EventQueueTimeMs
  5. kafka.controller:type=ControllerStats,name=AutoLeaderBalanceRateAndTimeMs
  6. kafka.controller:type=ControllerStats,name=ControlledShutdownRateAndTimeMs
  7. kafka.controller:type=ControllerStats,name=ControllerChangeRateAndTimeMs
  8. kafka.controller:type=ControllerStats,name=ControllerShutdownRateAndTimeMs
  9. kafka.controller:type=ControllerStats,name=IdleRateAndTimeMs
  10. kafka.controller:type=ControllerStats,name=IsrChangeRateAndTimeMs
  11. kafka.controller:type=ControllerStats,name=LeaderAndIsrResponseReceivedRateAndTimeMs
  12. kafka.controller:type=ControllerStats,name=LeaderElectionRateAndTimeMs
  13. kafka.controller:type=ControllerStats,name=ListPartitionReassignmentRateAndTimeMs
  14. kafka.controller:type=ControllerStats,name=LogDirChangeRateAndTimeMs
  15. kafka.controller:type=ControllerStats,name=ManualLeaderBalanceRateAndTimeMs
  16. kafka.controller:type=KafkaController,name=MigratingZkBrokerCount
  17. kafka.controller:type=ControllerStats,name=PartitionReassignmentRateAndTimeMs
  18. kafka.controller:type=ControllerStats,name=TopicChangeRateAndTimeMs
  19. kafka.controller:type=ControllerStats,name=TopicDeletionRateAndTimeMs
  20. kafka.controller:type=KafkaController,name=TopicsIneligibleToDeleteCount
  21. kafka.controller:type=ControllerStats,name=TopicUncleanLeaderElectionEnableRateAndTimeMs
  22. kafka.controller:type=ControllerStats,name=UncleanLeaderElectionEnableRateAndTimeMs
  23. kafka.controller:type=ControllerStats,name=UncleanLeaderElectionsPerSec
  24. kafka.controller:type=ControllerStats,name=UpdateFeaturesRateAndTimeMs
  25. kafka.controller:type=ControllerStats,name=UpdateMetadataResponseReceivedRateAndTimeMs
  26. kafka.controller:type=KafkaController,name=ActiveBrokerCount
  27. kafka.controller:type=KafkaController,name=ActiveControllerCount
  28. kafka.controller:type=KafkaController,name=ControllerState
  29. kafka.controller:type=KafkaController,name=FencedBrokerCount
  30. kafka.controller:type=KafkaController,name=GlobalPartitionCount
  31. kafka.controller:type=KafkaController,name=GlobalTopicCount
  32. kafka.controller:type=KafkaController,name=OfflinePartitionsCount
  33. kafka.controller:type=KafkaController,name=PreferredReplicaImbalanceCount
  34. kafka.controller:type=KafkaController,name=ReplicasIneligibleToDeleteCount
  35. kafka.controller:type=KafkaController,name=ReplicasToDeleteCount
  36. kafka.controller:type=KafkaController,name=TopicsToDeleteCount
  37. kafka.controller:type=KafkaController,name=ZkMigrationState
  38. kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=ElectLeader
  39. kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=topic
  40. kafka.server:type=DelayedOperationPurgatory,name=NumDelayedOperations,delayedOperation=ElectLeader
  41. kafka.server:type=DelayedOperationPurgatory,name=NumDelayedOperations,delayedOperation=topic
  42. kafka.server:type=SessionExpireListener,name=SessionState
  43. kafka.server:type=SessionExpireListener,name=ZooKeeperAuthFailuresPerSec
  44. kafka.server:type=SessionExpireListener,name=ZooKeeperDisconnectsPerSec
  45. kafka.server:type=SessionExpireListener,name=ZooKeeperExpiresPerSec
  46. kafka.server:type=SessionExpireListener,name=ZooKeeperReadOnlyConnectsPerSec
  47. kafka.server:type=SessionExpireListener,name=ZooKeeperSaslAuthenticationsPerSec
  48. kafka.server:type=SessionExpireListener,name=ZooKeeperSyncConnectsPerSec
  49. kafka.server:type=ZooKeeperClientMetrics,name=ZooKeeperRequestLatencyMs
复制代码
末了
移除了这么多设置,摆设不消再思量 ZooKeeper,架构上整齐了太多。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表