`

Kafka内核理解:消息的收集/消费机制

 
阅读更多

一、Kafka数据收集机制

Kafka集群中由producer负责数据的产生,并发送到对应的TopicProducer通过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相关参数说明:

分享到:
评论

相关推荐

    Kafka核心原理与实战(并不是原书,请看描述和评论下载)

    3. **持久化**:消息存储在磁盘上,提供了一种持久化的数据存储方式,这使得Kafka能够长期保留数据,直到被消费者消费或过期。 4. **可扩展性**:Kafka的设计允许其水平扩展,可以通过增加更多的节点来提高处理能力...

    kafka细心原理与实战

    3. **持久性**:消息持久化到磁盘,支持长时间的数据保留。 4. **可扩展性**:Kafka集群支持水平扩展,可以根据需要轻松添加更多节点。 #### 结论 Kafka凭借其独特的设计思想和技术实现,在消息传递领域具有显著的...

    kafka研究和文档阵整理

    ### Kafka研究和文档整理 #### 一、Kafka概述与架构 Kafka是一种分布式的、高吞吐...通过深入理解这些关键概念和技术点,可以更好地利用Kafka的强大功能来解决实际问题,如构建高效可靠的数据管道、日志收集系统等。

    Kafka源码剖析试读文章

    Kafka的复制机制确保了消息的高可用性和故障恢复能力。当集群中的一个Broker节点失败时,其他节点上的副本可以提供相同的数据,从而保证服务不会中断。此外,Kafka还提供了数据压缩功能,这能够降低存储和带宽的使用...

    开课吧-05分布式消息系统Kafka.pdf

    Kafka的设计目标是提供高吞吐量的消息传递能力,相较于ActiveMQ、RabbitMQ等传统消息队列,Kafka具备更高的性能、内置的分区机制、消息复制以及容错性,特别适合大数据量的实时处理和分析应用。 Kafka的核心概念...

    Apache Kafka 0.9.0说明文档

    2. **使用场景 (Use Cases)**:Kafka常用于日志收集、用户行为追踪、流式处理、消息系统、网站活动统计、运营指标收集、实时分析等。它也常作为微服务架构中的消息中间件,提供服务间的解耦和异步通信。 3. **快速...

    kafka-2.2.1-src.tgz

    通过分析`kafka-2.2.1-src`源码,我们可以更深入地理解Kafka的内部实现,例如消息的存储、网络通信、消费者心跳机制、分区分配策略等,这对于开发、运维和优化Kafka系统具有重要的实践价值。同时,源码学习也能帮助...

    Java后端开发+Java中级面试题

    面试中,除了这些基础知识,还可能涉及分布式事务的一致性保证、SpringCloud的心跳机制、Eureka的缓存机制以及不同消息队列如RabbitMQ、RocketMQ、Kafka的对比等高级话题。理解并能灵活运用这些知识将有助于在面试中...

Global site tag (gtag.js) - Google Analytics