DEV Community

testted123456
testted123456

Posted on • Updated on

kafka-producer

一、分区策略

二、ISR(in-sync replica set):与leader同步的follower

  1. 每个partition收到消息,需要给producer发送ack。producer收到ack会继续发送下一条,否则重复发送

  2. partition发送ack时机

  • leader同步follower后发送ack,这样leader挂了数据不会丢失

  • 全部follower同步后再给producer发送ack

  • follower从leader同步完成后发送ack给leader,如果超时(replica.lag.time.max.ms)不发送,则被踢出ISR

  • leader故障,会从ISR选出leader

三、ack机制

  1. 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就继续发送消息

  1. 幂等 enable.idempotence=true,producer初始化时会分配一个pid,发往partition的数据会带上sequence number,broker会对进行缓存,相同的数据broker只会缓存一条

四、数据一致性

Image description

Top comments (0)