Kafka发送流程

发布时间:2023年12月18日

????????首先我们要将外部数据导入到集群,首先在main线程中创建producer 对象,调用send方法发送数据,拦截器为可选项,通过序列化器对数据序列化,因为需要跨节点通讯,分区器会对每个数据进行分区,发送到指定分区;

? ? ? ? 所谓的分区其实是一个缓存队列(双端队列),队列大小为32m,Batchsize为16k,Batchsize装满之后,或者lingerms时间到了,sender线程就来主动拉取数据;

? ? ? ? 发送到集群后,如果没有及时应答,队列能缓存5个请求,selector负责打通底层链路,集群收到数据后进行一个副本的同步,同步完成后进行应答,应答级别有三种:

? ? ? ? 0:生产者发送过来数据,不需等待数据落盘;

????????1:生产者发送过来数据,需等待leader数据落盘应答;

? ? ? ? -1:生产者发送过来数据,需等待leader数据和所有的follower数据落盘应答;

????????若应答成功,清理请求,清理分区(双端队列)里的数据,若没有成功,再不断地重试发送,直到成功。

文章来源:https://blog.csdn.net/zmx_messi/article/details/135061145
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。