一、分区策略
二、ISR(in-sync replica set):与leader同步的follower
每个partition收到消息,需要给producer发送ack。producer收到ack会继续发送下一条,否则重复发送
partition发送ack时机
leader同步follower后发送ack,这样leader挂了数据不会丢失
全部follower同步后再给producer发送ack
follower从leader同步完成后发送ack给leader,如果超时(replica.lag.time.max.ms)不发送,则被踢出ISR
leader故障,会从ISR选出leader
三、ack机制
- ack参数配置(request-required-acks):
request-required-acks:-1, follower全部同步完后leader在返回acks给producer;数据不丢失,延迟性差
request-required-acks:1, leader成功收到数据就返回acks;leader没有持久化就挂了,会丢数据
request-required-acks:0, producer不等leader返回acks就继续发送消息
- 幂等 enable.idempotence=true,producer初始化时会分配一个pid,发往partition的数据会带上sequence number,broker会对进行缓存,相同的数据broker只会缓存一条
四、数据一致性
Top comments (0)