Kafka高吞吐低延迟原理

顺序读写

  Kafka将消息记录持久化到本地磁盘中,实际上不管是内存还是磁盘,快或慢关键在于寻址的方式,磁盘分为顺序读写与随机读写,内存也一样分为顺序读写与随机读写。基于磁盘的随机读写确实很慢,但磁盘的顺序读写性能却很高。
  Kafka使用磁盘顺序读写来提升性能,Kafka的message是不断追加到本地磁盘文件末尾的,而不是随机的写入,这使得Kafka写入吞吐量得到了显著提升 。每一个Partition其实都是一个文件 ,收到消息后Kafka会把数据插入到文件末尾。
  这种方法不能删除数据 ,所以Kafka是不会删除数据的,它会把所有的数据都保留下来,每个消费者(Consumer)对每个Topic都有一个offset用来表示 读取到了第几条数据 。
在这里插入图片描述
两个消费者,Consumer1有两个offset分别对应Partition0、Partition1(假设每一个Topic一个Partition);Consumer2有一个offset对应Partition2。这个offset是由客户端SDK负责保存的,一般情况下SDK会把它保存到zookeeper里面。
  如果不删除硬盘肯定会被撑满,所以Kakfa提供了两种策略来删除数据。一是基于时间,二是基于partition文件大小。

Page Cache

Page Cache

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka数据可用的原理如下: 1. 分区复制:Kafka中的每个主题可以被分成多个分区,每个分区可以有多个副本。这些副本分布在不同的Broker上,每个分区都有一个领导者(leader)和零个或多个追随者(follower)。领导者负责处理读写请求,而追随者则复制领导者的数据。 2. ISR(In-Sync Replicas)机制:为了保证数据的一致性和可用性,Kafka引入了ISR机制。只有与领导者保持同步的副本才能被认为是ISR副本,其他落后的副本则被移除。当领导者发生故障时,其中一个ISR副本会被选举为新的领导者。 3. 心跳检测和故障感知:Kafka通过心跳检测机制来检测Broker的健康状态。每个Broker会定期发送心跳消息给控制器节点,如果连续若干次没有收到心跳消息,则认为该Broker故障。控制器节点会负责监控和管理所有的Broker。 4. 自动分区再均衡:在Kafka集群中添加或删除Broker或主题时,会触发自动分区再均衡,以保持各个分区在集群中的均衡分布。再均衡会重新分配分区的领导者和副本,确保数据的可用性和吞吐量。 5. 数据复制和副本同步:Kafka使用异步复制机制将数据从领导者复制到追随者。追随者通过拉取方式从领导者获取数据,然后将数据写入本地日志。通过异步复制,Kafka能够提供吞吐量和延迟的消息传输。 综上所述,Kafka通过分区复制、ISR机制、心跳检测和故障感知、自动分区再均衡以及数据复制和副本同步等机制来实现数据的可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值