为什么kafka不使用http?

iaj*_*jnr 6 http apache-kafka

根据文件-

Kafka 使用基于 TCP 的二进制协议

有人问为什么我们不使用HTTP。原因有很多,最好的一点是客户端实现者可以利用一些更高级的 TCP 功能——多路复用请求的能力、同时轮询多个连接的能力等。我们还在许多地方找到了 HTTP 库。语言出奇的简陋。

是否有任何明确的原因因为这似乎不令人信服?

csh*_*shu 12

卡夫卡强调性能。

通常,只要将标头保持在最小大小,HTTP 通过 TCP 带来的开销并不大。

但如果有大量的小消息来回传输,则应考虑 HTTP 的开销。

消息越小,开销所占的大小百分比就越大。

--

此外,基于文本的HTTP协议还有很多特性。解析 HTTP 请求可能很复杂,因此比优化的二进制协议慢。

(例如,即使是最简单的 libmicrohttpd 也很复杂。)