Kafka-Record(消息格式)

作者: 闫文亮304 | 来源:发表于2018-05-24 18:16 被阅读38次

    注:本文依赖于kafka-0.10.0.1-src

    kafka消息格式是经过多个版本的演变的,本文只说0.10.0.1版本的消息格式。

    消息格式如图1所示:

图1

    CRC:用于校验消息内容。占4个字节 

    MAGIC:用于标识kafka版本,默认是1。占1个字节

    ATTRIBUTES:用于存储消息压缩使用的编码以及Timestamp类型。这个版本仅支持 gzip、snappy、lz4三种压缩格式。后三位如果是000则表示没有使用压缩,如果是001则表示是gzip压缩,如果是010则是snappy压缩,如果是011则是snappy压缩。第4位(从右数)如果为0,代表使用create time,如果为1代表append time。其余位保留。占1个字节

    TIMESTAMP:时间戳。占8个字节

    KEY_SIZE:用于标识KEY内容的长度K。占用4个字节

    KEY:存储的是KEY的具体内容。占用K个字节。

    VALUE_SIZE:主要标识VALUE的内容的长度V。占用4个字节。

    VALUE:消息的真实内容。占用V个字节


    Record实际上是用Java NIO ByteBuffer存储的,那我们如何将一个消息写入到Record的ByteBuffer里面呢?

    说简单点,其实就是把上面说的字段给Record传过来然后依次放入ByteBuffer中就可以了,但这中间利用了Compressor压缩器的压缩功能,我们后续会说一下Compressor压缩器,这里就先不介绍了。

    还有一点,Record的写入是支持数据分包的,也就是一个完整的VALUE值可以通过valueOffset和valueSize来指定偏移和这次写入的数据大小来进行分包操作,这样就可以将一个完整的消息,分成多个Record。如果valueSize是负数,就表示从valueOffset开始到末尾的数据都写入。

相关文章

  • Kafka-Record(消息格式)

    注:本文依赖于kafka-0.10.0.1-src kafka消息格式是经过多个版本的演变的,本文只说0....

  • Kafka消息格式

    Key:消息键,对消息做partition时使用,即决定消息被保存到某个topic下的哪个partition。 V...

  • kafka消息格式

    kafka发送消息是有消息格式的,有三个版本V0,V1,V2 V0版本:主要指kafka0.10.0.0之前的版本...

  • RTMP消息格式

    set chunk size 传输数据包的时候是已chunk为基础 传输 比如4000字节数据 设置chunk 位...

  • Flink 嵌套json 解析成Table

    背景 JSON作为常用的数据格式,在消息中间件中用json做为消息格式也很常见。在flink table中消息可以...

  • MQTT消息格式之SUBSCRIBE消息分析

      物联网最近曝光率越来越高。虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M...

  • MQTT消息格式之SUBACK消息分析

    在上一节中(MQTT消息格式之SUBSCRIBE(消息订阅)消息分析),客户端发送了订阅的消息,这个时候,服务器端...

  • iOS9和iOS10推送区别

    收到消息数据格式区别 要根据具体数据格式进行解析,以适配iOS10+。 收到远程推送消息几种情况处理 前台接收消息...

  • 【Kafka零基础学习】Broker Produce一张图详解

    Produce消息格式 注意: 此消息格式只针对api_key为0,api_version为2。 字段说明 Req...

  • 常用的跨语言通信方案

    常用的跨语言通信方案 传统的跨语言通信方案: 基于SOAP消息格式的WebService 基于JSON消息格式的R...

网友评论

    本文标题:Kafka-Record(消息格式)

    本文链接:https://www.haomeiwen.com/subject/jxusjftx.html