Kafka Java生产者模型

Producer初始化

初始化KafkaProducer实例,同时通过Config数据初始化MetaData、NetWorkClient、Accumulator和Sender线程。启动Sender线程。

MetaData信息

记录Cluster的相关信息,第一次链接使用Config设置,之后会从远端poll信息回来,比如host.name等信息。

Accumulator实例

Accumulator持有一个Map实例,key为TopicPartition(封装了topic和partition信息)对象,Value为RecordBatch的Deque集合。

NetworkClient实例

通过MetaData信息初始化NetworkClient实例,NetworkClient使用NIO模型。

Sender线程

sender持有NetworkClient和Accumulator实例,在Producer实例初始化完成之后,持续地将Accumulator中的Batch数据drain到一个List中,调用NetworkClient进行发送。

发送

调用Producer实例进行消息发送,首先将消息序列化之后追加到Accumulator的Deque的最后一个batch中,之后唤醒sender->client->Selector进行消息发送。

Comments

comments powered by Disqus