Skip to content

基本概念

Broker : 和AMQP里协议的概念一样, 就是消息中间件所在的服务器

Topic(主题) : 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)

Partition(分区) : Partition是物理上的概念,体现在磁盘上面,每个Topic包含一个或多个Partition.

Producer : 负责发布消息到Kafka broker

Consumer : 消息消费者,向Kafka broker读取消息的客户端。

Consumer Group(消费者群组) : 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

offset 偏移量: 是kafka用来确定消息是否被消费过的标识,在kafka内部体现就是一个递增的数字

kafka消息发送的时候 ,考虑到性能 可以采用打包方式发送, 也就是说 传统的消息是一条一条发送, 现在可以先把需要发送的消息缓存在客户端, 等到达一定数值时, 再一起打包发送, 而且还可以对发送的数据进行压缩处理,减少在数据传输时的开销

replicas 副本 可以确保某个服务器出现故障时,确保数据依然可用

幂等性,

Kafka引入了 Producer ID(PID)和 Sequence Number的概念。

PID:每个Producer在初始化时,都会分配一个唯一的PID,这个PID对用户来说,是透明的。

Sequence Number:针对每个生产者(对应PID)发送到指定主题分区的消息都对应一个从0开始递增的Sequence Number。

事务

initTransactions(初始化事务):要使用Kafka事务,必须先进行初始化操作

beginTransaction(开始事务):启动一个Kafka事务。

sendOffsetsToTransaction(提交偏移量):批量地将分区对应的offset发送到事务中,方便后续一块提交。

commitTransaction(提交事务):提交事务。

abortTransaction(放弃事务):取消事务

当kafka中没有初始offset或offset超出范围时将自动重置offset

earliest:重置为分区中最小的offset;

latest:重置为分区中最新的offset(消费分区中新产生的数据);

none:只要有一个分区不存在已提交的offset,就抛出异常;

配额(Quotas)

更新于:

note