Kafka基本概念

分区及副本

主题是逻辑上的概念,它还可以细分为多个分区,Kafka中分区可以分布在不同的Broker上,也就是说一个主题可以横跨多个Broker,以此来提供比单个broker更强大的性能

offset是消息在分区的唯一标识,Kafka通过它来保证消息在分区内的顺序性,不过offset并不是跨分区的,也就是说Kafka保证分区有序而不是主题有序
每一条消息被发送到Broker之前,会根据分区规则选择存储到哪个具体的分区。如果分区规则设定的合理,所有消息可以被均匀地分配到不同的分区中

Kafka为分区引入了多副本(Replica)机制,通过增加副本数量可以提升容灾能力。同一分区的不同副本中保存的相同的消息(在同一时刻副本间并非完全一样),副本之间是一主多从的关系,其中leader副本负责处理读写请求,follower副本之负责与leader副本的消息同步。副本处于不同的broker中,当leader副本出现故障时,从follower副本中重新选举新的leader副本对外提供服务。

分区中所有副本统称为AR(Assigned Replicas)
所有与ledaer副本保持一定程度上同步的副本(包括leader副本在内)组成ISR(In-Sync Replicas)
leader副本负责维护和跟踪ISR集合中所有follower副本的滞后状态,当follower副本落后太多或失效时,leader副本会把它从ISR集合中剔除。如果OSR(Out-of-Sync Replicas)集合中有follower副本追上来了leader副本,那么ledaer副本会把它从OSR转移到ISR。默认情况下,当ledaer副本发生故障时,只有在ISR集合中才有资格被选举为新的leader。

LEO与HW

ISR与HW(High Watermark)和LEO(Log End Offset)也有紧密的关系
HW标识了一个特定的消息偏移量offset,消费者只能拉到这个offset之前的消息
LEO标识当前日志文件下一条待写入消息的offset,相当于当前日志分区中最后一条消息的offset + 1
分区ISR集合中每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW

1
假设否个分区ISR集合中有3个副本,此时分区的LEO和HW都为3。消息3和消息4从生产者发出之后会被存入ledaer副本
2
消息写入leader副本之后,follower副本会发送拉取请求来拉取消息3和消息4进行消息同步
3
在同步过程中,不同的follower副本的同步效率也不尽相同。在某一个时刻,第一个follower完全跟上了leader副本而第二个follower只同步了消息3,如此leader副本的LEO为5,follower1的LEO为5,follower2的LEO为4,那么当前分区的HW取最小值4,此时消费者可以消费到offset为0至3之间的消息

服务端配置

  • log.dirlog.dirs:配置Kafka日志文件的存放的根目录,默认/tmp/kafka-logs
  • message.max.bytes:指定broker所能接收消息的最大值,默认1000012B,约等于976.6KB。如果需要修改这个参数,那么还要考虑max.request.size(客户端参数)、max.message.bytes(topic端参数)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值