2017-10-06 4 views
1

카프카에서 새로 왔으며 해결할 수없는 질문이 있습니다.카프카 제작자가 매우 느림

저는 Kafka와 Zookeeper를 Windows 컴퓨터 (Linux는 아님)에 설치했으며 여러 파티션 (6 개에서 12 개 파티션 사이에서 재생)이있는 브로커를 만들었습니다.

소비자를 만들면 완벽하게 작동하고 좋은 속도로 읽지 만 제작자를 언급하면서 나는 많은 웹 사이트에서 볼 수있는 단순한 제작자를 만들었습니다. 제작자는 루프 안에 있으며 많은 짧은 메시지 (약 2000 개의 매우 짧은 메시지)를 보내고 있습니다.

소비자는 2000 년 메시지를 매우 질식하게 읽었지만 제작자는 초당 140 또는 150 개의 메시지로 브로커에게 메시지를 보냅니다. 전에 말했듯이, 나는 자신의 랩탑 (단지 1 개의 디스크)에서 작업하고 있지만, 초당 수백만 개의 메시지를 읽었을 때, 나는 그 빛과 멀어서 잊어 버린 것이 있다고 생각한다.

더 많은 제작자를 사용하면 결과가 더 나 빠집니다.

같은 노드에있는 브로커가 더 많거나 이와 비슷한 질문이 있습니까? 이 문제는 제 일에 저에게 부과되어 더 나은 컴퓨터의 가능성이 없습니다.

생산자를 생성하는 코드는

public class Producer { 

    public void publica(String topic, String strKey, String strValue) { 
     Properties configProperties = new Properties(); 
     configProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); 
     configProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, LongSerializer.class.getName()); 
     configProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); 

     KafkaProducer<String, String> producer = new KafkaProducer<String, String>(configProperties); 
     ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, strValue); 
     producer.send(rec); 
    } 
} 

하고 메시지를 보내는 코드는 (일부)입니다 :

Producer prod = new Producer(); 

for (int i = 0; i < 2000; i++) 
{ 
    key = String.valueOf(i); 
    prod.publica("TopicName", key, texto + " - " + key); 
    // System.out.println(i + " - " + System.currentTimeMillis()); 
} 
+0

제작 용 코드를 게시 할 수 있습니까? 나는 당신이 동 기적으로 생산하고 있다고 가정 할 것이다. 비동기로 생산해야한다. 디스크가 문제가되지 않아야합니다 (백그라운드에서 디스크로 플러시). – Treziac

+0

예, 내 게시물을 편집했습니다. 고마워요. –

답변

6

한 번 당신의 카프카 프로듀서를 만들고에게 필요한 모든 시간을 사용할 수있다 메시지를 보내려면

public class Producer { 
    private final KafkaProducer<String, String> producer; // initialize in constructor 

    public void publica(String topic, String strKey, String strValue) { 
     ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, strValue); 
     producer.send(rec); 
    } 
} 

또한 제작자 및 브로커 구성 availab을 살펴보십시오. le here. 응용 프로그램의 요구에 맞게 조정할 수있는 몇 가지 옵션이 있습니다.

+0

저는 54 살이고, 22 살 이하의 개발자였습니다. 때로는 초보자 인 것 같아요. 나는 카프카 프로듀서가 매번 만들어졌지만 한 번이 아니란 것을 깨닫지 못했습니다. 나는 변화를 만들고 ... –

+0

전에 : 2000 년 15 초에 msg. 이후 : 약 170 밀리 초 안에 2000 개의 메시지가 나타납니다. 많은 많은 감사합니다. –

+0

@Enrique López Moreno - 친절하게 답변을 수락하고 최대 득표하십시오. – alirabiee