gRPC API
3.0 版本引入
这是一项实验性功能,不建议在生产环境中使用。有关该功能进度的更新或如果您想留下反馈,请参阅相关的 GitHub issue。
OpenSearch gRPC 插件提供了一种替代的高性能传输层,使用 gRPC 与 OpenSearch 通信。它使用基于 gRPC 的协议缓冲区,以实现更低的开销和更快的序列化。根据初步基准测试结果,这减少了开销,加快了序列化速度,并改善了请求端延迟。
gRPC 插件的主要目标是:
- 提供 二进制编码 的替代方案,以取代基于 HTTP/REST 的通信。
- 提高 批量工作负载和大规模摄取场景的 性能。
- 使用原生 gRPC 存根,实现 Java、Go 和 Python 等语言之间更高效的 客户端集成。
启用插件
要在 OpenSearch 中启用 gRPC 插件 (transport-grpc
):
-
安装
transport-grpc
插件。有关更多信息,请参阅 安装插件。 - 将以下设置添加到
opensearch.yml
:aux.transport.types: [experimental-transport-grpc] aux.transport.experimental-transport-grpc.port: '9400-9500' // optional
或者,使用以下设置配置安全传输协议:
aux.transport.types: [experimental-secure-transport-grpc] aux.transport.experimental-transport-grpc.port: '9400-9500' // optional
- 根据需要配置其他设置(请参阅 高级 gRPC 设置)
grpc.host: localhost grpc.publish_host: 10.74.124.163 grpc.bind_host: 0.0.0.0
高级 gRPC 设置
OpenSearch 支持以下用于 gRPC 通信的高级网络设置:
-
grpc.host
(静态,列表):设置 OpenSearch 节点用于 gRPC 通信的地址。grpc.host
设置是grpc.bind_host
和grpc.publish_host
相同值时的组合。grpc.host
的替代方法是根据需要单独配置grpc.bind_host
和grpc.publish_host
。 -
grpc.bind_host
(静态,列表):指定 OpenSearch 节点绑定以监听传入 gRPC 连接的一个或多个地址。 -
grpc.publish_host
(静态,列表):指定 OpenSearch 节点发布给其他节点用于 gRPC 通信的一个或多个地址。
这些设置类似于 HTTP 网络设置。
使用 gRPC API
要提交 gRPC 请求,客户端必须拥有一组 protobufs。您可以通过以下方式获取 protobufs:
- 原始 protobufs:从 OpenSearch Protobufs GitHub 仓库 (v0.3.0) 下载原始 protobuf 模式。然后,您可以使用支持语言的 协议缓冲区编译器 生成客户端代码。
- 仅限 Java 客户端程序:从 Maven Central 仓库 下载
opensearch-protobufs
jar。
支持的 API
此功能目前正在开发中,支持以下 API: