1 Kafka生产者核心参数配置
kafka优化
性能接近原生
我们先看看kafka生产者发送数据的流程,如下图:
下面是重要的优化参数及解释,大家根据自己的需求调整
2 生产者如何提高吞吐量
3 数据可靠性
这个我们通常根据业务需求,设置为acks:-1,来保证数据不丢失
至少一次(At Least Once)= ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2
4 数据去重
5 数据有序
Kafka中的数据有序性主要依赖于正确的配置和实践。以下是一些关键步骤和配置,以确保Kafka中的数据有序
单分区配置:
Kafka中的数据是按分区存储的,每个分区内的数据是有序的。
如果希望整个主题的数据都有序,可以将主题配置为只有一个分区。这样,所有消息都会按顺序写入这个分区,从而保证全局有序性。
但请注意,单分区配置会限制Kafka的并行处理能力,进而影响吞吐量。
多分区配置:
如果需要更高的吞吐量,可以将主题配置为多个分区。
在多分区情况下,Kafka无法保证跨分区的消息顺序。因此,如果业务场景需要跨分区保证顺序,需要在消费端进行额外的排序处理。
二、生产者配置
指定分区:
生产者在发送消息时,可以指定消息的分区。如果希望保持消息的顺序性,可以将相关消息发送到同一个分区。
可以通过为消息指定一个键(key),并根据键的哈希值与分区数取模来决定数据存储到哪个分区。
幂等性和事务:
事务允许将一系列消息发送视为一个原子操作。这可以确保即使发生故障,已发送的消息也不会丢失,且顺序保持不变。
三、消费者配置
分区分配策略:
Kafka确保每个分区只能被同一个消费者组中的一个消费者消费。这保证了每个分区内消息的消费顺序。
消费者可以采用分区分配策略,如手动分配分区,以确保每个消费者实例只处理特定的分区。
维护偏移量:
消费者需要维护自己消费到的偏移量(offset)。在自动提交偏移量的情况下,如果消费者在消费过程中发生故障,可能会导致消息被重复消费或丢失。
为避免这种情况,可以手动关闭自动提交偏移量,并在成功消费消息后手动提交偏移量。
四、其他配置
副本机制:
Kafka为分区引入了多副本机制,以确保数据的可靠性和安全性。
为确保消息在所有副本中同步,可以设置acks=all和replication.factor大于等于3。
消息时间戳:
Kafka支持为消息添加时间戳,这有助于在消费端进行更精细的有序性控制。
6 数据乱序
下一篇我们接着说说消费者生产参数调优,欢迎关注
领取专属 10元无门槛券
私享最新 技术干货