我是一位有用的助手,可以翻译文本。
我正在测试Kafka生产者的性能。目前,我遇到了两个客户端,它们的配置和使用略有不同:
通用部分:
我正在测试Kafka生产者的性能。目前,我遇到了两个客户端,它们的配置和使用略有不同:
通用部分:
def buildKafkaConfig(hosts: String, port: Int): Properties = {
val props = new Properties()
props.put("metadata.broker.list", brokers)
props.put("serializer.class", "kafka.serializer.StringEncoder")
props.put("producer.type", "async")
props.put("request.required.acks", "0")
props.put("queue.buffering.max.ms", "5000")
props.put("queue.buffering.max.messages", "2000")
props.put("batch.num.messages", "300")
props
}
第一个客户:
"org.apache.kafka" % "kafka_2.11" % "0.8.2.2"
使用方法:
val kafkaConfig = KafkaUtils.buildKafkaConfig("kafkahost", 9092)
val producer = new Producer[String, String](new ProducerConfig(kafkaConfig))
// ... somewhere in code
producer.send(new KeyedMessage[String, String]("my-topic", data))
第二个客户端:
"org.apache.kafka" % "kafka-clients" % "0.8.2.2"
使用方法:
val kafkaConfig = KafkaUtils.buildKafkaConfig("kafkahost", 9092)
val producer = new KafkaProducer[String, String](kafkaConfig)
// ... somewhere in code
producer.send(new ProducerRecord[String, String]("my-topic", data))
我的问题如下:
- 两个客户端之间有什么区别?
- 为了实现高比例应用程序的最佳性能和重写入性能,应考虑配置哪些属性?