栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka生产者——简介

kafka生产者——简介

kafka生产者——简介

一、生产者二、kafka 生产者发送流程三、生产者使用的一些参数简介

前两节我们大致介绍了kafka以及kafka的命令行操作,所以不管我们把kafka作为存储平台还是消息队列,我们至少都需要一个生产者向其中发送消息,那么在kafka使用的时候针对生产者我们有怎样的诉求呢?而这些诉求我们该使用怎样的方式去解决?

一、生产者

生产者:故名思义就是产生内容的一方。
那么作为生产内容的一方,我们应该保证我们的消息可靠!而在生产中我们则需要保证我们的数据不重复,有序,吞吐量提高等等

二、kafka 生产者发送流程

之前查看时发现了一个相对完整的内容如下(侵权删除):
kafka发送流程图引用链接

总结:在消息发送的过程中,会涉及到了两个线程——main线程和Sender线程。在main线程中创建了一个双端队列RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka Broker

注意事项:
1)RecordAccumulator 默认大小为32M
2)Sender线程拉取数据有两个参数:

batch.size:只有数据积累到batch.size之后,sender才会发送数据。默认16klinger.ms:如果数据迟迟未达到batch.size,sender等待linger.ms设置的时间到了之后就会发送数据。单位ms,默认值是0ms,表示没有延迟。

3)数据发送后有一个应答策略acks

0:生产者发送过来的数据,不需要等数据落盘应答1:生产者发送过来的数据,Leader收到数据后应答-1(all):生产者发送过来的数据,Leader和ISR队列里面的所有节点收齐数据后应答。-1和all等价 三、生产者使用的一些参数简介

kafka官网链接

名称含义
bootstrap.servers生产者连接集群所需的broker地址清单。例如hadoop102:9092,hadoop103:9092,hadoop104:9092,可以设置1个或者多个,中间用逗号隔开。注意这里并非需要所有的broker地址,因为生产者从给定的broker里查找到其他broker信息
key.serializer和value.serializer指定发送消息的key和value的序列化类型。一定要写全类名。
buffer.memoryRecordAccumulator缓冲区总大小,默认32m。
batch.size缓冲区一批数据最大值,默认16k。适当增加该值,可以提高吞吐量,但是如果该值设置太大,会导致数据传输延迟增加。
linger.ms如果数据迟迟未达到batch.size,sender等待linger.time之后就会发送数据。单位ms,默认值是0ms,表示没有延迟。生产环境建议该值大小为5-100ms之间
acks0:生产者发送过来的数据,不需要等数据落盘应答。 1:生产者发送过来的数据,Leader收到数据后应答。 -1(all):生产者发送过来的数据,Leader+和isr队列里面的所有节点收齐数据后应答。默认值是-1,-1和all是等价的
max.in.flight.requests.per.connection允许最多没有返回ack的次数,默认为5,开启幂等性要保证该值是 1-5的数字
retries当消息发送出现错误的时候,系统会重发消息。retries表示重试次数。默认是int最大值,2147483647。如果设置了重试,还想保证消息的有序性,需要设置MAX_IN_FLIGHT_REQUESTS_PER_ConNECTION=1否则在重试此失败消息的时候,其他的消息可能发送成功了。
retry.backoff.ms两次重试之间的时间间隔,默认是100ms
enable.idempotence是否开启幂等性,默认true,开启幂等性
compression.type生产者发送的所有数据的压缩方式。默认是none,也就是不压缩。 支持压缩类型:none、gzip、snappy、lz4和zstd
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号