0
点赞
收藏
分享

微信扫一扫

Kafka 3.0新版本差异


Kafka core

第一部分:基础升级

弃用对Java 8和Scala 2.12的支持

Kafka 3.0新版本差异_客户端


Kafka 3.0新版本差异_kafka_02

第二部分:kafka Raft 快照

Kafka 2.8.0正式发布了KRaft的先行版,并且支持在KRaft模式下的部署和运行。KRaft模式下的Katka可以充全脱商zookeeper运行,使用自己的基于Raft第法实现的quorum来保证分布式Metadata的一致。这样我们只需要管理和配置一项服务即可,让kafka集群更加具有可扩展性,并且让其能够支持更多的topic和partition。

Kafka 3.0新版本差异_kafka_03


在kafka 的Raft模式下,引入了一个主要的功能是快照:能够为kraft控制器和brokers的元教据分区主题(cluster metadata)提供更加有效的存储,加载和复制这些信息。

Kafka 3.0新版本差异_scala_04

第三部分:KRaft 模式下的生产者ID生成

Kafka controller在3.0完全接管了生成Kafka 生产者ID的责任。Controller在ZK 和 KRaft 模式下都这样做。这让我们离开桥接版本更近了,这将允许用户从使用ZK 的kafka 部署过渡到使用 KRaft的新部署。PID生成在前序的版本中实现使用的是利用 Zookeeper 进行持久性和并发控制的块生成方案。每次代理需要分配一个新的 PID块时,它将使用 zookeeper 的 setData API 来分配下一个块。

Kafka 3.0新版本差异_kafka_05


Kafka 3.0新版本差异_kafka_06

第四部分:Producer将默认启动最强的交付保障

从3.0开始,Kafka Producer 默认开启幂等性和所有副本的交付确认。这使得默认情况下记录交付保证更强。

Kafka 3.0新版本差异_kafka_07

第五部分:增加默认消费者会话超时

Kafka Consumer 的配置属性的默认值session. timeout.ms从 10 秒增加到 45秒。这将允许消费者在默认情况下更好地适应暂时的网络故障,并在消费者似乎只是暂时离开组时避免连续重新平衡。

Kafka 3.0新版本差异_消息队列_08

第六部分:删除对消息格式VO和V1的支持

如果有从事过kafka从 0.11. x以下升级到0.11.x以上版本的程序员应该清楚,kafka为了能保证在升级过程中不会出现停止,可以完成滚动升级的计划,提供了消息格式版本,分别为v0, VI,V3(3.x)等.而目前大部分的kafka的程序员使用的都是V2的消息版本,也就是0.11. x以上的相关版本,故在3.0中将对vO和v1的消息格式进行弃用,不推荐使用其写入.从而在kafka4.0中完全剔除

Kafka Connect

kafka Connect 是一种用于在 Apache Kafka 和其他系统之问可扩展且可靠地流式传输数据的工具。它使快速定义将大量数据移入和移出 Kafka 的连接器变得简单。Kafka Connect 可以摄取整个数据库或从所有应用程序服务器收集指标到 Kafka 主题中,使数据可用于低延迟的流处理。导出作业可以将数据从 Kafka 主题传送到二级存储和查询系统或批处理系统进行离线分析。

Kafka 3.0新版本差异_客户端_09

第一部分:连接API以重新启动连接器和任务

当用户在 Apache Kafka Connect 上运行连接器时,框架会启动连接器Connector一个实例和多个实例Task。这些实例中的任何一个都可能遇到错误。通常,如果ConnectororTask 实例抛出异常。Connect 框架会将该实例标记为失败,并通过 Connect REST API 将其公开为 FAILED。
目前,用户必须使用 REST API 状态方法和/或 JMX 指标来监控每个命名连接器Connector 和Task 实例的运行状况(“状态”),如果这些实例中的任何一个失败,用户必须发出单独的 REST API调用以手动重新启动每个Connector和Task实例。Connect REST API 应该允许用户Connector 使用单个REST API 调用重新启动所有失败的和 Task实例。
在3.0中,使用户能够通过一次调用重新启动所有或仅失败的连接器Connector和Task实例。此功能是附加功能,restartREST API的先前行为保持不变。

第二部分:默认启动连接器客户端覆盖

从Apache Kafka 2.3.0 开始,可以配置 Connect worker 以允许连接器配置覆盖连接器使用的Kafka客户端属性。这是一个广泛使用的功能,在3.0中,默认启用覆盖连接器客户端属性的功能(默认connector. client. config. override. policy设置为All)。

第三部分:启动连接器日志上下文

另一个在2.3.0中引入但到目前为止尚未默认启用的功能是连接器昌志上下文(将连接器上下文添加到connect 工作器的日志中)。这在3.0中发生了变化,连接器上下文默认添加10g4 j到 Connect 工作器的日志模式中.

Kafka Stream

第一部分:开放在流中关于偏移量API

在使用kafka中,我们如果想要跟踪客户端的消息的进度,可以根据其返回的偏移量信息来判断,但是此操作 在kafka的stream中并没有提供,因为stream的客户端中嵌入了多个kafka客户端(发送和消费)

在kafka3.0中对stream客户端开放其偏移量相关的APl,这样所有的客户端可以响应回馈其偏移量信息,以方便对所有任务的进行进度监控工作

Kafka 3.0新版本差异_scala_10

第二部分:新增及更改相关的API

• 1)将TaskMetadata 和 ThreadMetadata迁移到具体内部实现的接口

在原有的版本中TaskMeataData和ThreadMeatadata都是具体的实现类,但是在实际使用中都不需要用户进行实例化,仅使用公开的元数据API,所以在kafka3.0中都将进行分离,形成公共接口,将具体的实现保留为内部类即可

•2)扩展了ReadOnlySessionStore和SessionStore接口中的一组新方法

Kafka 3.0新版本差异_kafka_11


•3)在ProcessorContext类中增加两个新的方法

在kafka3.0 中processorContex增加两个新的方法:currentSystem TimeMs 和 CurrentStream TimeMs.这两个新的方法可以让用户分别查询缓存的系统时间和流时间,起到统一AP的作用

第三部分:更改kafka Streams默认副本因子配置

Streams 配置属性的默认值replication. factor会从1更改为-1。这将允许新的 Streams 应用程序使用在 Katka Broker 中定义的默认复制因子,因此在它们转移到生产时不需要设置此配置值。请注意,新的默认值需要 Katka Brokers 2.5 或更高版本。

Kakfa Kraft Local模式环境搭建

Kakfa Kraft Local模式环境搭建
前提:安装好jdk11

•1.1 下载kafka的版本.
​​​ https://kafka.apache.org/downloads+​​​ 3.0.0
Released September 21. 2021
Source download: kafka-3.0.0-src.taz (asc, sha512)
Binarv downloads:
• Scala 2.12 - kafka 2.12-3.0.0.taz (asc, sha512)
• Scala 2.13 - kafka 2.13-3.0.0.taz (asc, sha512)
We build for multiple versions of Scala. This only matters If you are using Scala and you want a version built for the same Otherwise any version should work (2.13 is recommended).

•1.2 上传至服务器并解压,
cd /export/software/+
tar -zxf kafka 2.13-3.0.0.tgz -C /export/server/
建立软连接
cd /export/server/
In -s kafka 2.13-3.0.0/ kafka.

•1.3 配置kafka storage(存储)
cd /export/server/kafka•
/bin/kafka-storage.sh format -config config/kraft/server.properties
$(./bin/kafka-storage.sh random-uuid).
–Cluster-id

默认会在/tmp/kraft-combined-logs 生产相关元数据信息
kafka的基本使用在Kraft模式和z0okeeper模式下,基本上没有太大的区别,只不过不管是在操作topic还是生者和消费者连接的都是katka的地址

1)创建Topic
./bin/kafka-topics --bootstrap-server localhost: 9092 --create --topic quickstart
2)模拟生产者向主题写消息
./bin/kafka-console-producer–bootstrap-serverlocalhost:9092 --topic quickstart
3)模拟消费者从主题读消息
./bin/kafka-console-consumer --bootstrap-server localhost: 9092 --topic quickstart --from-beginning


举报

相关推荐

0 条评论