Producer消息发送原理与Broker核心参数

2023-02-21  本文已影响0人  CoderInsight

producer消息发送原理

Producer 将消息发送给 Broker ,并形成最终的可供 Consumer 消费的 Log。

Producer生产者的原理.png

producer核心参数

(1), 常见异常处理

(2), 提升消息吞吐量

(3), 请求超时

(4), ACK参数

  • Producer向Broker中发送消息,在Producer中提供了消息确认机制,也就是说我们可以通过配置来决定消息发送到对应分区的几个副本才算成功。
    • 这个消息确认机制可以通过 request.required.acks 参数的值进行设置,不同的值可以在不同程度上保证数据的可靠性。
    • 配置示例:properties.put("acks","0")

(5), 重试乱序

消息重试是可能导致消息的乱序的,因为可能排在你后面的消息都发送出去了,你现在收到回调失败了才在重试,此时消息就会乱序,所以可以使用“max.in.flight.requests.per.connection”参数设置为1,这样可以保证producer必须把一个请求发送的数据发送成功了再发送后面的请求。避免数据出现乱序

broker核心参数

server.properties配置文件核心参数

【broker.id】
每个broker都必须自己设置的一个唯一id

【log.dirs】
这个极为重要,kafka的所有数据就是写入这个目录下的磁盘文件中的,如果说机器上有多块物理硬盘,那么可以把多个目录挂载到不同的物理硬盘上,然后这里可以设置多个目录,这样kafka可以数据分散到多块物理硬盘,多个硬盘的磁头可以并行写,这样可以提升吞吐量。

【zookeeper.connect】
连接kafka底层的zookeeper集群的

【Listeners】
broker监听客户端发起请求的端口号,默认是9092

【unclean.leader.election.enable】
默认是false,意思就是只能选举ISR列表里的follower成为新的leader,1.0版本后才设为false,之前都是true,允许非ISR列表的follower选举为新的leader

【delete.topic.enable】
默认true,允许删除topic

【log.retention.hours】
可以设置一下,要保留数据多少个小时(默认168小时),这个就是底层的磁盘文件,默认保留7天的数据,根据自己的需求来就行了
上一篇下一篇

猜你喜欢

热点阅读