kafka如何保证数据不丢失?

这篇具有很好参考价值的文章主要介绍了kafka如何保证数据不丢失?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.生产者

生产者生产数据有两种模式:一种是同步模式,一种是异步模式。

同步模式:生产者生产一条数据,就保存一条数据,保存成功后,再生产下一条数据,能够保证数据不丢失,但是效率太低了。

异步模式(采用ack机制):

 Properties properties = new Properties();
         properties.put("bootstrap.servers", "kafka01:9092,kafka02:9092");
         properties.put("acks", "all");
         properties.put("retries", 0);
         properties.put("batch.size", 16384);
         properties.put("linger.ms", 1);
         properties.put("buffer.memory", 33554432);
         properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
         properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
         KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties);
         for (int i = 1; i <= 600; i++) {
             kafkaProducer.send(new ProducerRecord<String, String>("z_test_20190430", "testkafka0613"+i));
             System.out.println("testkafka"+i);
         }
         kafkaProducer.close();

在producer端开启一块buff缓冲,用来缓存数据,缓存一批数据,保存到partition当中.

0:生产者生产数据,不管leader是否保存成功,follower是否同步成功,继续发送下一批数据

1:生产者生产数据,只保证leader保存成功,不管follower是否同步成功,继续发送下一批数据.

-1或者all:生产者生产数据,既要保证leader保存成功,也要保证follower同步成功,继续发送下一批数据.

2.broker端

在Broker端,可以给Topic配置更大的备份因子replication-factors。配置了备份因子后,Kafka会给每个Partition分配多个备份Partition。这些Partiton会尽量平均的分配到多个Broker上。并且,在这些Partiton中,会选举产生Leader Partition和Follower Partition。这样,当Leader Partition发生故障时,其他Follower Partition上还有消息的备份。就可以重新选举产生Leader Partition,继续提供服务。

这样整个集群内的消息不会丢失。

3.消费者

自动提交偏移量改成手动提交偏移量

设置 enable.auto.commit = false , 默认值true,自动提交

手动提交offset

使用kafka的Consumer的类,用方法consumer.commitSync()提交

或者使用spring-kafka的 Acknowledgment类,用方法ack.acknowledge()提交(推荐使用)文章来源地址https://www.toymoban.com/news/detail-426543.html

到了这里,关于kafka如何保证数据不丢失?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka - 获取 Topic 生产者发布数据命令

    从头开始获取 20 条数据(等价于时间升序) ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic your-topic --from-beginning --max-messages 20 获取最新 20 条数据(等价于时间降序)去掉 --from-beginning 即可(默认) ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic your-topic --max-me

    2024年02月14日
    浏览(37)
  • Kafka3.0.0版本——生产者如何提高吞吐量

    设置批次大小,batch.size 默认 16K。 设置等待时间,linger.ms 默认 0。 设置缓冲区大小,buffer.memory 默认 32M 设置压缩, compression.type 默认 none,可配置值 gzip、snappy、lz4 和 zstd。 代码 在kafka集群上开启 Kafka 消费者 在 IDEA 中执行代码,观察kafka集群控制台中是否接收到消息。 测试

    2023年04月10日
    浏览(38)
  • 大数据开发之Kafka(概述、快速入门、生产者)

    Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。 目前企业中比较常见的消息队列产品主要有Kafka、ActiveM

    2024年01月19日
    浏览(59)
  • Kafka3.0.0版本——生产者 数据去重

    1.1、至少一次 至少一次(At Least Once )的含义 生产者发送数据到kafka集群,kafka集群至少接收到一次数据。 至少一次的条件: ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2 1.2、最多一次 最多一次(At Most Once )的含义 生产者发送数据到kafka集群,

    2024年02月01日
    浏览(38)
  • Kafka3.0.0版本——生产者数据有序与乱序

    单分区内,数据有序。如下图partion0、partion1、partion2分区内,各自分区内的数据有序。 2.1、kafka1.x版本之前保证数据单分区有序的条件 kafka在1.x版本之前保证数据单分区有序,条件如下: 2.2、kafka1.x版本及以后保证数据单分区有序的条件 未开启幂等性 开启幂等性 2.3、kafka1

    2023年04月27日
    浏览(43)
  • 第3、4章 Kafka 生产者 和 消费者 ——向 Kafka 写入数据 和读取数据

    重要的特性: 消息通过 队列来进行交换 每条消息仅会传递给一个消费者 消息传递有先后顺序,消息被消费后从队列删除(除非使用了消息优先级) 生产者或者消费者可以动态加入 传送模型: 异步即发即弃:生产者发送一条消息,不会等待收到一个响应 异步请求、应答:

    2024年02月20日
    浏览(36)
  • SparkStreaming学习——读取socket的数据和kafka生产者的消息

    目录 一、Spark Streaming概述 二、添加依赖 三、配置log4j 1.依赖下载好后打开IDEA最左侧的外部库 2.找到spark-core 3.找到apache.spark目录 4.找到log4j-defaults.properties文件 5.将该文件放在资源目录下,并修改文件名 6.修改log4j.properties第19行的内容 四、Spark Streaming读取Socket数据流 1.代码编

    2023年04月27日
    浏览(35)
  • RabbitMQ 生产者-消息丢失 之 场景分析

      生产者发送消息的流程如下:首先生产者和RabbitMQ服务器建立连接,然后创建信道,通过信道发送消息给RabbitMQ服务器,RabbitMQ服务器接收到消息后交由交换机进行消息存储,交换机根据不同策略将消息路由到指定队列中。在此过程中,可能会存在以下消息丢失的场景:

    2024年02月14日
    浏览(42)
  • java:Kafka生产者推送数据与消费者接收数据(参数配置以及案例)

    bootstrap.servers :Kafka集群中的Broker列表,格式为host1:port1,host2:port2,…。生产者会从这些Broker中选择一个可用的Broker作为消息发送的目标Broker。 acks :Broker对消息的确认模式。可选值为0、1、all。0表示生产者不会等待Broker的任何确认消息;1表示生产者会等待Broker的Leader副本确认

    2024年02月16日
    浏览(43)
  • 三、Kafka生产者1---Kafka生产者初始化-new KafkaProducer

    概述 本文主要是分享Kafka初始化生产者的 大体过程 初始化过程中会新建很多对象,本文暂先分享部分对象 1.分区器---Partitioner partitioner 2.重试时间---long retryBackoffMs 3.序列化器---SerializerK keySerializer,SerializerV valueSerializer 4.拦截器--- ListProducerInterceptorK, V interceptorList 5.累加器-

    2024年03月14日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包