Kafka基础架构

 

1)Producer :消息生产者,就是向kafka broker发消息的客户端;

2)Consumer :消息消费者,向kafka broker取消息的客户端;

3)Consumer Group (CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内  消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

4)Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

5)Topic :可以理解为数据库中的一张表,生产者和消费者面向的都是一个topic;

6)Partition:一个topic可以分为多个partition(可以理解为HBase中的region),每个partition是一个有序的队列。(分区的好处是实现topic的负载均衡,对消费者可以提高并发度,提高效率);

7)Replica:一个topic的每个分区都有若干个副本,一个leader和若干个follower(replica 副本数目不能大于 broker 节点的数目,否则报错)。

8)leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是leader(负责读写)。

9)follower:每个分区多个副本中的“从”,实时从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的leader(只负责备份)。

10)offset:每一条数据都有一个 offset,是数据在该 partition 中的唯一标识(其实就是消息的索引号),各个 consumer 会保存其消费到的 offset 位置,这样下次可以从该 offset 位置开始继续消费,

consumer 的消费 offset 保存在一个专门的 topic( consumer_offsets)中;

 

Message

新版本的message中各个字段的含义介绍如下:

  1. crc:占用 4 个字节,主要用于校验消息的内容;
  2. magic:这个占用 1 个字节,主要用于标识 Kafka 版本。Kafka 0.10.x magic 默认值为 1
  3. attributes:占用 1 个字节,这里面存储了消息压缩使用的编码以及 Timestamp 类型。目前 Kafka 支持gzip、snappy 以及 lz4(0.8.2 引入) 三种压缩格式;后四位如果是 0001 则表示 gzip 压缩, 如果是 0010 则是 snappy 压缩,如果是 0011 则是 lz4 压缩,如果是 0000 则表示没有使用压缩。第4 个 bit 位如果为 0,代表使用 create time;如果为 1 代表 append time;其余位(第 5~8 位)保留;
  4. key length:占用 4 个字节。主要标识 Key 的内容的长度;

  5. key:占用 N 个字节,存储的是 key 的具体内容;
  6. value length:占用 4 个字节。主要标识 value 的内容的长度;
  7. value:value 即是消息的真实内容,在 Kafka 中这个也叫做 payload。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值