【发布时间】:2016-06-02 07:23:55
【问题描述】:
根据documention——
Kafka 使用基于 TCP 的二进制协议
有人问我们为什么不使用 HTTP。有很多原因,最好的原因是客户端实现者可以利用一些更高级的 TCP 特性——多路复用请求的能力、同时轮询多个连接的能力等。我们还在许多地方发现了 HTTP 库语言出奇地破旧。
是否有任何明确的理由,因为这似乎没有说服力?
【问题讨论】:
标签: http apache-kafka
根据documention——
Kafka 使用基于 TCP 的二进制协议
有人问我们为什么不使用 HTTP。有很多原因,最好的原因是客户端实现者可以利用一些更高级的 TCP 特性——多路复用请求的能力、同时轮询多个连接的能力等。我们还在许多地方发现了 HTTP 库语言出奇地破旧。
是否有任何明确的理由,因为这似乎没有说服力?
【问题讨论】:
标签: http apache-kafka
Kafka 强调性能。
通常,HTTP over TCP 带来的开销并不大,只要您将标头保持在最小大小即可。
但如果你有大量的小消息来回传输,则应该考虑 HTTP 的开销。
您的消息越小,开销所占的百分比就越大。
--
此外,基于文本的 HTTP 协议还有很多特性。解析 HTTP 请求可能很复杂,因此比优化的二进制协议慢。
(例如,即使是最简单的 libmicrohttpd 也很复杂。)
【讨论】: