怎样做网站跳转,做网站维护前景,网站建设 秦皇岛公司哪家好,网站留言自动短信提醒目录
一 ack 应答机制 二 ISR 集合 一 ack 应答机制 kafka 为用户提供了三种应答级别#xff1a; all#xff0c;leader#xff0c;0
acks #xff1a;0 这一操作提供了一个最低的延迟#xff0c;partition的leader接收到消息还没有写入磁盘就已经返回ack#x…目录
一 ack 应答机制 二 ISR 集合 一 ack 应答机制 kafka 为用户提供了三种应答级别 allleader0
acks 0 这一操作提供了一个最低的延迟partition的leader接收到消息还没有写入磁盘就已经返回ack当leader故障时有可能丢失数据 生产者发送完消息后不会等待到 broker 的任何确认消息这种方式虽然效率提升但是它的可靠性大大降低 acks1leader partition的leader落盘成功后返回ack如果在follower同步成功之前leader故障尽管 leader 已经落盘成功但是 follower 的同步进度肯定是低于leader这时故障那么将会丢失 follower 还未同步 leader 那部分数据 这种模式下具有一定的可靠性和效率但是依旧有丢失数据的可能性 acks-1all partition的leader和follower全部落盘成功后才返回ack。但是如果在follower同步完成后broker发送ack之前leader发生故障即选举出新的 leader新的 leader 将再次落盘一次那么会造成数据重复 这种模式下效率是最低的但是数据可靠性则最高 java api 中相应参数
// 设置acksproperties.put(ProducerConfig.ACKS_CONFIG, all);// 重试次数retries默认是int最大值2147483647properties.put(ProducerConfig.RETRIES_CONFIG, 3); 二 ISR 集合 ISRin-sync replica 就是 Kafka 为某个分区维护的一组同步集合即每个分区都有自己的一个 ISR 集合处于 ISR 集合中的副本意味着 follower 副本与 leader 副本保持同步状态只有处于 ISR 集合中的副本才有资格被选举为 leader。一条 Kafka 消息只有被 ISR 中的副本都接收到才被视为“已同步”状态。这跟 zk 的同步机制不一样zk 只需要超过半数节点写入就可被视为已写入成功。 想象如下场景 如果一个follower因为某种故障迟迟无法与leader 同步那么如果选择 ack 为 all 的话leader 要一直等待follower 同步完才发 ack 吗 显然不是in-sync replica set (ISR)意为和leader保持同步的follower集合。当ISR中的follower完成数据的同步之后leader就会给producer发送ack。如果follower长时间未向leader同步数据则该follower将被踢出ISR该时间阈值由replica.lag.time.max.ms参数设定。Leader发生故障之后就会从ISR中选举新的leader。 被踢出 ISR 的 follower 在选举新的 leader 时不被考虑待该follower恢复后follower会读取本地磁盘记录的上次的HW并将log文件高于HW的部分截取掉从HW开始向leader进行同步。等该follower的LEO大于等于该Partition的HW即follower追上leader之后就可以重新加入ISR了。 同样的 leader 故障的话会从ISR中选出一个新的leader之后为保证多个副本之间的数据一致性其余的follower会先将各自的log文件高于HW的部分截掉然后从新的leader同步数据。 LEO指的是每个副本最大的offset HW指的是消费者能见到的最大的offsetISR队列中最小的LEO。