kafka基本概念

一个kafka架构包含多个producer,多个broker,多个Consumer,以及一个zookeeper集群。zookeeper是kafka用来负责集群元数据的管理、控制器的选举等操作。Producer将消息发送到Broker,Broker负责将收到的消息储存在磁盘中,而Consumer负责从Broker订阅并消费消息

Producer:生产者。创建消息,将其投递到kafka

Consumer:消费者。连接kafka并接受消息,进行相应的业务逻辑处理

Broker:服务代理节点。可以简单地看作一个独立的kafka服务节点或kafka服务实例

Topic:主题。kafka中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费。

Partition:分区。主题是一个逻辑上的概念,它可以细分成多个分区,一个分区只属于一个主题,很多时候也会把分区称为主题分区。同一主题下的不同分区包含的消息是不同的,分区在储存层面可以看作一个可追加的日志文件,消息在被追加到分区日志文件的时候都会分配到一个特定的偏移量(offset),offset是消息在分区的唯一标识,kafka通过它来保证消息在分区内的顺序性,不过offset并不跨分区,也就是说,kafka保证的是分区有序而不是主题有序。kafka的分区可以分布在不同的服务器上,也就是说一个主题可以横跨多个broker。

AR:Assigned Replicas 分区中所有副本统称为AR

ISR:In-Sync Replicas 所有与副本保持一定程度同步的副本(包括leader副本在内)组成ISR

OSR:Out-of-Sync Replicas 与leader副本同步滞后过多的副本(不包括leader副本)组成OSR

AR=ISR+OSR

HW:High Watermark 高水线,它标识了一个特定的消息偏移量,消费者只能拉取到这个offset之前的消息

LEO:Log End Offset 它标识当前日志中下一条消息写入消息的offset

ISR是AR集合的一个子集,消息会先发送到leader副本,然后follwer副本才能从leader副本中拉取消息进行同步,同步期间内follwer副本相对于leader副本而言会有一定程度的滞后,这个滞后的范围可以通过参数配置。leader副本负责维护和跟踪ISR集合中所有follwer副本的滞后状态,当follwer副本落后太多或者失效时,leader副本会把它从ISR集合中剔除,如果OSR集合中的follwer副本追上了leader副本,则leader副本会把它从OSR转移至ISR集合里面,当leader副本发生故障了,选举只会从ISR集合副本里面选举,永远不会考虑OSR集合。

ISR与HW 和LEO的关系

如下图一,其中leader副本写入消息4、5,ISR集合中的follwer1,follwer2还未同步leader的消息,现在HW为3 ,消费者可以获取到1至3的消息

图二中follwer1同步了消息4、5,follwer2同步了消息4,此时HW为4,消费者可以获取1至4的消息

若follwer2同步了消息4、5,则HW会变成5,消费者可以获取1至5的消息

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值