阿帕奇卡夫卡多制片人与单制片人表演



我有 kafka 集群,一台机器上有 12 个代理,同一台机器上有 1 个动物园管理员我使用 kafka-python 生成消息

producer = KafkaProducer(bootstrap_servers='localhost:9092'  , acks=0 , linger_ms=10000 , batch_size=2000000 , buffer_memory=1003554432)
for i in range(50000):
    #50 Bytes message
    msg= 'FDASFAFAFAFAFADDFASFADFAFDASFAFFFFFFFFFFFFFFFFFFF'
    #my_topic has 12 partitions , kafka cluster has 12 brokers in single machine
    producer.send('my_topic', msg)

当我运行我的 python 代码时,我达到了吞吐量 20,000(每秒消息数)但是,当我同时运行多个相同的 python 代码时,我实现了相同的吞吐量(每秒 20,000 条消息)

当我运行单个生产者时,如何实现更好的吞吐量?

我测试了许多 batch.size 和 linger.ms 值,但我无法获得更好的性能

Kafka 生产者的性能取决于 Kafka 集群,在代码中,您不断尝试将消息发布到 Kafka。在通过我的工具进行性能测试时,我也有同样的经历。如果 Kafka 集群的容量较低,则并行生产者不会增加吞吐量。如果 Kafka 集群具有更大的容量,则更多的生产者将导致产生的消息数量增加。

使用单独的 zookeeper 集群设置正确的 Kafka 集群(在 3 台差异机器中至少有 16 个代理,一些好的 cpu),将主题正确分配(更多分区)并在 Kafka 代理之间复制。现在,如果您测试生产者代码,它将按预期工作。

最新更新