Kafka的一个配置参数

Kafka默认的消息大小为1000012,参数的名称为message.max.bytes.

1
2
3
kafka.server.KafkaConfig:
val messageMaxBytes = props.getIntInRange("message.max.bytes", 1000000 + MessageSet.LogOverhead, (0, Int.MaxValue))

但是对于topic来说,这个参数的名称却叫max.message.bytes,和前面的参数的名称很容易弄混。 Kafka应该将这两个参数统一成一个。
因此,如果你想对Boker统一设置的话,你需要在server.properties中设置:

1
message.max.bytes=1000000

如果针对单个的topic设置,你需要:

1
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic ABC --config max.message.bytes=1000000

另外,你还需要为Consumer设置fetch.message.max.bytes
为Boker设置replica.fetch.max.bytes (至少和message.max.bytes一样,最大Int.MaxValue)

stackoverflow针对这个问题有个问答
需要针对Boker和Consumer同时配置:

  • Boker
    1 replica.fetch.max.bytes
    2 message.max.bytes
  • Consumer
    3 fetch.message.max.bytes
    需要重启服务器。
    尤其第二项,如果没有配置,你不会得到任何的异常信息或者警告,很难发现此类问题。
    值设的太大也不好,因为会占用太大的内存用于数据传输(消费或者复制)

LinkedIn运行大规模的Kafka集群

英文原文: Running Kafka At Scale by Todd Palino, Staff Engineer, Site Reliability.
中文翻译: LinkedIn —— Apache Kafka 的伸缩扩展能力 by 袁不语, 社会主义好, 无若, 开心613, fr000, Shawock.

我在转载时根据原文对译文有所改动。

如果数据是高科技的血脉的话,Apache Kafka 就是 LinkedIn 公司正在使用中的心脏系统。我们使用 Kafka 在多个系统之间传递各类数据,它几乎每一天都和各种服务器打交道。这个架构的复杂性,以及架构实践中采用的各种取舍,衍生出一种快速又可靠地传输的大块数据需求。

阅读全文

Web Frameworks Benchmark 2015

翻译自InfoQ的 Web Frameworks Benchmark 2015
2014年TechEmpower发布了各种web框架做的benchmark结果 (参看我上一篇文章),这些web框架既包括web平台,还包括微框架(micro-frameworks). 一年过去了,TechEmpower又发布了新的测试结果, 可以看到前十名的web框架的性能又有了重要的变化。为了挑战最快的web框架比赛, 133位贡献者为测试框架提交了2,835 git commits, 一些框架显著提升了他们的RPS(responses per second),而其它的框架也得到了相应的提升。

阅读全文