Kafka深度解析:面试重点与消息队列原理

需积分: 42 12 下载量 105 浏览量 更新于2024-08-06 收藏 1.51MB PDF 举报
"该资源是一份关于面试问题的文档,主要涉及Kafka的相关知识,包括ISR、OSR、AR的概念,HW、LEO等的含义,消息顺序性、分区器、序列化器、拦截器的工作原理,以及Kafka生产者客户端的结构、消费组和消费者的关系、消费位移提交规则、重复消费和消息漏消费的情况分析。同时,文档还介绍了Kafka作为分布式消息队列的基本概念、应用场景和优点,以及消息队列的两种模式:点对点模式。" 在Kafka中,ISR(InSyncReplicas)表示与领导者副本保持同步的复制副本集合,这些副本确保了数据的一致性。OSR(OutofSyncReplicas)是指那些由于网络延迟或其他原因而未能及时与领导者同步的副本。AR(AllReplicas)是所有副本的集合,包括ISR和OSR。 HW(HighWatermark)代表高水位标记,是领导者副本确定的已确认的最新消息的偏移量。LEO(LogEndOffset)是每个副本最新的消息偏移量,即日志的末尾位置。 Kafka的消息顺序性通过分区实现,每个分区内的消息按照生产顺序存储和消费。分区器决定了消息发送到哪个分区,序列化器负责将消息转换为字节流,而拦截器则允许在消息发送到分区之前或之后进行自定义处理。处理顺序通常是:生产者先应用拦截器,然后由分区器决定分区,最后序列化器进行序列化。 Kafka的生产者客户端通常包含多个线程,包括发送线程用于将消息发送到服务器,以及压缩线程(如果启用压缩)用于压缩消息。这些线程协同工作以提高吞吐量和效率。 当消费组中的消费者数量超过topic的分区数时,确实会有消费者无法分配到任何分区,从而无法消费数据。消费者提交的消费位移通常是offset+1,意味着提交的是当前消费消息的下一个偏移量,以避免重消费同一消息。 造成重复消费的情景可能包括:消费者提交位移失败导致重试、配置了不正确的group.id或使用了earliest的offset策略。消息漏消费的情况可能发生在消费者未正确提交位移、网络问题导致消息未送达或者消费者实例故障等。 Kafka作为一种分布式消息队列,提供了高效的数据传输能力和强大的容错机制,广泛应用于大数据实时处理场景。它的异步通信、解耦、可恢复性、缓冲和峰值处理能力等特性使其在现代系统架构中扮演着重要角色。消息队列的两种模式——点对点模式,强调消息的一对一传递和消费后的清除,保证了消息的不可重复消费。