Kafka
2025-04-20 21:35:01 0 举报
Kafka是一款开源流处理平台,由LinkedIn开发并捐赠给了Apache基金会。核心内容包括了三个部分:消息队列、数据管道和事件流处理。它可以高效地处理大规模数据流。文件类型多为日志文件,用于存储事件数据,如系统日志、检测数据以及用户行为数据。Kafka的高性能、可扩展性和耐用性是其主要的修饰语,确保了它能在分布式系统中稳定运行。其独特的分区和分布式特性,使得即便是在处理大量数据时,也能保证高吞吐量。此外,Kafka支持实时数据处理和流分析,这使得它在大数据时代得到了广泛应用,尤其是在构建实时数据管道和流式应用领域中。
作者其他创作
大纲/内容
Broker端
生产端
Broker1
Consumer Group2
消费端
Consumer
Consumer Group1
Kafka消费端不使用自动提交开启手动提交
Client2
Follower从Leader同步数据
Partition2
TopicB
既要保证消息的顺序性又不产生消息积压
Topic下的分区天生保证了顺序性
使用一个消费者组,且消费的时候指定消费Topic下的具体的分区Topic下只有一个分区,使用一个消费者组来消费这个Topic
Broker2
1.为了防止消息积压,消费端可以批量进行拉取消息,然后顺序消费,如果这一批消息中某一个消息消费失败了,先根据重试规则进行重试,如果达到重试次数之后依然没有成功,将这个消息发送给DLT中,继续去消费后面的消息,最后依然会批量提交这一批消息注意:如果一个分区对应有多个消费者,那么无法保证消息的顺序性2.批量拉取消息,然后放到内存队列中,然后利用线程池来进行多线程处理,最后批量提交偏移量
根据业务将Topic拆分出更多的分区,同比例的增加分区和对应的消费者
消息积压如何快速消费
生产端降低生产速率
将消息根据业务进行分类,在发送消息的时候可以指定对应的key以及对应的分区,将同一个业务发送到同一个Topic下的同一个Partition
消息不丢失
推荐:生产端:自定义灵活配置ProducerFactory、KafkaTemplate、KafkaAdmin、AdminClient消费端:自定义灵活配置ConcurrentKafkaListenerContainerFactory
1.消费端有对应的消费重试配置2.结合Spring-Retry实现消息的重试(推荐:因为比较灵活)注意:消费端在进行消费重试的时候要在业务层做好幂等性处理
消费者
消息重试
1.生产端有重试配置,最好结合生产端的幂等性配置来实现2.可以结合Spring-Retry来进行重试
Partition1
TopicA
1.创建更多的消费者组来消费这个积压的分区,因为同一个消费者组中只能有一个消费者来消费统一Topic下的同一Partition2.批量消费3.批量拉取消息,然后根据消息的业务特性放到不同的内存队列中,然后利用线程池使用不同的线程去处理唯一的一个队列4.优化消费端业务逻辑代码
Kafka集群
消息顺序消费
Broker端不要使用单节点,使用多副本机制,并且不同的master分区放到不同的Broker中
Client1
0 条评论
下一页