Kafka的概念详解

在这里插入图片描述

Producer

生产者即数据的发布者,该角色将消息发布到Kafka的topic中。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息,存储到一个partition中,生产者也可以指定数据存储的partition。

Consumer

消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。

Topic

在Kafka中,使用一个类别属性来划分数据的所属类。划分数据的这个类称为topic。如果把Kafka看做为一个数据库,topic可以理解为数据库中的一张表。topic的名字即为表名。

Partition

topic中的数据分割为一个或多个partition。每个topic至少有一个partition。每个partition中的数据使用多个segment文件存储。partition中的数据是有序的。partition间的数据丢失了数据的顺序。如果topic有多个partition。消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将partition数目设为1.

Partition Offset

每条消息都有一个当前Partition下唯一的64字节的offset。它指明了这条消息的起始位置。

Replicas of partition

副本是一个分区的备份。副本不会被消费者消费,副本只用于防止数据丢失。即消费者不从为follower的partition中消费数据,而是从为leader的partition中读取数据。副本之间是一主多从的关系。

Broker

Kafka集群包含一个或者多个服务器,服务器节点称为broker。broker存储topic的数据。如果某个topic有N个partition,集群有N个broker,那么每个broker存储该topic 的一个partition。如果topic有N个partition,集群有N+M个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个broker不存储该topic的partition数据。如果topic有N个partition,集群broker数量小于N个,那么一个broker存储该topic的一个或多个partition。在实际生产场景中,尽量避免这种情况的发生,这种情况容易导致Kafka集群数据不均衡。

Leader

每个partition有多个副本,其中有且只有一个作为leader,leader是当前负责数据的读写的partition。

Follower

Follower跟随leader,所有写请求都通过leader路由,数据变更会广播给所有follower,follower与leader保持数据同步,如果leader失效,刚从follower中选举出一个新的leader。当follower与leader挂掉、卡住或者同步太慢,leader会把这个follower从ISR列表中删除,重新创建一个follower。

ZooKeeper

zookeeper负责维护和协调broker。当Kafka系统中新增了broker或者某个broker发生故障失效时,由zookeeper通知生产者和消费者。生产者和消费者依据zookeeper的broker状态信息与broker协调数据的发布和订阅任务。

AR(Assigned Replicas)

分区中所有的副本统称为AR。

ISR(In-Sync Replicas)

所有与leader部分保持一定同步的副本组成ISR。

OSR(Out-of-Sync-Replicas)

与leader副本同步滞后过多的副本。

HW(High Watermark)

高水位,标识了一个特定的offset。消费者只能拉取到这个offset之前的消息。

LEO(Log End Offset)

即日志末端位移,记录了该副本底层日志中下一条消息的位移值。注意是下一条消息。也就是说,如果LEO=10,那么表示该副本保持了10条消息,位移值范围是[0,9]。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值