Kafka 写入原理 读原理 生产发送ack Isr 高水位

Kafka是由Apache软件基金会开发的一个开源流处理平台,用Scala和Java编写,是一个高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。以下是关于Kafka的一些基本原理和概念的解释:

  1. 写入原理:
  • Kafka的写入操作主要是将数据发送到指定的topic的partition中。
  • 当生产者发送消息时,它会根据消息的key和partition的数量来决定将消息发送到哪个partition。如果没有指定key,那么Kafka会采用轮询的方式将数据发送到各个partition。
  • Kafka的写入操作是异步的,生产者将消息发送到broker后,broker会立即返回一个ack(确认)消息给生产者,表示消息已经被接收。但是此时消息可能还没有被写入到磁盘中,只是被暂存在内存中。
  • Kafka使用了一种叫做“日志段”(Log Segment)的数据结构来存储消息。每个partition都由多个日志段组成,每个日志段都包含了一定数量的消息。当新的消息到来时,Kafka会将其追加到最新的日志段的末尾。
  • 为了保证数据的可靠性,Kafka还会将消息写入到磁盘中。这个过程是异步的,由后台线程负责完成。当消息被写入到磁盘后,对应的日志段就会被标记为“可刷盘”(flushable),表示该日志段的数据可以被持久化到磁盘上。
  1. 读原理:
  • Kafka的读取操作主要是从指定的topic的partition中读取数据。
  • 消费者会向Kafka broker发送fetch请求,指定要读取的topic、partition、offset等信息。
  • broker会根据消费者的请求,从对应的partition中读取数据,并返回给消费者。
  • Kafka支持多种读取模式,包括单线程读取、多线程读取、以及基于消费者组的读取等。消费者可以根据自己的需求选择合适的读取模式。
  1. 生产发送ack:
  • 当生产者发送消息到Kafka broker时,broker会返回一个ack消息给生产者,表示消息已经被接收。
  • ack消息中包含了消息的offset和partition信息,生产者可以根据这些信息来确定消息的位置和状态。
  • Kafka支持三种ack模式:acks=0(生产者不等待broker的ack)、acks=1(生产者等待broker的leader写入消息后的ack)、acks=all(生产者等待broker的leader和所有follower都写入消息后的ack)。不同的ack模式会影响消息的可靠性和延迟性。
  1. ISR(In-Sync Replicas):
  • ISR是Kafka中用于表示与leader保持同步的follower列表的集合。只有被写入ISR列表里面的follower才会参与leader的选举和消息的同步。
  • 当一个follower长时间未与leader同步或者数据落后太多时,它会被移出ISR列表。此时该follower不再参与leader的选举和消息的同步。
  • ISR列表的维护对于Kafka的高可用性和数据可靠性非常重要。如果ISR列表中的follower数量太少或者没有,那么Kafka可能会降低写入性能或者面临数据丢失的风险。
  1. 高水位(High Watermark):
  • 高水位是Kafka中用于表示消费者可以安全读取到的最新消息的offset的标记。
  • 在每个partition中,Kafka都会维护一个高水位线。只有当消息的offset大于等于高水位线时,该消息才会被消费者读取到。
  • 高水位线的位置会随着消息的写入和消费者的读取而不断变化。当新的消息被写入到partition中时,高水位线会向前移动;当消费者读取消息时,高水位线也会相应地调整。
  • 通过控制高水位线的位置,Kafka可以实现消息的持久化存储和消费者的精确控制读取位置等功能。

以上信息仅供参考,如需更专业的解释,建议咨询相关技术人员或查阅相关书籍资料。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值