Kafka的也存在Leader和Follow节点,这样就会有一致性问题。


一、kafka是什么?

Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

二、kafka生产者和消费者如何保证消息不丢失和重复

1.kafka的ack机制

kafka对于数据的保证当我们可以容忍数据的丢失和必须保证数据的一致性中ACK机制一共有三种机制,分别是(0,-1,1)。

0:producer不会等待broker返回ack,broker出现故障时会丢失数据。

1:producer在发送消息时会等待数据对副本进行备份备份完成返回ack在副本同步完成后返回ack

当副本出现故障时会出现数据的丢失。

-1:producer发出消息对当partition中的leader和ISR中的follower全部同步完成后才会返回ack当ISR中没有follower时会出现数据丢失,当然这是一种极端的清空。

2.kafka的三种消费策略

At-most-once语义:kafka会最多发送一次,不会出现数据的重复但是会出现数据的丢失情况

At-last-once语义: kafka最少发送一次数据,不会出现数据的丢失但是会出现数据的重复

Exactly-Once语义:当At-last-once加上幂等性就可以做到精准一次,幂等性就是不论producer发送多少重复的消息Server端只会保存一次,避免数据的重复。

3.什么是ISR

Leader 维护了一个动态的 in-sync replica set (ISR:同步副本),ISR就可以理解为一个集合,这个集合里就是和Leader保持同步的follower,当follower没有将数据进行同步或者同步时间超时就会将这个follower踢出这个集合,当Leader发生故障就会在ISR中选举新的Leader。


总结


以上就是今天要讲的内容,本文仅仅简单介绍了kafak的一致性的保障。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐