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