kafka

kafka简介

kafka是一个消息队列,消息中间价。主要作用是解耦消峰。由生产者(producer),主题(topic),消费者组(consumer)组成。每个broker中有N个Topic(抽象化),每个Topic有N个partition分区。kafka的消费模式是Pull模式,即消费者根据自己的消息处理能力去kafka主动拉取数据,但消费者不能即时知道是否有消息,可能会拉到空的数据。针对这点,kafka的消费者会在消费数据时传入一个时长参数timeout,如果当前没有数据可供消费,consumer会等待一段时间之后再返回。

ack应答机制

作用:解决kafka生产端数据丢失问题

主要分为三种:

ack=0:producer不等待borker的ack,即broker一接收到还没有写有写入磁盘就返回,当broker出现故障的话,数据就会丢失。这个操作速度快效率高,但是数据不安全

ack=1:producer等待broker的ack,即paritition所在的Leader落盘成功后返回ack,如果follewer同步成功之前leader故障,也会造成数据丢失。这个操作效率相对较低,能保证大部分情况的数据安全。

ack=-1(all):producer等待broker的ack,partition的leader和follower全部落盘成功后才返回ack。但如果再follower同步完成后,broker发送ack之前,leader发生了故障,会造成数据重复。

ISR机制

当设置ack=-1的时候,会有一个ISR机制,也就是副本同步机制,保证数据的一致性。通过follower和leader的交互时间来判断,超过某个设定时间就判断该followerGG了,重新换一个follower(前提是有足够的节点)。时间默认位10S,也可以通过自己设置。rerplica.lag.time.max

LEO:每个副本的最后一个offset

HW:所有副本最小的LEO

leader出现故障的话,会从ISR中重新选一个新的leader,为了保证副本之间的一致性,其他的follower会将各自的Log文件高于HW的数据删除掉,然后从新的leader中同步数据

follower出现故障的话,会从ISR中剔除掉,等恢复后,会从Log文件中高HW的数据删除掉,从HW开始向leader同步。当follower的LEO大于等于partrtition的HW,即follower追上Leader之后,就可以重新加入到ISR了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值