根据文件-kafka在tcp上使用二进制协议有人问我们为什么不使用http。原因有很多,最好的是客户机实现者可以利用一些更高级的tcp特性--多路请求的能力,同时轮询多个连接的能力,等等。我们还发现许多语言中的http库非常破旧。有没有明确的原因,因为这似乎没有说服力?
dgjrabp21#
此外,基于文本的http协议具有很多特性。解析http请求可能很复杂,因此比优化的二进制协议慢。(例如,即使是最简单的libmicrohttpd也很复杂。)
1条答案
按热度按时间dgjrabp21#
Kafka强调表现。
通常http over tcp带来的开销并不大,只要您将头的大小保持在最小值即可。
但是如果有大量的小消息来回传递,那么应该考虑http的开销。
消息越小,开销所占的比例就越大。
此外,基于文本的http协议具有很多特性。解析http请求可能很复杂,因此比优化的二进制协议慢。
(例如,即使是最简单的libmicrohttpd也很复杂。)