kafka中,

调用send()函数,发送消息时,没有指定broker,

topic 与 broker 之间存在映射关系,映射关系保存在元数据中,

由kafka底层去维护。


连接池ProducerPool,包含SyncProducer。

SyncProducer负责维持 producer与broker的连接。

SyncProducer根据metaData中保存的broker信息,建立与相应broker的连接。


代理上线,下线时,Producer不会第一时间获得,

Producer只有调用send()方法时,才会去刷新 metaData。


消息缓存池,RecordAccumulator。

在消息累加器内部,每一个主题的每一个分区TopicPartition对应一个双端队列,队列中的元素都是RecordBatch。

一个分区的消息对应一个RecordBatch。

RecordBatch是同一个主题发送往同一个分区的多条消息组成。RecordBatch的数据结构。

ConcurrentMap<TopicPartition,  Deque<RecordBatch>>  

key        ---TopicPartition

value    ---Deque<RecordBatch>




Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐