我在测量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))
我的问题是:
两个客户机之间有什么区别?
对于高规模的应用程序,我应该配置哪些属性以实现最佳的高重写性能?
1条答案
按热度按时间goqiplq21#
两个客户机之间有什么区别?
它们只是新旧api的对比。从0.8.2.x开始,kafka公开了一组新的api来与kafka一起工作,这是旧的
Producer
这和KeyedMessage[K,V]
新api在哪里KafkaProducer
与ProducerRecord[K,V]
:从0.8.2版本开始,我们鼓励所有新开发人员使用新的java producer。该客户端经过生产测试,通常比以前的scala客户端更快、功能更全面。
您最好使用新的支持版本。
对于高规模的应用程序,我应该配置哪些属性以实现最佳的高重写性能?
这是一个非常广泛的问题,很大程度上取决于软件的体系结构。它随规模、生产者数量、消费者数量等而变化。。有许多事情需要考虑。我建议你仔细阅读文档,阅读有关Kafka建筑和设计的章节,以便更好地了解Kafka的内部工作原理。
一般来说,根据我的经验,您需要平衡数据的复制因子、保留时间和每个队列进入的分区数。如果你有更具体的问题,你一定要发布一个问题。