Kafka 简介

本文深入探讨Kafka的集群角色、副本机制、leader选举、数据存储、offset查找、分区与集群消费。Kafka通过磁盘顺序写入、zero-copy技术以及数据持久化实现高吞吐,同时利用分区和副本保证容错性。其消息查找涉及segment文件的索引和数据文件,确保高效检索。Kafka的负载均衡策略确保了消息的可靠传递。
摘要由CSDN通过智能技术生成

问题:

  • 集群角色
  • 副本
  • leader选举
  • 数据存储
  • 通过offset查找message
  • toptic 分区
  • 集群消费

集群角色

每个分区有一个为leader,其他都为follower,leader处理partition的所有读写请求,与此同时,follower会被动定期地去复制leader上的数据。 性能受最后一个同步数据的分区界节点决定。

副本

kafka中的副本机制是以分区粒度进行复制的,我们在kafka中创建 topic的时候,都可以设置一个复制因子,这个复制因子决定着分区副本的个数,如果leader 挂掉了,kafka 会把分区主节点failover到其他副本节点,这样就能保证这个分区的消息是可用的。

leader选举

如果某个分区的Leader挂了,那么其它跟随者将会进行选举产生一个新的leader,之后所有的读写就会转移到这个新的Leader上,在kafka中会在Zookeeper上针对每个Topic维护一个称为ISR(in-sync replica,已同步的副本)的集合,显然还有一些副本没有来得及同步。只有这个ISR列表里面的才有资格成为leader(先使用ISR里面的第一个,如果不行依次类推,因为ISR里面的是同步副本,消息是最完整且各个节点都是一样的)。

数据存储

每一个partiton是一个目录,一个目录里面被分成多个segment(段)数据文件,segment数据文件由2大部分组成,分别为index file和data file,此2个文件一一对应,成对出现,后缀”.index”和“.log”分别表示为segment索引文件、数据文件.

通过offset查找message

例如读取offset=368776的message,需要通过下面2个步骤查找。

第一步查找segment file 上述图2为例,其中00000000000000000000.index表示最开始的文件,起始偏移量(offset)为0.第二个文件00000000000000368769.index的消息量起始偏移量为368770 = 368769 + 1.同样,第三个文件00000000000000737337.index的起始偏移量为737338=737

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值