🌿在前面的介绍中,我们介绍了kafka的基础架构主要包含以下几个部分:生产者、消费者、消费者组、 broker、Topic、Replica(副本)、leader、follower。今天我们来介绍其中的消息生产者。对往期内容感兴趣的同学可以参考👇:
🌰废话不多说,让我们开始今日份的学习吧。
如下图所示,我们展示的是一个消息发送的过程:
我们来解释一下这个过程:主要有main线程和sender线程2个部分
这里所说同步和异步发送,主要是指生产者将消息传输到双端队列 RecordAccumulator的方式。
如下图红色框框内的数据,同步发送是指外部数据从main线程穿输到双端队列中去后,直到该批数据被kafka集群拉取到brock中去后,下一批的数据才能继续传输到双端队列中去。
如下图黄色框框,代表的是分区内一批一批的数据,main线程只管将数据写入双端队列,而不用管数据是否被kafka集群拉取成功。
生产者的分区是在分区器partitioner中进行分区的,分区的概念就是将数据进行切割,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。
如下图:100T的数据可以分区成3份,3份大小可以一样,也可以不一样,消费者可以根据分区同时消费数据。
kafka的默认分区方法叫做:DefaultPartitioner分区方法
1. If a partition is specified in the record, use it.
2. If no partition is specified but a key is present choose a
partition based on a hash of the key.
3. If no partition or key is present choose the sticky
partition that changes when the batch is full.
解释一下:
可以通过 1.定义类实现 Partitioner 接口。2. 重写 partition()方法。进行自定义分区操作。
生产者如何设置可以提高数据的吞吐量呢?
-《尚硅谷大数据技术之 Kafka》
-《kafka权威指南》
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://liuxiaocong.blog.csdn.net/article/details/124539276
内容来源于网络,如有侵权,请联系作者删除!