http - 为什么kafka不用http?

标签 http apache-kafka

根据documention -

Kafka uses a binary protocol over TCP

Some people have asked why we don't use HTTP. There are a number of reasons, the best is that client implementors can make use of some of the more advanced TCP features--the ability to multiplex requests, the ability to simultaneously poll many connections, etc. We have also found HTTP libraries in many languages to be surprisingly shabby.

是否有任何明确的理由因为这看起来没有说服力?

最佳答案

Kafka 强调性能。

通常 HTTP over TCP 带来的开销并不大,只要您将 header 保持在最小大小即可。

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

您的消息越小,开销所占的比例就越大。

--

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

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

关于http - 为什么kafka不用http?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527025/

相关文章:

java - Kafka 错误连接到节点 ubuntukafka :9092 (id: 0 rack: null) (org. apache.kafka.clients.NetworkClient) java.net.UnknownHostException:

python - 为什么 python 套接字不能解析带有 http 的 url

php - 尝试在 Facebook 应用程序中提交表单时出现 HTTP 404 错误

ruby-on-rails - Typhoeus 不会关闭 https 连接

ssl - 使用 ssl+acl 配置的 Console Producer 中的 Leader 不可用 Kafka

scala - 线程 "main"java.lang.NoClassDefFoundError : com/fasterxml/jackson/databind/Module in Intellij while running Kafka App? 中出现异常

http - 我可以读取 http 响应直到某个子字符串吗?

http - MIME、Internet 媒体类型和 HTTP 之间有什么区别?

apache-spark - PySpark 直接从 Kafka 流式传输

streaming - 使用 Kafka 对多个数据源进行实时流式传输