kakfa producer吞吐量与partition数量的关系

在进行Kafka性能测试时,发现producer的吞吐量随着partition数量的增加而增大,但达到一定数量后反而下降。这是因为partition数量增加意味着可用batch增多,从而提高吞吐量。然而,当partition数量过多时,导致遍历和调度开销增大,反而降低了吞吐效率。通过源码分析,可以理解producer吞吐量与partition之间的这种关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做kafka性能测试,发现随着partition的数量增加,producer的吞吐量增大,但当partition增长到一定数量时吞吐量又有所下降。这在我看来是十分奇怪的,producer的吞吐量为什么会和partition数量相关,producer的吞吐量不应该只和producer有关吗。为此我翻看了下源码,找到了为何partition数量增大,吞吐量会增大的原因。

 for (Node node : nodes) {
            int size = 0;
            List<PartitionInfo> parts = cluster.partitionsForNode(node.id());
            List<ProducerBatch> ready = new ArrayList<>();
            /* to make starvation less likely this loop doesn't start at 0 */
            int start = drainIndex = drainIndex % parts.size();
            do {
                PartitionInfo part = parts.get(drainIndex);
                TopicPartition tp = new TopicPartition(part.topic(), part.partition());
                // Only proceed if the partition has no in-flight batches.
                if (!isMuted(tp, now)) {
                    Deque<ProducerBatch> deque = getDeque(tp);
                    if (deque != null) {
                        synchronized (deque) {
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值