kafka 数据丢失问题,及如何保证?
1、kafka 数据丢失问题
a、acks=1 的时候(只保证写入 leader 成功),如果刚好 leader 挂了,则数据会丢失。
b、acks=0 的时候,使用异步模式的时候,该模式下 kafka 无法保证消息,有可能会丢。
2、brocker 如何保证不丢失
a、acks=all 所有副本都写入成功并确认。
b、retries=一个合理值 kafka 发送数据失败后的重试值。(如果总是失败,则可能是网络原因)
c、min.insync.replicas=2 消息至少要被写入到这么多副本才算成功。
d、unclean.leader.election.enable=false 关闭 unclean leader 选举,
即不允许非 ISR 中的副本被选举为 leader, 以避免数据丢失。
3、consumer 如何保证不丢失?
a、如果在消息处理完成前就提交了 offset,那么就有可能造成数据的丢失。
b、enable.auto.commit=false 关闭自动提交 offset。
c、处理完数据之后手动提交。
kafka 保证消息顺序
1、全局顺序
a、全局使用一个生产者,一个分区,一个消费者。
2、局部顺序
a、每个分区是有序的,根据业务场景制定不同的 key 进入不同的分区。
https://gitchat.csdn.net/activity/5ad5634e1165247fd990c306?utm_source=so