详解kafka基础(一)

文章目录

        • [0. kafka主要构成组件:](#0. kafka主要构成组件:)
        • [1. 主题(Topics)](#1. 主题(Topics))
        • 2.分区(Partitions)
        • 3.Brokers
        • [4. 复制(Replication):kafka通过复制实现容错](#4. 复制(Replication):kafka通过复制实现容错)
        • 5.消费方(producers)
        • 6.消费方(consumers):读取消息从topic,响应事件流
        • [7. Confluent Schema Registry:](#7. Confluent Schema Registry:)
        • [8.kafka connect:集成外部系统到kafka集群](#8.kafka connect:集成外部系统到kafka集群)
        • [9.Stream Processing](#9.Stream Processing)
        • [10.Confluent 商业kafka介绍](#10.Confluent 商业kafka介绍)
0. kafka主要构成组件:
1. 主题(Topics)

topics以日志的形式存储数据

以接受的顺序存储消息

以主题组织数据

从其他主题派生主题

topic不是一个队列,是一条日志,是有序不可变的记录

kafka 消息细节(消息数据结构)


key:是一个唯一约束的ID

日志保存和压缩(log retention and compaction):

2.分区(Partitions)


消息以无序的方式进入分区(没有key),采用消息以轮询的方式进入分区


消息以有序的方式进入分区(有key),通过采用hash取模操作,相同的key总被写到同一个分区

3.Brokers



kafka4.0采用KRaft(基于raft协议),协调管理元数据,不再采用zookeeper

4. 复制(Replication):kafka通过复制实现容错

kafka复制分区跨brokers

如果kafka leader broker 挂掉,集群会在剩余的分区中选择新的leader

kafka 客户端从leader进行读写消息

为了性能,kafka客户端,可以从follwers进行读取数据

5.消费方(producers)

生产方发送消息到kafka

6.消费方(consumers):读取消息从topic,响应事件流


偏移量追踪(偏移量提交):offset commit:
kafka会记录每条已消费消息的偏移量;它能确保如果消费者离线,还能从上次中断的地方继续处理 。这些偏移量会提交回 Kafka 本身,并存储在一个内部主题中。如果消费者崩溃后重新启动,它会读取自己最后提交的偏移量,继续处理而不会丢失数据。

消费组伸缩(scaling with Consumer Groups):

消费方重新平衡(Rebalancing):

为了扩展处理能力,Kafka 支持消费者组。同一组中的所有消费者共同承担从topic分区读取数据的工作。Kafka会将每个分区分配给该组中的一个消费者 , 同一组中不会有两个消费者从同一个分区读取数据。这实现了并行处理:

  • 如果一个主题有三个分区,且组中有三个消费者,则每个消费者会独立处理来自一个分区的消息。

  • 如果添加更多消费者,Kafka 会自动在它们之间重新平衡分区。

  • 如果某个消费者发生故障,其分区将重新分配给剩余的消费者,以维持处理。

kafka的基于日志设计即消费数据不删除数据。 多个消费者在不同的消费组,可以读取相同的消。这也就允许独立的应用处理相同的事件流不冲突。

消费者从 Kafka 中检索数据并进行处理。通过消费者组,可以实现水平扩展、并行处理并保证容错能力,同时能保持每个分区内消息的完整性和顺序。

7. Confluent Schema Registry:
  • 具有结构化格式的消息被称作schema

  • 提供了一个元数据服务层.是一个独立的服务,存储和管理schema

Schema Registry工作机制:

​ 生产者发送消息时,首先会通过REST API 联系 Schema Registry 来注册schema(如果是新的schema)。生产者会在消息中包含schema ID,然后再将其发送到 Kafka 主题。此 ID 允许消费者在收到消息时查找schema,确保他们知道如何正确地反序列化和翻译消息。

​ 在消费者端,消费者会根据 Schema Registry 检查消息中的Schema ID。如果Schema符合预期,则继续消费数据。如果不符合,消费者可能会抛出异常,表明它无法处理该版本的模式。此机制可防止消费者在消息格式意外更改时中断服务。

Schema兼容性规则::可以帮助管理schema优雅的变更

  • 向前兼容(Forward Compatibility):旧的消费者能够读取由较新的schema生成的消息
  • 向后兼容(Backward Compatibility):新的消费者能够读取用旧schema生成的消息
  • 全兼容(Full Compatibility):保存向前和向后兼容

Schema序列化格式:

Avro转java

Schema Registry主要职责:

  • 集中式Schema管理 : 所有生产者和消费者对消息格式拥有共同的理解。
  • 容性强制 :通过在生产方和消费者中验证Schema,防止重大变更。
  • 治理与协作 :团队可以使用 IDL 文件作为共享契约,安全地协商 Schema变更。
  • 编译时检查 :可以在部署代码之前验证兼容性,避免运行时意外。
8.kafka connect:集成外部系统到kafka集群




9.Stream Processing

实时流处理器:

  • 窗口聚合(例如,统计每分钟的页面浏览量)
  • 流到表的连接(例如,使用用户个人资料丰富点击流数据)
  • 事件过滤和重复数据去重
  • 对延迟或乱序数据的恢复能力

​ 流处理框架专为大规模管理状态、排序和容错而设计。

Flink是事实的流处理标准

流处理选型对比:Flink VS kafka streams

flink SQL




10.Confluent 商业kafka介绍