php kafka 读数据丢失,kafka丢失和重复消费数据_我是一只柴柴的博客-CSDN博客


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

php kafka 读数据丢失,kafka丢失和重复消费数据_我是一只柴柴的博客-CSDN博客
php kafka 读数据丢失,kafka丢失和重复消费数据
我是一只柴柴
于 2021-04-06 05:07:14 发布
212
收藏
文章标签:
php kafka 读数据丢失
Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题。
1、丢包问题:消息推送服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。
解决方案:首先对kafka进行限速, 其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all,即需要相应的所有处于ISR的分区都确认收到该消息后,才算发送成功。
检测方法:使用重放机制,查看问题所在。
kafka配置如下:
props.put("compression.type", "gzip");
props.put("linger.ms", "50");
props.put("acks", "all");
props.put("retries ", 30);
props.put("reconnect.backoff.ms ", 20000);
props.put("retry.backoff.ms", 20000);
2、重发问题:当消费者重新分配partition的时候,可能出现从头开始消费的情况,导致重发问题。当消费者消费的速度很慢的时候,可能在一个session周期内还未完成,导致心跳机制检测报告出问题。
底层根本原因:已经消费了数据,但是offset没提交。
配置问题:设置了offset自动提交
解决办法:至少发一次+去重操作(幂等性)
问题场景:
设置offset为自动提交,正在消费数据,kill消费者线程;
设置offset为自动提交,关闭kafka时,如果在close之前,调用 consumer.unsubscribe() 则有可能部分offset没提交,下次重启会重复消费;
消费kafka与业务逻辑在一个线程中处理,可能出现消费程序业务处理逻辑阻塞超时,导致一个周期内,offset还未提交;继而重复消费,但是业务逻辑可能采用发送kafka或者其他无法回滚的方式;
重复消费最常见的原因:re-balance问题,通常会遇到消费的数据,处理很耗时,导致超过了Kafka的session timeout时间(0.10.x版本默认是30秒),那么就会re-balance重平衡,此时有一定几率offset没提交,会导致重平衡后重复消费。
3、去重问题:消息可以使用唯一id标识
保证不丢失消息:生产者(ack=all 代表至少成功发送一次)
消费者 (offset手动提交,业务逻辑成功处理后,提交offset)
保证不重复消费:落表(主键或者唯一索引的方式,避免重复数据)
业务逻辑处理(选择唯一主键存储到Redis或者mongdb中,先查询是否存在,若存在则不处理;若不存在,先插入Redis或Mongdb,再进行业务逻辑处理)
我是一只柴柴
关注
关注
点赞
收藏
评论
php kafka 读数据丢失,kafka丢失和重复消费数据
Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题。1、丢包问题:消息推送服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。解决方案:首先对kafka进行限速, 其次启用重试机...
复制链接
扫一扫
about:PHP Kafka资源项目
04-11
PHP卡夫卡
描述
这是一项将所有与PHP Kafka相关的事物收集到一起的工作并为每个人提供有关我们生态系统中可用资源的更好信息。 如果您的项目丢失,请随时创建PR来添加它。
卡夫卡整合
C绑定
是许多人使用的C绑定官方语言绑定,例如Go,Python,C#等它还由社区创建PHP扩展和绑定中使用。 :warning: 许多Linux发行版都附带了非常旧的librdkafka版本。 在这种情况下,建议手动构建一个更新的版本。
扩展名
arnaud-lb / php-rdkafka
这是一个稳定的扩展,可以在找到其来源。 它的目标是尽可能接近librdafka的API。 它具有广泛的支持范围,并避免了重大更改:
PHP5-PHP8
librdkafka v0.11.6-最新
php-kafka / php-simple-kafka-client
这是一个新的扩展,由php-rdkafka的贡献者
Kafka集群消费和广播消费的实现
WannaRunning的博客
12-23
3338
集群消费
默认情况下Kafka中同一个topic下的消息对于某一个消费组来说是集群消费模式,也就是只会被组内一个消费实例所消费。
广播消费
同一个topic下的消息被多个消费者消费称为广播消费.由于Kafka默认是集群消费模式,所以广播消费的实现方式就是为广播消费的多个应用实例都设置不同的GroupId即每个实例都是单独的消费组.
@KafkaListener注解的GroupId属性支持SpEL表达式,可以通过这个实现每个应用实例都是单独的消费组,进而实现广播消费。
@KafkaListen
参与评论
您还未登录,请先
登录
后发表或查看评论
Kafka常见的导致重复消费原因和解决方案
最新发布
西门飘雪的博客
09-29
2095
从顺序上来说,poll 方法的逻辑是先提交上一批消息的位移,再处理下一批消息,因此它能保证不出现消费丢失的情况。注:如果你想要消费者从头开始消费某个topic的全量数据,可以重新指定一个全新的group.id=new_group,然后指定auto-offset-reset=earliest即可。导致kafka的重复消费问题原因在于,已经消费了数据,但是offset没来得及提交(比如Kafka没有或者不知道该数据已经被消费)。上面代码会导致部分offset没提交,下次启动时会重复消费。
php kafka 读数据丢失,Kafka重复消费和丢失数据研究
weixin_33502400的博客
04-06
106
Kafka重复消费原因底层根本原因:已经消费了数据,但是offset没提交。原因1:强行kill线程,导致消费后的数据,offset没有提交。原因2:设置offset为自动提交,关闭kafka时,如果在close之前,调用consumer.unsubscribe() 则有可能部分offset没提交,下次重启会重复消费。例如:try {consumer.unsubscribe();} catch (...
php kafka多个消费者,Kafka学习笔记4--Kafka消费者的客户端(PHP)开发
weixin_30019517的博客
03-11
294
一、准备工作虽然 Kafka 是用 Java/Scala 语言编写的,但这不妨碍它对多语言的支持。可以在 Kafka 官网的 CLIENTS 查看 Kafka 支持的语言,其中包括 C/C++、Python、Go 等语言。PHP 操作 Kafka 需要安装 librdkafka 库和 kafka 的 PHP 扩展。1.安装 librdkafka 库git clone https://github....
Kafka数据丢失解决方案
endless_Y的博客
05-13
573
producer 数据不丢失:
同步模式:配置=1 (只有Leader收到,-1 所有副本成功,0 不等待)Leader Partition挂了,数据就会丢失
解决:设置 -1 保证produce 写入所有副本算成功 producer.type = sync request.required.acks=-1
异步模式,当缓冲区满了,如果配置为0(没有收到确认,一满就丢弃),数据立刻丢弃
解决:不限制阻塞超时时间。就是一满生产者就阻塞
producer.type = async
request.
nmred kafka-php,kafka 测试遇到掉数据的问题 nmred/kafka-PHP
weixin_33204522的博客
03-17
325
kafka-php 测试遇到掉数据的问题遇到的现象现象1.当消费者进程未启动时 生产者进行生产一条数据 待消费Lag为1 LOG-END-OFFSET-CURRENT-OFFSET=1|GROUP|TOPIC|PARTITION|CURRENT-OFFSET|LOG-END-OFFSET|LAG| CONSUMER-ID|HOST|CLIENT-ID||--|--|--|--|--|--|--...
Kafka--消息丢失--原因/解决方案/零丢失的配置
notbug1的博客
08-26
191
Kafka--消息丢失--原因/解决方案/零丢失的配置
php队列防止重复消费,[问题记录]解决RabbitMQ消息丢失与重复消费问题
weixin_31889705的博客
03-17
228
本文仅记录排查和问题定位、解决的过程。1. 背景最近用户反馈提交的SQL查询一直处于长时间等待状态,经过排查观察,发现部分查询请求丢失,导致用户提交的查询未被正常接收,继而长时间无响应。现象:集市SQL控制台提交10个简单SQL查询 -> 消息发送方:发送10条消息至消息队列 -> 消息消费方:只消费了7条消息2. 现状2.1. 当前SQL查询的整体流程 生产者:PHP:将用户的SQL...
Kafka重复消费和丢失数据研究
zollty的专栏
12-31
2万+
Kafka重复消费原因、数据丢失
底层根本原因:已经消费了数据,但是offset没提交。
原因1:强行kill线程,导致消费后的数据,offset没有提交。
原因2:设置offset为自动提交,关闭kafka时,如果在close之前,调用 consumer.unsubscribe() 则有可能部分offset没提交,下次重启会重复消费。例如:
try {
consumer.un
php kafka 读数据丢失,kafka(08)——kafka的数据的不丢失机制
weixin_30976429的博客
04-06
66
生产者如何保证数据的不丢失producer有丢数据的可能,但是可以通过配置保证消息的不丢失。通过kafka的ack机制:在kafka发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够被收到。取值有1 0 -1 。# 设置发送数据是否需要服务端的反馈,有三个值0,1,-1# 0: producer不会等待broker发送ack# 1: 当leader接收到消息之后发送ack...
游戏数据后台,kafka代替rsync同步日志数据
yjr_aaron的博客
03-26
6777
游戏数据后台,kafka同步日志数据,原先是采集机把日志写到log文件,然后使用rsync同步到处理机子上入库等操作
kafka 查看待消费数据_kafka查看消费数据
weixin_39920415的博客
12-22
1825
一、如何查看在老版本中,使用kafka-run-class.sh 脚本进行查看。但是对于最新版本,kafka-run-class.sh 已经不能使用,必须使用另外一个脚本才行,它就是kafka-consumer-groups.sh普通版查看所有组要想查询消费数据,必须要指定组。那么线上运行的kafka有哪些组呢?使用以下命令:bin/kafka-consumer-groups.sh --boots...
Kafka学习之怎么保证不丢,不重复消费数据
热门推荐
u010627840的专栏
07-31
2万+
Kafka学习之怎么保证不丢,不重复消费数据Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题。
丢包问题:消息推动服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。
php-kafka 丢一条消息,kafka:发现kafka丢消息后的排查
weixin_29405101的博客
03-27
82
背景:最近在用kafka做消息中间件,producer从hive中读取消息发送到kafka,后端storm对消息分类发送到elasticsearch建立索引。问题:hive表中总共350万数据,当时整个全量索引结束后发现,最后索引条数总共310万左右。storm日志没有任何错误日志。排查:首先排查storm consumer的问题,由于发现storm日志没有任何异常,所以第一步基本排除建索引程序的...
php kafka 消费代码
fyj的博客
12-14
1593
<?php
date_default_timezone_set('PRC');
//kfk 代理列表
$brokerList = 'xxx:9092,xxx:9092,xxx:9092';
$baiduAppIdLen = 2;
$conf = new \RdKafka\Conf;
#定义消费组
$conf->set('group.id', 'test-consumer-gr...
php kafka
u013713010的专栏
04-01
2913
Kafka 是一种高吞吐的分布式消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区、多副本、冗余,因此被广泛用于大规模消息数据处理应用。
Kafka的特点:
以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息
面对现象PHP,学习猿地-kafka 测试遇到掉数据的问题 nmred/kafka-PHP
weixin_39610415的博客
03-19
57
kafka-php 测试遇到掉数据的问题遇到的现象现象1.当消费者进程未启动时 生产者进行生产一条数据 待消费Lag为1 LOG-END-OFFSET-CURRENT-OFFSET=1|GROUP|TOPIC|PARTITION|CURRENT-OFFSET|LOG-END-OFFSET|LAG| CONSUMER-ID|HOST|CLIENT-ID||--|--|--|--|--|--|--...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:数字20
设计师:CSDN官方博客
返回首页
我是一只柴柴
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
102
原创
周排名
163万+
总排名
11万+
访问
等级
43
积分
15
粉丝
11
获赞
评论
83
收藏
私信
关注
热门文章
exe已停止工作怎么解决?_windows资源管理器停止工作怎么办
10766
计算机专业名称bios翻译,电脑BIOS中英文对照翻译有哪些?
6668
计算机找不到 bitlocker,win10系统bitlocker找不到tpm的解决方法
5016
修改弹窗_怎么制作无限弹窗效果? 限弹窗代码bat文件分享
4498
python支持使用字典的键作为下标_Python—字典(当索引不好用时)
3635
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
门户网站几个名字服务器,《风云》10个大区20组服务器名大曝光
苹果Xr用不了浏览器显示服务器已停止响应,苹果xrsafari浏览器用不了?
lwip协议栈实现服务器端主动发送,API函数及编程实例《LwIP协议栈源码详解—TCP/IP协议的实现》...
2021年174篇
2020年26篇
目录
目录
最新文章
门户网站几个名字服务器,《风云》10个大区20组服务器名大曝光
苹果Xr用不了浏览器显示服务器已停止响应,苹果xrsafari浏览器用不了?
lwip协议栈实现服务器端主动发送,API函数及编程实例《LwIP协议栈源码详解—TCP/IP协议的实现》...
2021年174篇
2020年26篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值