Kafka 4.0.0震撼来袭,彻底摒弃Zookeeper

Apache Kafka 4.0.0 版本发布,带来了众多新功能和改进。该版本是第一个完全不依赖 Apache ZooKeeper 运行的主要版本,默认以 KRaft 模式运行,简化了部署和管理。此外,还引入了新的消费者组协议、提供对 Queues for Kafka 的早期访问、更新了 Java 版本要求、移除了一些旧的 API 和功能等。

1、重要特性说明

  • 无 ZooKeeper 运行

    Apache Kafka 4.0 标志着第一个完全没有 Apache ZooKeeper 运行的主要版本。默认以 KRaft 模式运行,简化了部署和管理,降低了运营开销,增强了可扩展性并简化了管理任务。

  • 新消费者组协议

    Kafka 4.0 带来了 KIP-848 的全面可用性,引入了强大的新消费者组协议,显著提高再平衡性能,减少停机时间和延迟,增强了消费者组的可靠性和响应能力。

  • Queues for Kafka

    提供对 Queues for Kafka(KIP-932)的早期访问,使 Kafka 能够直接支持传统的队列语义,扩展了 Kafka 的多功能性。

  • Java 版本要求更新

    Kafka 4.0 中,Kafka Clients 和 Kafka Streams 需要 Java 11,而 Kafka Brokers、Connect 和 Tools 现在需要 Java 17。

  • Kafka Streams 改进

    KIP-1104 允许在 KTable 连接中从键和值中提取外键;KIP-1112 允许自定义处理器包装;KIP-1065 为 ProductionExceptionHandler 添加 “retry” 选项;KIP-1091 改进了 Kafka Streams 运算符指标。

2、使用新特性的注意点

ZooKeeper 依靠自己强一致性的特点,一直在分布式届延续着自己的传奇,很多软件都会选择它作为分布式集群的载体,如之前的4.0之前的Kafka、spark、hadoop、dubbo的注册中心等。但是Kafka在以强大推吐量著称,强依赖强一致性的ZooKeeper,势必带来一定的性能瓶颈。ZooKeeper 增加了系统的复杂性,维护和管理 ZooKeeper 集群需要额外的资源和专业知识。KRaft作为Kafka内部的算法机制直接替代ZooKeeper,使得部署和维护都变得简单了许多。

Raft 协议被用于分布式存储系统中,以确保数据在多个节点间的一致性和可用性。例如,分布式键值存储(如 etcd、Consul)和分布式数据库(如 TiKV)都采用了 Raft 协议。KRaft则是用户Kafka内部的专属协议。

新消费者组协议的核心就是增量式重平衡,不再依赖全局同步屏障,而是由组协调器(GroupCoordinator)驱动。将凭屏障的颗粒度有全局编程局部,细粒度的控制消费者。只有更改的消费者和分区变化时只会触发对应的屏障,其他不受影响。这也明显的提高处理的速度。

Kafka 4.0 通过引入共享组 (Share Group) 机制提供了类似队列的功能。不过,它并非真正意义上的队列,而是利用 Kafka 已有的主题(Topic)和分区(Partition)机制,结合新的消费模式和记录确认机制来实现类似队列的行为。

Kafka 4.0对JDK也有要求,Kafka 客户端和 Kafka Streams 需要 Java 11,Kafka Brokers、Connect工具需要 Java 17。你还在坚持着JDK你发任你发,我用JAVA8的态度么,如果这样,Kafka 4.0的新特性也将无法尝试。

3、小结

各种软件都在拥抱新的变化,不断地兼容新的产品。我们是不是也要去迭代自己的知识库,去学习这些新的东西,要不然就被时代遗弃了。
容新的产品。我们是不是也要去迭代自己的知识库,去学习这些新的东西,要不然就被时代遗弃了。


关注我的公众号:【编程朝花夕拾】,获取首发内容。

<think>好的,我需要帮助用户在CentOS系统上安装Kafka 4.0版本。首先,用户提到的Kafka 4.0可能还处于早期阶段,因为根据引用[2]和引用[4]的信息,Kafka 4.0可能尚未正式发布,或者可能还在开发中。引用[2]提到,Kafka 3.x版本开始弃用Java 8,而Kafka 4.0将完全放弃Java 8,建议使用Java 11或更高版本。因此,我需要确认用户是否确实需要安装Kafka 4.0,或者是否有版本上的误解。 接下来,用户的操作系统是CentOS,具体版本未提及,但根据引用中的例子,可能是CentOS7。需要检查Kafka 4.0的系统要求,特别是Java版本。根据引用[2],Kafka 3.x需要Java 11或更高,而4.0可能要求更高,比如Java 17。因此,用户需要先安装合适的JDK版本。 安装步骤可能包括以下几步:1. 安装Java环境;2. 下载Kafka 4.0的安装包;3. 配置Kafka集群(如果需要);4. 启动Kafka服务。但根据引用[4],Kafka 4.0可能使用KRaft模式(替代ZooKeeper),因此配置步骤可能与旧版本不同,需要参考官方文档。 另外,引用[3]提到了在启动脚本中配置JMX端口和服务器IP,这可能对监控有用,用户可能需要类似配置。同时,引用[1]和[3]中的SASL认证配置可能在需要安全设置时适用,但用户当前的问题未提及安全需求,可能暂时不需要。 需要注意的是,用户提供的引用中并没有直接关于Kafka 4.0安装的详细步骤,尤其是因为4.0可能尚未正式发布,所以可能需要参考最新的官方文档或社区资源。此外,用户可能需要从Apache官网获取正确的下载链接,并确保依赖项满足要求。 最后,生成相关问题需要考虑用户可能的后续需求,比如集群配置、性能优化、常见错误处理等,以及版本升级可能带来的变化。</think>在CentOS系统上安装Kafka 4.0需注意以下关键步骤: ### 一、环境准备 1. **确认Java版本** Kafka 4.0JDK 17或更高版本(参考Kafka 4.0对Java的依赖变化[^2])。使用以下命令安装JDK 17: ```bash sudo yum install java-17-openjdk-devel java -version # 验证安装 ``` 2. **下载Kafka 4.0安装包** 从Apache官网获取最新版本(若4.0已发布): ```bash wget https://downloads.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz tar -xzf kafka_2.13-4.0.0.tgz cd kafka_2.13-4.0.0 ``` ### 二、集群模式配置(KRaft模式) 1. **生成集群ID** Kafka 4.0默认使用KRaft模式(无需ZooKeeper)[^2][^4]: ```bash bin/kafka-storage.sh random-uuid # 输出示例:m6BZb8yRSzmdNvW9kzOoQg ``` 2. **格式化存储目录** 每个节点执行(替`<uuid>`为生成的ID): ```bash bin/kafka-storage.sh format -t <uuid> -c config/kraft/server.properties ``` 3. **配置文件调整** 编辑`config/kraft/server.properties`,设置节点参数: ```properties node.id=1 # 节点唯一ID(集群内不重复) controller.quorum.voters=1@192.168.1.101:9093,2@192.168.1.102:9093 # 控制器节点列表 listeners=PLAINTEXT://:9092,CONTROLLER://:9093 advertised.listeners=PLAINTEXT://192.168.1.101:9092 # 本机IP log.dirs=/tmp/kraft-logs # 日志存储路径 ``` ### 三、启动服务 ```bash # 前台启动(测试用) bin/kafka-server-start.sh config/kraft/server.properties # 后台启动 bin/kafka-server-start.sh -daemon config/kraft/server.properties ``` ### 四、验证安装 1. **创建测试主题** ```bash bin/kafka-topics.sh --create --topic test --partitions 3 --replication-factor 2 --bootstrap-server 192.168.1.101:9092 ``` 2. **查看集群状态** ```bash bin/kafka-metadata-shell.sh --snapshot /tmp/kraft-logs/__cluster_metadata-0/00000000000000000000.log ``` ### 五、配置系统服务(可选) 参考引用[3],创建`/etc/systemd/system/kafka.service`: ```ini [Unit] Description=Kafka KRaft Server After=network.target [Service] User=kafka ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties Restart=on-failure [Install] WantedBy=multi-user.target ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值