大数据全系列 教程
1869个小节阅读:468.1k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
acks:0 生产者发送过来的数据,不需要等Leader数据持久化就应答完成。数据可靠性最低;丢失数据概率较高。数据就丢失情景:Leader未持久化Down掉了。使用最少。
acks:1 生产者发送过来的数据,Leader收到持久化后应答完成。数据可靠性中等,丢失数据概率中等。丢失数据情景:Leader持久化后,所有的Follower还没有同步数据时,leader挂了。用于传输普通日志。
acks:-1或all 生产者发送过来的数据,Leader和ISR队列里面的所有节点都持久化数据后才应答。数据可靠性最高,不会丢失数据。传输重要数据,比如和钱相关的数据。
思考:在acks=-1或all的情况下,Leader接收到数据并持久化后,所有Follower开始同步Leader刚刚持久化的数据,但是有一个Follower因故障迟迟不能进行数据同步,该问题应该怎么解决?
解决方案:
Leader维护了一个动态的in-sync replica set(ISR)
,意为和Leader保持同步的Follower+Leader集合(leader:0,isr:0,1,2)。如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值由replica.lag.time.max.ms参数设定,默认30000ms。例如1超时,(leader:0, isr:0,2)。这样就不用等长期联系不上或者已经故障的节点。
数据完全可靠性条件:
生成者中配置响应级别:
xxxxxxxxxx
// 设置 acks
prop.put(ProducerConfig.ACKS_CONFIG, "all");
//重试次数 retries,默认是 int 最大值,2147483647
prop.put(ProducerConfig.RETRIES_CONFIG, 3);
实时效果反馈
1. 关于Kafka生产者应答级别的描述,正确的是:
A acks:0 生产者发送过来的数据,不需要等Leader数据持久化就应答完成。数据可靠性最低;丢失数据概率较高。数据就丢失情景:Leader未持久化Down掉了。使用最少。
B acks:1 生产者发送过来的数据,Leader收到持久化后应答完成。数据可靠性中等,丢失数据概率中等。丢失数据情景:Leader持久化后,所有的Follower还没有同步数据时,leader挂了。用于传输普通日志。
C acks:-1或all 生产者发送过来的数据,Leader和ISR队列里面的所有节点都持久化数据后才应答。数据可靠性最高,不会丢失数据。传输重要数据,比如和钱相关的数据。
D 以上三个选项都正确。
2. 关于Kafka生产者数据完全可靠性条件的描述,错误的是:
A ACK级别设置为-1。
B 分区副本>=2。
C 重试次数 retries>=2。
D ISR应答的最小副本数>=2 。
答案:
1=>D
2=>C