私はカフカで新しく、私は解決できないという質問があります。カフカのプロデューサーは非常に遅い
私はKafkaとZookeeperをWindows(Linuxではなく)の自分のコンピュータにインストールしました。いくつかのパーティション(6と12のパーティション間で再生)を持つブローカーを作成しました。
コンシューマーを作成すると、完璧に動作して読みやすくなりますが、プロデューサーを参照して、多くのWebサイトで見ることができるシンプルなプロデューサーを作成しました。プロデューサーはループ内にあり、多くの短いメッセージ(約2,000の非常に短いメッセージ)を送信しています。
消費者は2000年のメッセージを非常にうっかり読んでいるのがわかりますが、プロデューサーは1日あたり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());
}
作成に使用したコードを投稿できますか? 私はあなたが同期して生成していると仮定します。非同期で生成する必要があります。ディスクは問題ではないはずです(ディスクへのフラッシュはバックグラウンドで行われます) – Treziac
はい、投稿を編集しました。ありがとうございました –