元数据
解释了元数据是什么,如何传输以及它的用途。
元数据
解释了元数据是什么,如何传输以及它的用途。
概述
元数据是一种旁路通道,允许客户端和服务器之间传递与 RPC 相关联的信息。
gRPC 元数据是与初始或最终 gRPC 请求或响应一起发送的键值对数据。它用于提供关于调用的额外信息,例如认证凭据、追踪信息或自定义头部。
gRPC 元数据使用 HTTP/2 头部实现。键是 ASCII 字符串,值可以是 ASCII 字符串或二进制数据。键不区分大小写,并且不能以 grpc-
前缀开头,该前缀是 gRPC 自身保留的。
gRPC 元数据可以由客户端和服务器双方发送和接收。头部在初始请求数据从客户端发送到服务器之前发送,类似地,在初始响应数据从服务器发送到客户端之前发送。尾部在服务器关闭 RPC 时发送。
gRPC 元数据有多种用途,例如:
- 认证:gRPC 元数据可用于向服务器发送认证凭据。这可用于使用标准的 HTTP Authorization 头部实现不同的认证方案,例如
OAuth2
或JWT
。 - 追踪:gRPC 元数据可用于向服务器发送追踪信息。这可用于追踪请求在分布式系统中的进度。
- 自定义头部:gRPC 元数据可用于向服务器或从服务器向客户端发送自定义头部。这可用于实现应用程序特有的功能,例如负载均衡、速率限制或从服务器向客户端提供详细的错误信息。
- 内部使用:gRPC 使用 HTTP/2 头部和尾部,它们将与您的应用程序指定的元数据集成。
参阅核心概念
注意事项
WARNING: Servers may limit the size of Request-Headers, with a default of 8 KiB suggested.
自定义元数据必须遵循 PROTOCOL-HTTP2 中列出的“Custom-Metadata”格式,但二进制头部不需要进行 base64 编码。
头部(Headers)
头部在初始请求数据消息从客户端发送到服务器之前发送,类似地,在初始响应数据从服务器发送到客户端之前发送。头部包括认证凭据以及如何处理 RPC 等信息。某些头部,例如授权头部,由 gRPC 为您生成。
自定义头部处理取决于具体语言,通常通过拦截器实现。
尾部(Trailers)
尾部是一种特殊的头部,在消息数据之后发送。它们在内部用于通信 RPC 的结果。在应用层面,自定义尾部可用于通信不直接属于数据本身的信息,例如服务器利用率和查询成本。尾部仅由服务器发送。
更多详情,请参阅以下 gRFC:
语言支持
语言 | 示例 | 备注 |
---|---|---|
Java | Java 头部 Java 错误处理 | |
Go | Go 元数据 Go 元数据拦截器 | Go 文档 |
C++ | C++ 元数据 | |
Node | Node 元数据 | |
Python | Python 元数据 | |
Ruby | 示例即将推出 |
最后修改于 2024 年 11 月 12 日:在不同网页中嵌入 YouTube 视频 (#1380) (196f408)