Kafka如何保证at-least-once__BD攻城师_的博客-CSDN博客_kafka的at least once


本站和网页 https://blog.csdn.net/BDblog_chang/article/details/79876919 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Kafka如何保证at-least-once__BD攻城师_的博客-CSDN博客_kafka的at least once
Kafka如何保证at-least-once
_BD攻城师_
于 2018-04-10 10:09:50 发布
6889
收藏
分类专栏:
学习-Kafka
学习-Kafka
专栏收录该内容
1 篇文章
0 订阅
订阅专栏
kafka最初是被LinkedIn设计用来处理log的分布式消息系统,因此它的着眼点不在数据的安全性(log偶尔丢几条无所谓),换句话说kafka并不能完全保证数据不丢失。
尽管kafka官网声称能够保证at-least-once,但如果consumer进程数小于partition_num,这个结论不一定成立。
考虑这样一个case,partiton_num=2,启动一个consumer进程订阅这个topic,对应的,stream_num设为2,也就是说启两个线程并行处理message。
如果auto.commit.enable=true,当consumer fetch了一些数据但还没有完全处理掉的时候,刚好到commit interval出发了提交offset操作,接着consumer crash掉了。这时已经fetch的数据还没有处理完成但已经被commit掉,因此没有机会再次被处理,数据丢失。
如果auto.commit.enable=false,假设consumer的两个fetcher各自拿了一条数据,并且由两个线程同时处理,这时线程t1处理完partition1的数据,手动提交offset,这里需要着重说明的是,当手动执行commit的时候,实际上是对这个consumer进程所占有的所有partition进行commit,kafka暂时还没有提供更细粒度的commit方式,也就是说,即使t2没有处理完partition2的数据,offset也被t1提交掉了。如果这时consumer crash掉,t2正在处理的这条数据就丢失了。
如果希望能够严格的不丢数据,解决办法有两个:
1.手动commit offset,并针对partition_num启同样数目的consumer进程,这样就能保证一个consumer进程占有一个partition,commit offset的时候不会影响别的partition的offset。但这个方法比较局限,因为partition和consumer进程的数目必须严格对应。
2.另一个方法同样需要手动commit offset,另外在consumer端再将所有fetch到的数据缓存到queue里,当把queue里所有的数据处理完之后,再批量提交offset,这样就能保证只有处理完的数据才被commit。当然这只是基本思路,实际上操作起来不是这么简单,具体做法以后我再另开一篇。
_BD攻城师_
关注
关注
点赞
收藏
评论
Kafka如何保证at-least-once
kafka最初是被LinkedIn设计用来处理log的分布式消息系统,因此它的着眼点不在数据的安全性(log偶尔丢几条无所谓),换句话说kafka并不能完全保证数据不丢失。尽管kafka官网声称能够保证at-least-once,但如果consumer进程数小于partition_num,这个结论不一定成立。考虑这样一个case,partiton_num=2,启动一个consumer进程订...
复制链接
扫一扫
专栏目录
我们谈论的Exactly once到底是什么?
weixin_43167418的博客
01-11
4157
来自:掘金(作者:Flink_China)原文链接(底部链接可直达):转自:https://juejin.cn/post/6844903857558913038英文原文:https://...
评论 1
您还未登录,请先
登录
后发表或查看评论
如何处理消费过程中的重复消息
sfklyqh的博客
09-25
266
现在常用的绝大部分消息队列提供的服务质量都是At least once(至少一次,不允许丢失消息,但是允许有少量重复消息出现),包括RocketMQ、RabbitMQ和Kafka都是这样。也就是说,消息队列很难保证消息不重复。
Kafka 接收消息 at least once
千里之行始于足下
06-13
5401
– Start
首先启动 ZooKeeper 和 Kafka borker。
下面的例子演示了如何接收数据以及手动提交 offset。
package shangbo.kafka.example5;
import java.util.Arrays;
import java.util.Properties;
import org.apache.kafka.clients.consum...
【Spark | SparkStreaming】
最新发布
pingyufeng的博客
11-03
581
SprakStream的实战
Kafka 接收消息 at least once -- Spring 整合
千里之行始于足下
06-14
1410
– Start
废话少说,直接上代码。
package shangbo.kafka.example11;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
pub...
Kafka Consumer如何实现exactly once/at least once
ThreeAspects的博客
05-24
1620
目录消费端幂等性消费时出现几种异常情况自动提交手动提交精确一次消费实现总结至少消费一次
消费端幂等性
  kafka具有两种提交offset(消费偏移量)方式,在Kafka每个分区具备一offset记录消费位置,如果消费者一直处于正常的运行转态,那么offset将没有什么用处,因为正常消费时,consumer记录了本次消费的offset和下一次将要进行poll数据的offset起始位置,但是如果消费者发生崩溃或者有新的消费者加入消费者组,就会触发再均衡Rebalance,Rebalance之后,每个消费者将
kafka学习之路(三)——高级
至道
07-17
8393
设计原理kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力.持久性kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性.且无论任何OS下,对文件系统本身的优化几乎没有可能.文件缓存/直接内存映射等是常用的手段.因为kafka是对日志文件进行append操作,因此磁盘检索的开支是较小的;同时为...
kafka特性
u012986057的专栏
01-25
840
1、消息有序,几乎不允许对消息进行“随机读写”
2、即使消息被消费,消息仍然不会被立即删除.日志文件将会根据broker中的配置要求,保留一定的时间之后删除
3、对于consumer而言,它需要存消费消息的offset,对于offset的保存和使用,由consumer来控制
4、如果所有的consumer都具有相同的group,这种情况和queue模式很像;消息将会在consumers之间负载
Kafka知识点概述
m0_71507382的博客
09-06
365
kafka基础原理
exactly once kafka实现
xiyingxia3117的博客
01-13
205
由来
今天,我就想看一看kafka的exactly once 相关的知识。随后我百度了几篇文章,都不尽如人意。我想能搜索exactly once 关键词的肯定都是对于kafka有一定的基础了解了吧,结果我搜索出来的都是一些长篇大论,没有主次,不清楚是哪里摘抄的。后面我又看了写视频,才算有了写直观认识。
exactly once
在早期版kafka版本上,我们可以设置ack = 1,-1,0 来分别...
Kafka开发指南之 如何Kafka 事务型生产者,保证生产者exactly once
jast
05-01
1361
我们知道Kafka的消息交付可靠性保障分为 最多一次(at most once),至少一次(at least once),精确一次(exactly once)
最多一次(at most once):
吃透Kafka三:详细分析生产和消费对消息的保障
01-15
159
吃透Kafka三:详细分析生产和消费对消息的保障
简介一,kafka消息传递的三种语义At most once:最多一次,消息可能会丢失,但不会重复。At least once:最少一次,消息不会丢失,可能会重复。Exactly once:只且一次,消息不丢失不重复,只且消费一次。我们使用kafka肯定是希望Exactly once,要保证Exactly once效率上面需要做出一定的牺牲,那么是要Exactly once还是效率就要结合具体业务来分析了。但是整体的消息投递语义需要 Producer 端和
搞定 Kafka 的核心机制
编程者说的博客专栏
01-10
788
一、Kafka的优势
Kafka是一个分布式、可分区、多副本、高吞吐,基于zookeeper协调的分布式消息系统。
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
可扩展性:kafka集群支持热扩展
持久性、可靠性:消息被持久化到本地磁盘,...
Kafka 消息传递语义 Exactly Once(精准一次) 相关知识
weixin_44087585的博客
04-07
2039
消息传递语义:
消息传递语义一共有三种,至少一次(at least once),至多一次(at most once ) 以及精准一次(exactly once )
kafka 默认实现了前两种
Kafka中如何配置呢?
如果只用kafka的来实现的话
设置ack=0就是至少一次 ack=-1是至多一次 默认是ack=1 ack=1就是leader副本相应ack就行 ,而ack=-1是指所有副本都需要确认收到才继续下一次生产数据。而ack=-1也有可能造成数据的丢失,当我们ISR(同步副本队列)中只有lead
kafka 事务_Kafka的Exactlyonce语义与事务机制
weixin_29027305的博客
12-03
42
架构师(JiaGouX)我们都是架构师!架构未来,你来不来?作者:阿凡卢出处:http://www.cnblogs.com/luxiaoxun/Kafka 0.11.x版本(对应 Confluent Platform 3.3),该版本引入了exactly-once语义。精确一次确实很难实现(Exactly-once is a really hard problem)Mathias Ver...
Kafka学习笔记-- 3 Kafka exactly once等 use case
qq_19768163的专栏
06-21
83
目录
1 exactly once的实现
1 producer只生产了一次消息
2 consumer 只消费了一次消息
2 如何数据处理时间不可控, 因为长时间不poll导致consumer退出的问题?
1 exactly once的实现
exactly once是指消息不多不少, 只消费了一次。 与exactly once相对应的, 还有: at least once 消息最...
一文搞懂Flink内部的Exactly Once和At Least Once
夫唯不争,故天下莫能与之争。
04-03
2088
看完本文,你能get到以下知识
介绍CheckPoint如何保障Flink任务的高可用
CheckPoint中的状态简介
如何实现全域一致的分布式快照?
什么是barrier?什么是barrier对齐?
证明了:为什么barrier对齐就是Exactly Once?为什么barrier不对齐就是 At Least Once?
Flink简介
Apache Flink - ...
kafka Exactly Once语义
qq_39674417的博客
02-04
96
将服务器的ACK级别设置为-1,可以保证Producer到Server之间不会丢失数据,即At Least Once语义。相对的,将服务器ACK级别设置为0,可以保证生产者每条消息只会被发送一次,即At Most Once语义。
At Least Once可以保证数据不丢失,但是不能保证数据不重复;相对的,At Least Once可以保证数据不重复,但是不能保证数据不丢失。但是,对于一些非常重要的信息,比如说交易数据,下游数据消费者要求数据既不重复也不丢失,即Exactly Once语义。在0.11版本
kafka消息深入学习
maxchenBug的博客
10-15
110
Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。
1 快写 快读
看下面的图:
传统应用是 硬件到缓存,到应用 再socket进行传输,再进行网络传输,再到用户,
而kafka实现了零拷贝,但是其实也是拷贝一次,将数据拷贝到内存中,,同时也是将数据顺序存入磁盘,这个点我们可以体会到,例如传输数据的时候,如果很多小文件,那...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
_BD攻城师_
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
原创
51万+
周排名
41万+
总排名
2万+
访问
等级
326
积分
粉丝
获赞
评论
收藏
私信
关注
热门文章
Kafka如何保证at-least-once
6889
ElasticSearch的JVM浅谈(转)
4183
spark streaming driver内存泄露
2627
用栅栏(CyclicBarrier)实现高并发测试
2177
Spring框架总结:
836
分类专栏
学习-Java
2篇
学习-Python
学习-Scala
学习-Sql相关
4篇
学习-Shell编程
1篇
学习-框架相关
3篇
学习-Hadoop
学习-Spark
2篇
学习-Storm
学习-Hive
学习-Kafka
1篇
学习-Hbase
学习-ElasticSearch
2篇
学习-Flume
学习-ZooKeeper
1篇
学习-Kylin
1篇
机器学习-分类
机器学习-聚类
机器学习-回归
最新评论
Kafka如何保证at-least-once
smarttally:
3年了,另外的开篇在哪里?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Kylin基本原理
spark streaming driver内存泄露
Spark性能调优-Shuffle调优[转]
2018年3篇
2017年16篇
目录
目录
分类专栏
学习-Java
2篇
学习-Python
学习-Scala
学习-Sql相关
4篇
学习-Shell编程
1篇
学习-框架相关
3篇
学习-Hadoop
学习-Spark
2篇
学习-Storm
学习-Hive
学习-Kafka
1篇
学习-Hbase
学习-ElasticSearch
2篇
学习-Flume
学习-ZooKeeper
1篇
学习-Kylin
1篇
机器学习-分类
机器学习-聚类
机器学习-回归
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值