kafka基础

Kafka中的消息逻辑单位是Topic,每个Topic包含多个Partition,Partition在磁盘上顺序保存消息。生产者通过message key选择Partition,相同key的消息会写入相同Partition。消费者分为组,每个组内的消费者共享消费进度,一个Partition只能被一个组的唯一消费者消费,不同组并行消费。增加Partition和消费者数量可提升消费速度,通过message key保证有序消费。
摘要由CSDN通过智能技术生成

topic 与 partition
kafka 生产和消费消息的逻辑单位是 topic。每个 Topic 对应多个 partition。每个 partition 对应多个磁盘文件。同一 Partition 内的消息在磁盘上是顺序保存的。

生产者生产的时候需要指定一个 message key。kafka 会根据 message key 按照一定算法选择 partition 并写入对应磁盘文件。message key 相同的消息会写入到相同的 partition。kafka sdk 也提供底层接口,可以在生产的时候直接指定 partition,但很少使用。

一个 topic 可以同时有多个消费者,每个消费者有一个 group,消费者需要自行提交自己的消费进度(partition 偏移量)到 kafka,同一个 group 的所有消费者共享一组消费进度信息,同一个 group 中消费者的数量不能超过 partition 的数量。

下面的图片说明了 partition 与消费者,以及消费进度的关系。
这里写图片描述

下图说明了多个消费 group 的消费进度保存情况
这里写图片描述

所以,我们可以得出下结论:

一条消息只能存在于一个 partition
一个 partition 只能由一个 group 中的唯一消费者消费(一个消费者可以同时消费多个 partition)
同 group 中的消费者相互竞争消费&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值