Apache Kafka消息传递可靠性分析

Apache Kafka 简介、使用场景及特点 Apache Kafka 通过其高吞吐量、低延迟、可靠性和扩展性,成为现代大数据处理和实时流处理的核心组件。无论是在日志收集、实时分析、消息队列,还是在数据管道和事件溯源中,Kafka 都表现出了极高的适用性和灵活性,值得在各类数据驱动的应用场景中推广和使用。 阅读详情

如果MQ没有类似数据库事务结构和保证,是不可能达到消息投递100%可靠的,极端情况下消息投递要么丢失或重复。

下面咋们从producer,broker,consumer的角度分析一下Kafka中会出现哪些情况:

1.producer发送消息到Broker

目前生产者发送消息(request.required.acks)有三种方式。

acks = 0: producer不会等待broker发送ack ,因为发送消息网络超时或broker crash(1.Partition的Leader还没有commit消息 2.Leader与Follower数据不同步),既有可能丢失也可能会重发。

acks = 1: 当leader接收到消息之后发送ack,丢会重发,丢的概率很小

acks = -1: 当所有的follower都同步消息成功后发送ack.  丢失消息可能性比较低。

2.Consumer从Broker拉取消息

Kafka中有两种consumer接口,分别为Low-level API和High-levelAPI

(1). Low-level API  SimpleConsumer


这套接口比较复杂的,使用者必须要考虑很多事情,优点就是对Kafka可以有完全的控制。

(2).  High-level API ZookeeperConsumerConnector


High-level API使用比较简单,已经封装了对partition和offset的管理,默认是会定期自动commit offset,这样可能会丢数据的,因为consumer可能拿到数据没有处理完crash。 High-level API接口的特点,自动管理,使用简单,但是对Kafka的控制不够灵活。

3. Broker分析

  (1). 对于broker,落盘的数据,除非磁盘坏了,一般不会丢的。

    (2).  对于内存脏(没有flush磁盘)数据,broker重启会丢. 
        可以通过log.flush.interval.messages和log.flush.interval.ms来配置flush间隔,interval大丢的数据多些,小会影响性能 
        但在0.8.x版本以后,可以通过replica机制保证数据不丢,代价就是需要更多资源,尤其是磁盘资源,kafka当前支持GZip和Snappy压缩,来缓解这个问题。 是否使用replica取决于在可靠性和资源代价之间的平衡。

总结

Kafka只是能保证at-least once消息语义,即数据是可能重复的,这个在应用上需要可以容忍, 
对于Kafka consumer,一般情况下推荐使用high-level API接口,最好不要直接使用low-level API,自己写起来比较麻烦和困难。

Kafka Producer机制优化-提高发送消息可靠性 立即下载

相关推荐

Buck-Boost电路实战:如何用LM2596模块快速搭建升降压电源(附元件选型指南)

本文详细介绍了如何使用LM2596模块快速搭建Buck-Boost升降压电路,包括硬件选型、电路搭建、示波器实测和进阶技巧。通过实测数据和避坑指南,帮助电子工程师解决电压不稳定、效率低下等常见问题,提升DC-DC变换器的设计水平。

weixin_30485379的博客 110

3.kafka如何保证消息的可靠性

kafka应答原理 0:生产者发送过来的数据,不需要等数据落盘应答 如下图,生产者发送了信息之后,不需要等待kafka回复,如果kafka上的节点挂了后,这个消息就丢失了。 1:生产者发送过来的数据,Leader收到数据后应答。 如下图,可能leader收到消息后,还没同步leader挂了,消息丢失了 -1(all):生产者发送过来的数据,Leader和ISR队列里面的所有节点收齐数据后应答。 如下图,需要等leader和ISR队列中的所有follower都收到后才应答。 什么

qq_42008471的博客 1828

从零构建Carsim线控转向仿真:模型搭建、算法集成与整车联动实战

本文详细介绍了从零开始基于Carsim和Simulink搭建线控转向仿真模型的完整实战流程。内容涵盖RWA前轮执行器动力学建模与PID控制、卡尔曼滤波器估算齿条力、HWA方向盘手感模拟算法设计,以及最终实现HWA与RWA闭环联动并进行整车仿真调试。通过分步拆解,帮助读者深入理解线控转向系统的核心原理与工程实现。

weixin_29158413的博客 251

java总结 -- 8.kafka和rabbitmq可靠性保证及比对

消息中间件

m0_37189934的博客 645

【密码学】生成8位26个字母和数字的全排列(密码字典,密钥)c++代码(非递归高效直接)

生成8位26个字母和数字的全排列(密钥)代码(非递归高效直接) 用C语言或C++,生成一个8位的26个字母和数字的全排列的原代码,例如从:00000000到ZZZZZZZZ。 说明:生成的这个字典会非常大,有36^8条记录,估计要3T的硬盘,跑一个晚上看看         这个方法比递归更高效,更直接。                                                ...

Wu_Being 的优快云 博客 1万+

保姆级教程:手把手教你下载和配置Waymo自动驾驶数据集(附百度网盘链接)

本文提供了一份详细的Waymo自动驾驶数据集下载和配置指南,特别针对国内研究者优化了数据获取方案,包括百度网盘链接和Google Cloud CLI配置。文章还涵盖了环境配置、数据处理实战、可视化分析以及进阶技巧,帮助开发者高效利用这一业界黄金标准数据集进行自动驾驶研究。

weixin_42651281的博客 361

Kafka 消息可靠性

在 Kafka 工作机制 一文提及了 Kafka 消息的不可靠性。本文就 Kafka 消息的三种不可靠性(重复、丢失、乱序),分析它们出现的内部原因和解决办法。 作者:王克锋 出处:https://kefeng.wang/2017/11/22/kafka-reliability/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。 1 Kafka 消息的问题 Kaf...

kefeng.wang 的博客 6565

协方差矩阵自适应进化策略(CMA-ES)详解:从基础原理到优化算法

CMA-ES是一种先进的无导数优化算法,基于生物进化原理解决连续域非线性优化问题。该算法通过自适应调整多元正态分布的均值、协方差矩阵和步长参数,自动学习搜索空间结构,无需梯度信息即可高效优化。核心创新包括协方差矩阵的秩1和秩μ更新策略,以及基于进化路径的步长控制机制。CMA-ES具有旋转不变性、标度不变性和全局探索能力,特别适合3-300维的黑盒优化问题,在复杂系统仿真、超参数调优等领域表现优异。算法实现中关键参数如种群大小、学习率等均有自适应设置规则,使其成为连续优化领域的基准算法之一。

qq_42212808的博客 523

Kafka消息可靠性

如果MQ没有类似数据库事务结构和保证,是不可能达到消息投递100%可靠的,极端情况下消息投递要么丢失或重复。 下面咋们从producer,broker,consumer的角度分析一下Kafka中会出现哪些情况。 1.producer发送消息到Broker 目前生产者发送消息(request.required.acks)有三种方式。 acks =

kobejayandy的专栏 3460

康复训练监测系统:基于YOLOv8的患者动作规范识别

本文系统介绍了基于YOLOv8的康复训练动作规范识别系统,从理论背景、数据准备、模型训练、推理应用到UI界面,提供了完整技术链条及代码示范。希望对康复领域的智能监测应用提供参考和借鉴。

YOLO 453

python点云可视化

Python三种点云可视化方案:mayavi、matplotlib、CloudCompare。

叶子的博客 1万+

Kafka在LinkedIn公司的应用场景、现状与未来

Apache Kafka是分布式发布-订阅消息系统,它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式,分区化,可复制的提交日志服务。LinkedIn使用Kafka实现了公司不同应用程序之间的松耦和,那么作为一个可扩展、高可靠的消息系统,它在LinkedIn公司内部都有哪些应用场景、其生态系统是什么样的、未来又会向哪些方面发展呢?最近,LinkedIn的工程

Golden_lion的博客 1244

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、

yonggeit的博客 3268

kafka的相关配置解析

Property Default Description broker.id 每个broker都可以用一个唯一的非负整数id进行标识;这个id可以作为broker的“名字”,并且它的存在使得broker无须混淆consumers就可以迁移到不同的host/port上。你可以选择任...

Diana的博客 265

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

开源日志系统比较:scribe、chukwa、kafka、flume

1. 背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦; (2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统; (3) 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。 本文从设...

weixin_30241919的博客 129

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Hadoop(入门)

Hadoop(入门)

m0_46914845的博客 5万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Hadoop基础知识

如果不同框架组成的集群相互独立,随着数据增长,跨集群间的数据移动需要耗费更长的时间,而共享集群方式通过共享集群间的数据和资源,大大节省了数据移动时间并降低了成本。如果不同框架组成的集群相互独立,必然会导致资源的利用不充分,甚至出现资源紧张的情况,而共享集群的方式可以使多个框架共享集群资源,提高了资源利用率。高扩展性:Hadoop的设计目标是可以高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上。是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,用于实时计算的场景较多。

unhurried人生——冕临的博客 1400

Kafka学习(二):初识Kafka

学习目标初识KafkaKafka的基本介绍Kafka的好处分布式的发布与订阅系统kafka的主要应用场景 初识Kafka Kafka的基本介绍 官网:http://kafka.apache.org/ kafka是一个分布式,分区的,多副本的,多订阅者的消息发布订阅系统(分布式MQ系统),可以用于搜索日志,监控日志,访问日志等。 最初由linkedin公司开发,使用scala语言编写。 kafka对...

wzc8961661的博客 1932

使用Apache Kafka构建实时数据流处理平台的技术详解

Apache Kafka 是一个开源的分布式消息队列系统,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的顶级项目。Kafka 旨在处理大规模的实时数据流,具有高吞吐量、低延迟和可扩展性等特点。

qq_36287830的博客 1692

Apache Kafka教程--Kafka新手入门

今天,我们开始了我们的新旅程,这就是Apache Kafka教程。在这个Kafka教程中,我们将看到什么是Kafka,Apache Kafka的历史,为什么是Kafka。此外,我们还将学习Kafka架构、Kafka的组件和Kafka分区。此外,我们还将讨论Kafka的各种比较和Kafka的使用案例。除此之外,我们将在这个Kafka教程中看到各种术语,如Kafka Broker、Kafka Cluster、Kafka Consumer、Kafka Topics等。

serene的博客 844

Apache SkyWalking与Kafka集成:消息传递性能监控

在分布式系统中,消息队列(Message Queue,消息队列)作为解耦服务、削峰填谷的关键组件,其性能稳定性直接影响整个系统的可靠性。Apache SkyWalking作为开源的应用性能监控(Application Performance Monitoring,APM)工具,与Kafka的集成过程中常面临**消费端追踪断裂**的问题。本文将从原理分析、配置实践、指标监控到高级优化,全面讲解如何实...

gitblog_00132的博客 650
上一篇: Kafka集群partitions/replicas默认分配解析
下一篇: Apache Kafka中Follower如何与Leader同步数据
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值