一、Kafka数据收集机制
Kafka集群中由producer负责数据的产生,并发送到对应的Topic;Producer通过push的方式将数据发送到对应Topic的分区
Producer发送到Topic的数据是有key/value键值对组成的,Kafka根据key的不同的值决定数据发送到不同的Partition,默认采用Hash的机制发送数据到对应Topic的不同Partition中,配置参数为{partitioner.class}
Producer发送数据的方式分为sync(同步)和async(异步)两种,默认为同步方式,由参数{producer.type}决定;当为异步发送模式的时候Producer提供重试机制,默认失败重试发送3次
Kafka Producer相关参数:
二、Kafka数据消费机制
Kafka有两种模式消费数据:队列和发布订阅;在队列模式下,一条数据只会发送给customer group中的一个customer进行消费;在发布订阅模式下,一条数据会发送给多个customer进行消费
Kafka的Customer基于offset对kafka中的数据进行消费,对于一个customer group中的所有customer共享一个offset偏移量
Kafka中通过控制Customer的参数{group.id}来决定kafka是什么数据消费模式,如果所有消费者的该参数值是相同的,那么此时的kafka就是类似于队列模式,数据只会发送到一个customer,此时Kafka类似于负载均衡;否则就是发布订阅模式; 在队列模式下,可能会触发Kafka的Consumer Rebalance
Kafka的数据是按照分区进行排序的(插入的顺序),也就是每个分区中的数据是有序的。在Consumer进行数据消费的时候,也是对分区的数据进行有序的消费的,但是不保证所有数据的有序性(多个分区之间)
Consumer Rebalance:当一个consumer group组中的消费者数量和对应Topic的分区数量一致的时候,此时一个Consumer消费一个Partition的数据;如果不一致,那么可能出现一个Consumer消费多个Partition的数据或者不消费数据的情况,这个机制是根据Consumer和Partition的数量动态变化的
Consumer通过poll的方式主动从Kafka集群中获取数据
Kafka Consumer相关参数说明:
相关推荐
3. **持久化**:消息存储在磁盘上,提供了一种持久化的数据存储方式,这使得Kafka能够长期保留数据,直到被消费者消费或过期。 4. **可扩展性**:Kafka的设计允许其水平扩展,可以通过增加更多的节点来提高处理能力...
3. **持久性**:消息持久化到磁盘,支持长时间的数据保留。 4. **可扩展性**:Kafka集群支持水平扩展,可以根据需要轻松添加更多节点。 #### 结论 Kafka凭借其独特的设计思想和技术实现,在消息传递领域具有显著的...
### Kafka研究和文档整理 #### 一、Kafka概述与架构 Kafka是一种分布式的、高吞吐...通过深入理解这些关键概念和技术点,可以更好地利用Kafka的强大功能来解决实际问题,如构建高效可靠的数据管道、日志收集系统等。
Kafka的复制机制确保了消息的高可用性和故障恢复能力。当集群中的一个Broker节点失败时,其他节点上的副本可以提供相同的数据,从而保证服务不会中断。此外,Kafka还提供了数据压缩功能,这能够降低存储和带宽的使用...
Kafka的设计目标是提供高吞吐量的消息传递能力,相较于ActiveMQ、RabbitMQ等传统消息队列,Kafka具备更高的性能、内置的分区机制、消息复制以及容错性,特别适合大数据量的实时处理和分析应用。 Kafka的核心概念...
2. **使用场景 (Use Cases)**:Kafka常用于日志收集、用户行为追踪、流式处理、消息系统、网站活动统计、运营指标收集、实时分析等。它也常作为微服务架构中的消息中间件,提供服务间的解耦和异步通信。 3. **快速...
通过分析`kafka-2.2.1-src`源码,我们可以更深入地理解Kafka的内部实现,例如消息的存储、网络通信、消费者心跳机制、分区分配策略等,这对于开发、运维和优化Kafka系统具有重要的实践价值。同时,源码学习也能帮助...
面试中,除了这些基础知识,还可能涉及分布式事务的一致性保证、SpringCloud的心跳机制、Eureka的缓存机制以及不同消息队列如RabbitMQ、RocketMQ、Kafka的对比等高级话题。理解并能灵活运用这些知识将有助于在面试中...