apache kafka多个生产者与单个生产者的表现

时间:2017-01-02 10:36:00

标签: apache-kafka

我有一台kafka集群,一台机器上有12个经纪人,同一台机器上有一个动物园管理员 我使用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值,但我无法获得更好的性能

1 个答案:

答案 0 :(得分:1)

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

设置适当的Kafka集群(3个diff机器中的最小3个代理程序,16 GB ram,一些好的cpu)和单独的zookeeper集群,让主题正确分配(更多分区)并在Kafka代理中复制。现在,如果你测试你的生产者代码,它按预期工作。