//如下参数基于Kafka 2.3 Documentation
1. buffer.memory
官方解释:
生产者可用于缓冲等待发送到服务器的记录的内存总字节数。如果记录的发送速度快于它们可以发送到服务器的速度,
则producer端将在max.block.ms参数配置的时间内阻塞,超过该时间之后将会抛出异常。
此设置应大致对应于生产者将使用的总内存,但不是硬限制,因为生产者使用的并非所有内存都用于缓冲。
一些额外的内存将用于压缩(如果已启用压缩)以及维护飞行中的请求。大致意思就是配置的内存并不是
所有的都用来缓存消息数据,一部分还用作其他的事情
默认值:33554432字节=32MB 有效值:[0,...] 重要性: high
Kafka的客户端发送数据到服务器,不是来一条就发一条,而是经过缓冲的,也就是说,通过KafkaProducer
发送出去的消息都是先进入到客户端本地的内存缓冲里,然后把很多消息收集成一个一个的Batch,再发送到
Broker上去的,这样性能才可能高。
如果buffer.memory设置的太小,可能导致的问题是:消息快速的写入内存缓冲里,但Sender线程来不及把Request发送到Kafka服务器,会造成内存缓很
快就被写满。而一旦被写满,就会阻塞用户线程,不让继续往Kafka写消息了。
所以“buffer.memory”参数需要结合实际业务情况压测,需要测算在生产环境中用户线程会以每秒多少消息的频率来写入内存缓冲。经过压测,调试来
一个合理值
2. batch.size
同一个分区每批次要发送数据的大小字节数
每当多个记录被发送到同一个分区时,生产者将尝试将记录一起批处理成更少的请求,这有助于提高客
户机和服务器的性能,此配置以字节为单位控制默认批处理大小,不会尝试批处理大于此大小的记录,
发送到broker请求将包含多个批处理,每个分区一个批处理,其中包含可发送的数据,
小批量将使批处理不太常见,并可能降低吞吐量(批量大小为零将完全禁用批处理),非常大的批处理大小
可能会更浪费内存,因为我们总是会分配指定批处理大小的缓冲区,以等待额外的记录
默认值:16384=16kb 有效值:[0,...] 重要性:medium
3. linger.ms
linger.ms是sender线程在检查batch是否ready时候,默认大小是0ms。
Producer端也可能希望减少发送数据请求的数量,此设置通过添加少量的人为延迟来实现此目的,
即Producer将通过设置linger.ms参数值来实现单条数据的延迟发送,而不是立即发送单条记录,以允许
发送其他记录,以便可以将多条记录成批地放在一起,直到达到batch.size指定的大小时批次发送数据,
但是如果数据一直达不到batch.size,那么sender线程并不会一直傻傻的等待,lingger.ms设置的时间就
是该批次最后的发送期限,默认大小是0ms,代表数据发送0延迟
那么producer是按照batch.size大小批量发送消息呢,还是按照linger.ms的时间间隔批量发送消息呢?
这里先说结论:其实满足batch.size和ling.ms之一,producer便开始发送消息,所以batch.size和
linger.ms要结合起来使用
默认值:0 有效值:[0,...] 重要性:medium
4. bootstrap.servers
host/port列表,用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,....,无需添加所有的集群地址,kafka会根据提供的地址
发现其他的地址(你可以多提供几个,以防提供的服务器关闭)
props.put("bootstrap.servers", "192.168.137.131:9092,192.168.137.132:9092");
5. 消息K,V序列化类
key.serializer key的序列化类(实现序列化接口)
value.serializer value的序列化类(实现序列化接口)
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");
6. acks
生产者需要leader确认请求完成之前接收的应答数。此配置控制了发送消息的可靠性,支持以下配置:
acks=0(可能会大量丢数据) 如果设置为0,那么生产者将不等待任何消息确认。消息将立刻添加到socket缓冲区并考虑发送。在这种情况下不能保障消息被服
务器接收到。并且重试机制不会生效因为客户端不知道故障了没有。每个消息返回的offset始终设置为-1
acks=1(可能会丢数据),这意味着leader写入消息到本地日志就立即响应,而不等待所有follower应答。在这种情况下,如果响应消息之后但follower还未复
制之前leader立即故障,那么消息将会丢失。
acks=all(-1)(数据可能重复) 这意味着leader将等待所有副本同步后应答消息。此配置保障消息不会丢失只要至少有一个同步的副本或者。这是最强壮的可
用性保障
默认值:1 有效值:[all, -1, 0, 1] 重要性:high
props.put("acks", "1");
7. request.timeout.ms
配置控制客户端等待请求响应的最长时间,如果在超时时间过去之前未收到响应,则客户端将在必要
时重新发送请求,或者在重试次数用尽时使请求失败
默认值:30000 重要性: high
8. max.in.flight.requests.per.connection
阻塞Produce端在单个连接上发送的未确认请求的最大数量,请注意如果该参数设置为大于1,那么当
当前批次发送失败时由于重试(如果启用重试)的存在,send线程会后台重试发送当前失败的批次,
而客户端又没有阻塞,所以会继续接收下一批次的数据发送,如果刚好这两个批次的数据都是发往
同一个分区,如果刚好第二批次比重试的第一批次先发送成功,那么就会出现同一个分区数据顺序
错乱的现象,先发的数据排在后面,如果设置为1,就可以保证发送成功的数据是区内有序的
5 [1,...] low
9. retries
当前批次由于各种原因发送失败时重试次数,默认底层会重试,请注意此重试与客户端在收到错误时
重新发送记录没有区别,意思是客户端没必要在收到失败的ACK回调时再重新发送一遍当前数据,
该参数受到delivery.timeout.ms的限制,不论重试次数设置为多少,当达到delivery.timeout.ms
时间限制时,即使重试次数没有用完,那么本次发送会以失败告终,所以通常我们不怎么关心该
配置,而是使用delivery.timeout.ms来控制重试行为
默认值:2147483647 有效值:[0,...,2147483647] 重要性:high
10. retry.backoff.ms
在尝试重试对给定主题分区的失败请求之前等待的时间量,这避免了在某些失败场景下以紧密循环的方
式重复发送请求,即重试N次,每次重试之间的时间间隔毫秒数
100 [0,...] low
11. delivery.timeout.ms
生产者发送完请求接受服务器ACK的时间,该时间包括重试时间,linger.ms时间,request.timeout.ms
时间,所以该配置应该>=request.timeout.ms + linger.ms
120000=2分钟 [0,...] medium
12. List item
相关推荐
COT Buck和普通Buck的区别
传统的电流模控制的调制原理,由时钟脉冲信号 clk 的上升沿触发开始一个新的开关周期,d 由低变高,主开关闭合,流过它的电流和电感电流相等,并以固定斜率逐渐增大,直至 iL *Ri 与斜坡补偿信号 se 的和等于控制信号 vc;此时,比较器的输出电平由低变高,导通时间产生器被触发,其输出 d 由低变高,并产生一个固定的导通时间 Ton;然后 PWM 比较器的输出由低变高,导通时间产生器被触发,主开关闭合,电感电流逐渐增大,直到导通时间产生器计满固定的时间 Ton,d 变为低电平,主开关断开,周期结束。
producer参数的理解
kafka的producer默认是异步的方式,在大数据量的情况下可能会出现丢失数据的情况.但是同步的方式又比较低效,因此合理设置异步producer下的kafka参数既可以提高效率又可以不丢失数据.只是要对各参数有一个比较深入的了解.下面是我总结的对于处理安全外几乎所有producer参数的理解: 以python客户端为例子,java的参数名可能稍有不同但是含义是一样的 例子: produc...
SIwave:在 SIwave 中释放计算频率扫描的强大功能
AEDT 的电路工具允许注入正确的电压和电流。要使用电路工具,SIwave 必须首先使用 PI 求解器求解结构的 S 参数。
06_ActiveMQ_Producer.send( )参数
Producer.send( )最多有五个参数,分别为:参数目标地址:Queue具体数据信息:textMessage传递数据的模式: 表示持久化或非持久化优先级: 0-9 级别消息的过期时间TextMessage textMessage = session.createTextMessage("测试数据" + i); producer.send(textMessage);死信队列:ActiveMQ...
SPSS回归分析(线性:一元(简单)和多重;非线性logistic)
SPSS线性回归分析回归分析一、线性模型(针对连续因变量,线性关系)(一)简单线性回归(一元线性回归)1、绘制散点图2、建立简单(一元)线性回归模型3、建立模型后,检查预测结果(二)多重回归分析1、绘制矩阵分布散点图(论文专用你懂的)2、建立多重回归模型point 1:自变量加入方法:逐步(步进)法3、建立模型后,检查预测结果二、非线性模型(将非线性问题转换为线性问题)1、logistic分析的回归模型1.1 建立回归模型1.2 利用回归模型进行预测 根据之前的学习,通过评价实验得到了主观数据, 通过 描述
Python读取Matlab v7.3数据
文章目录Matlab保存数据Python读取 v7.3 Mat Matlab保存数据 在matlab设置中,常规->MAT文件,选择MATLAB版本7.3或更高版本保存数据。 注意保存数据的文件名为 corre.mat,保存的数据数组为data; 后面python的读取中会用到这两个参数 Python读取 v7.3 Mat 先安装hdf5storage库,再使用以下代码,就可以读取到mat中的数据,注意 import hdf5storage import numpy as np dataDi
【Kafka】深入图解Kafka producer 发送过程
文章目录producer 发送过程参考 producer 发送过程 在新版本的kafka中(从0.9开始),其实只有异步方式一种,是批量发送的方式 在producer端,存在2个线程: 一个是producer主线程,用户端调用send消息时,是在主线程执行的,数据被缓存到RecordAccumulator中,send方法即刻返回,也就是说此时并不能确定消息是否真正的发送到broker。 另外一个是sender IO线程,其不断轮询RecordAccumulator,满足一定条件后,就进行真正的网络IO发送
以太网测试用例(光模块线缆、网卡类设备、交换类设备)
LeCroy力科网络测试相关的测试用例分享:光模块/DAC/ACC/AEC/AOC测试,网卡类产品测试/GPU/DPU/SmartNIC,交换类产品测试。涉及物理层的FEC,SKEW,Tx/Rx Taps和Layer23层的网络性能测试/吞吐量延迟抖动丢包率背靠背性能,以及RDMA带状况的网络协议分析。同步提供400G高速的以太网的损伤,提供定量,可重复的负面压力测试环境。
python生成器 send()方法
用途:使用方法send()重置生成器的生成序列。 send方法有一个参数,该参数指定的是上一次被挂起的yield语句的返回值。 例:producer()通过send方法给xie()发送任务: def xie(): print("等待接受任务") while True: data = (yield) print("成功接受任务:",...
Verilog HDL 100道面试题及参考答案
在 Verilog HDL 中,参数(parameter)和宏定义(define)都可用于定义常量,但它们存在诸多不同之处。参数(parameter)是模块内部的常量定义,具有局部性。它在模块内部起作用,不同模块可以有同名的参数,且值可以不同。参数通常用于定义模块的一些配置信息,例如数据位宽、延迟时间等。参数的定义和使用是在模块的作用域内进行的,通过参数传递可以方便地对模块进行配置。endmodule在上述代码中,WIDTH是一个参数,用于定义加法器的位宽。通过改变WIDTH。
AUTOSAR EcuM模块介绍
AUTOSAR EcuM概述 AUTOSAR EcuM全称是Autosar ECU State Manager,位于Autosar BSW中System Service模块中,是一个独立于硬件的模块。 其主要作用是管理ECU上下电启动的状态,具体为: 初始化启动操作系统所需要的BSW(Basic Software)模块 为睡眠阶段和随后的唤醒完成微控制器的配置准备 管理ECU上的所有唤醒事件(EcuM通过唤醒验证协议验证已发生的唤醒,区分真实的唤醒事件,防止误唤醒) EcuM支持的特性列表 EcuM具有
Kafka - producer 参数整理与生产数据丢失分析
一.引言 使用 KafkaProducer 生产数据并按照 interval = 60s 的间隔进行日志回收,执行 KafkaProducer.send 参数分析 buffer_memory: kafka 客户端发送数据到服务器会经过缓冲区,通过 KafkaProducer 发送出去的小气都是先进入客户端本地的缓存里,再通过 Sender 线程将多个batch 的数据发送到 Broker,buffer_memory 初始化设置为 32mb 存在的问题: 消息写入过快或者写入量过大,Send.
Linux系统之部署经典魔塔小游戏
Linux系统之部署经典魔塔小游戏
Kafka学习整理四(Producer配置)
Kafka学习整理
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
Kafka-参数详解
我们从producer、consumer、broker三方面对Kafka的参数分别做下整理。
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
kafka producer 源码学习1
一 producer的原理 上一篇《kafka新版本功能》已经有关于producer的简介了。本篇就从producer的源码开始看。大概思路是以发送的方法send为主线,去梳理整个过程。 1.1 ProducerIntercptor对消息进行拦截 1.2 Serialzer对key和value进行序列化 1.3 Partitioner对消息选择合适的分区 1.4 RecordA...
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
mediasoup 学习笔记 【三】 Producer 数据生产者
Producer
Apache Kafka笔记(三):Producer的工作原理
Producer工作原理
RocketMQ 核心知识整理:工作原理、常用命令与常见问题解决
RocketMQ是分布式消息中间件,基于生产者-消费者模型工作。核心组件包括生产者(Producer)、消息服务器(Broker)、消费者(Consumer)和路由中心(NameServer)。消息流转流程为:Broker注册到NameServer,生产者/消费者通过NameServer获取Broker地址进行消息收发。常用命令包括服务启停(mqnamesrv/mqbroker)和管理命令(mqadmin)。常见问题及解决方案:1)生产者发送失败需检查NameServer配置;2)消费者收不到消息需核对消费
RocketMQ Producer源码分析:消息生产的实现过程
生产者的一些核心概念,便于后续深入分析
kafka配置参数
Kafka为broker,producer和consumer提供了很多的配置参数。 了解并理解这些配置参数对于我们使用kafka是非常重要的。本文列出了一些重要的配置参数。 官方的文档Configuration比较老了,很多参数有所变动, 有些名字也有所改变。我在整理的过程中根据0.8.2的代码也做了修正。 Boker配置参数 下表列出了Boker的重要的配置参数, 更多的...
logback-kafka-appender性能调优清单:Kafka Producer的7个关键参数详解(batch.size、linger.ms、compression.type)
logback-kafka-appender 是一款让 Java 应用把日志直接发布到 Apache Kafka 的 Logback 扩展,它把每条日志交给内嵌的 Kafka Producer 异步发送。很多团队用它替代传统的文件日志,却发现吞吐上不去、延迟忽高忽低。本文整理一份 logback-kafka-appender 性能调优清单,逐个详解 batch.size、linger.ms、com
Kafka 配置参数汇总及相关说明
问题导读 1、如何深入理解kafka? 2、kafka有哪些重要的配置参数? Kafka为broker,producer和consumer提供了很多的配置参数。 了解并理解这些配置参数对于我们使用kafka是非常重要的。 本文列出了一些重要的配置参数。 官方的文档 Configuration比较老了,很多参数有所变动, 有些名字也有所改变。我在整理的过程中根据
RocketMQ生产环境部署中producer与broker连接失败的排查与修复指南
本文详细解析了RocketMQ生产环境中producer与broker连接失败的常见问题及解决方案。从基础服务检查、网络连通性测试到配置文件优化,提供了全面的排查指南。特别针对云环境下的安全组配置、多网卡处理等特殊场景给出实战建议,帮助开发者快速定位和解决连接问题,确保消息队列服务的稳定运行。
Java 泛型: 什么是PECS(Producer Extends, Consumer Super)
最近在看《Java in a Nutshell》,其中提到了PECS,但英文的解释看的晕晕的: Type covariance This means that the container types have the same relationship to each other as the payload types do. This is expressed using the e
[转]Java 泛型: 什么是PECS(Producer Extends, Consumer Super)
以下内容转自: 原文链接:stackoverflow翻译:ImportNew.com-刘志军 译文链接:http://www.importnew.com/8966.html ----------------------------------------------------------------------- 什么是PECS? PECS指“Producer Ext...
1128



被折叠的 条评论
为什么被折叠?



