kafka生产消息核心流程

本文介绍了Kafka 0.8.2版本后引入的Java客户端,并重点讲解了生产者配置参数,特别是acks选项,包括0、1、-1三种模式下数据丢失的可能性和性能影响。此外,还提到了batch.num.messages参数,它控制批量发送消息的数量,以及message.send.max.retries参数,定义了消息发送失败后的重试次数。
摘要由CSDN通过智能技术生成

生产者

kafka在0.8.2版本开发了一套java版本的client api,对原来包里面的生产者和消费者逻辑用java语言重新实现,独立了一个新的client包。在 0. 10 版本之后的 Kafka推荐使用java版本的客户端。在0.8.2版本之前还是使用老的Scala语言编写的客户端。
在启动生产者之前一些重要的配置介绍。生产者有很多属性可以设置,大部分都有合理的默认值,无需调整。有些参数可能对内存使用,性能和可靠性方面有较大影响。
acks:代理收到消息后向生产者发生消息确认,生产者根据acks值做出相应的处理。通过设置request.required.acks 设置,取值可为 0、-1 、 l 中之一,默认取 l 。
(1)acks=0 生产者发送信息到代理,不需要等待代理响应,可以连续的发送消息。这种提供的吞吐量,但是有可能会丢失数据。
(2)acks=1 生产者发送消息到代理,需要等待leader副本已经成功的将消息写入到日志文件中,这种方式一定程度上降低了丢失数据的可能性,但是也会出现丢失数据的情况。如果leader副本在接收到消息后突然宕机,然后其他的follower副本还未来得及进行数据同步,这个时候重新进行leader选举,新的leader副本是从原理的follower副本中选举的,那么原理leader副本中接收到的还未来得及同步得消息就会丢失。
(3)acks=-1 leader副本和其他isr列表中的副本都完成了数据存储才会向生产者发送确认消息。这种策略只要leader副本和follower副本至少有一个存活数据就不会丢失。为了保证数据不丢失,就需要保证同步的副本个数需要至少大于1 ,通过配置 min.insync.replicas 设置,当同步副本数不足此配置值时,生产者会抛出异常。这种吞吐量比较高。
batch.num.messages :Kafka 支持消息批量向代理特定分区 发送消息,表示每次批量发送消息的最大消息数, 当生产者采用同步模式发送时该配置项将失效。
message.send.max.retries 生产者向代理发送消息失败后重试次数,默认是3次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值