gpt4 book ai didi

apache-kafka - Apache Kafka 的原生二进制 TCP 协议(protocol)相对于它的 restful API 有什么好处?

转载 作者:行者123 更新时间:2023-12-02 00:41:33 27 4
gpt4 key购买 nike

根据 Apache Kafka 的文档,Kafka 在其原生 API 的通信中使用二进制 TCP 协议(protocol),但他们还为不支持 Apache Kafka 原生 API 的语言提供了基于 URL 的 restful API。我只是想知道 native 二进制 TCP 协议(protocol)(​​ native API 支持)是否比与代理节点的基于 URL 的静态通信有任何好处?而且我也在想,restful API 是否仍会保持 only once 属性?

编辑: Restful API 指南在这里:https://www.confluent.io/blog/a-comprehensive-open-source-rest-proxy-for-kafka其中解释了如何通过 restful API 生成和使用 Kafka 的消息

最佳答案

Apache Kafka 中没有包含 REST API 用于生成或使用 Java 中实现的 native Kafka 协议(protocol)客户端的消息。

Apache Kafka 中有一个用于配置 Kafka Connect 的 REST API。

有许多第三方 REST 代理实现(例如 Confluent Kafka REST 代理)允许通过 REST 接口(interface)发布/订阅,但这些是 Apache Kafka 之外的独立开源项目。

如果您想问使用 native Kafka Java Producer/Consumer API 而不是这些第三方 REST/HTTP 代理实现有什么优势,那么这些是一些原因:

一个好处是更大的并行性。 Kafka 客户端通常会打开与集群中多个代理的 TCP 连接,并跨同一主题的多个分区并行发送或获取数据。

另一个好处是更好的网络利用率,因为 HTTP header 可以为本来很小的消息增加很多大小,而 Kafka 的有线协议(protocol)是一种紧凑的二进制协议(protocol)。

Kafka 客户端自动处理负载平衡、故障转移和集群扩展或收缩,而 REST 客户端通常需要第三方负载平衡器来实现相同的功能。

Kafka 客户端可以发送自己的身份验证凭据以进行访问控制和带宽限制(配额),而所有 REST 客户端都将 kafka 集群视为一个 Kafka 客户端,因此具有共同的 ACL 权限。

Kafka 客户端库将消息一起缓冲和批处理成较小数量的 Kafka 生成或获取请求,而 HTTP 只能在程序员想要将它们作为单个批处理发布时对数据进行批处理。

native Kafka 协议(protocol)支持的不仅仅是生产者/消费者 api 公开的内容。还有一个用于创建主题和修改主题配置的管理 API。这些功能(尚未)通过最流行的 REST 代理实现公开。

关于apache-kafka - Apache Kafka 的原生二进制 TCP 协议(protocol)相对于它的 restful API 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46392321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com