元数据(Metadata)
解释元数据是什么,它是如何传输的,以及它的用途。
概述
元数据是一个侧通道,允许客户端和服务器交换与 RPC 相关的信息。
gRPC 元数据是一个键值对数据,在初始或最终的 gRPC 请求或响应中发送。它用于提供有关调用的附加信息,例如认证凭据、追踪信息或自定义头信息。
gRPC 元数据使用 HTTP/2 头部实现。键是 ASCII 字符串,而值可以是 ASCII 字符串或二进制数据。键是大小写不敏感的,并且不能以 grpc-
为前缀,因为该前缀保留给 gRPC 使用。
gRPC 元数据可以由客户端和服务器发送和接收。头部在客户端发送请求之前传递给服务器,在服务器发送响应之前传递给客户端。服务器关闭 RPC 时,会发送尾部。
gRPC 元数据有多种用途,包括:
-
认证:gRPC 元数据可以用于发送认证凭据到服务器。这可以用来实现不同的认证方案,例如使用标准 HTTP 授权头的
OAuth2
或JWT
。 -
追踪:gRPC 元数据可以用于向服务器发送追踪信息。这有助于追踪请求在分布式系统中的进展。
-
自定义头信息:gRPC 元数据可以用于发送自定义头信息到服务器或从服务器发送到客户端。这可以用于实现特定于应用程序的功能,如负载均衡、速率限制或从服务器向客户端提供详细的错误信息。
-
内部用途:gRPC 使用 HTTP/2 头部和尾部,这些将与应用程序指定的元数据集成。
注意事项
服务器可能会限制请求头的大小,默认建议为 8 KiB。 |
自定义元数据必须遵循 PROTOCOL-HTTP2 中列出的 “Custom-Metadata” 格式,除了二进制头部不需要进行 base64 编码。