什么是 Kafka 中的消息?它由哪些部分组成

在 Apache Kafka 中,消息是其核心数据单元,是生产者(Producer)和消费者(Consumer)之间传递信息的载体。它是一个分布式的流处理平台,旨在提供高吞吐量、可扩展和可靠的消息系统。 每一条发布到 Kafka 集群的消息都有一个类别,这个类别被称为主题(Topic)。

Kafka 消息的组成部分

一个 Kafka 消息由多个部分组成,主要包括:

  • 键(Key): 消息的键,是一个可选的字节数组。 如果生产者在发送消息时指定了键,那么 Kafka 会根据键的哈希值将消息路由到特定分区,这可以保证具有相同键的消息总是被发送到同一个分区中,从而确保了消息的顺序性。

  • 值(Value): 消息的实际内容,也是一个字节数组。 这是消息的主要数据载体,生产者可以根据需要选择合适的序列化方式对消息内容进行编码。

  • 时间戳(Timestamp): 消息的时间戳,可以由生产者在创建消息时设置,也可以在消息被写入到 Kafka Broker 时由系统自动添加。

  • 头部信息(Headers): 消息的头部信息,允许用户添加一些自定义的元数据,以键值对的形式存在。

  • 元数据(Metadata): 除了上述核心部分,Kafka 消息在存储和传输过程中还会附加一些元数据,包括:

    • 偏移量(Offset): 一个唯一的序列号,用于标识消息在分区中的位置。
    • 分区(Partition): 消息所属的分区编号。
    • 魔数(Magic Byte): 用于标识消息格式版本的字节。
    • 校验码(CRC32): 用于验证消息完整性的循环冗余校验码。
    • 属性(Attributes): 用于存储一些消息属性,例如压缩类型、时间戳类型等。

一定要注意的是,为了提高效率,生产者可以将多条消息打包成一个批次(Batch)进行发送。 在这种情况下,批次本身也会包含一些元数据,例如起始偏移量、批次长度等。

相关推荐
霸道流氓气质8 小时前
分布式系统设计:技术解析与实践
分布式
ACP广源盛1392462567310 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
汽车仪器仪表相关领域14 小时前
KRYPTON坚固型IP67 EtherCAT总线数据采集模块:工业级分布式采集方案
分布式·功能测试·汽车·压力测试·可用性测试
霸道流氓气质16 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
naierfengdian18 小时前
分布式风电助力乡村能源转型的技术路径
分布式·能源
霸道流氓气质19 小时前
RedLock:Redis 分布式锁的高可用方案
数据库·redis·分布式
DLYSB_19 小时前
Kafka 消费倾斜死锁与 Partition 掉队:我用 Rust 写了个“数据管道物理哨兵”,比 Grafana 报警快了 18 秒
rust·kafka·grafana·报警灯
hhzz19 小时前
《深度学习框架PyTorch入门与实践》系列:09-分布式与并行训练之DataParallel、DDP与Horovod
pytorch·分布式·深度学习
creator_Li20 小时前
Kafka消费者offset提交
kafka
TDengine (老段)21 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine