元数据

解释了元数据是什么,如何传输以及它的用途。

元数据

解释了元数据是什么,如何传输以及它的用途。

概述

元数据是一种旁路通道,允许客户端和服务器之间传递与 RPC 相关联的信息。

gRPC 元数据是与初始或最终 gRPC 请求或响应一起发送的键值对数据。它用于提供关于调用的额外信息,例如认证凭据、追踪信息或自定义头部。

gRPC 元数据使用 HTTP/2 头部实现。键是 ASCII 字符串,值可以是 ASCII 字符串或二进制数据。键不区分大小写,并且不能以 grpc- 前缀开头,该前缀是 gRPC 自身保留的。

gRPC 元数据可以由客户端和服务器双方发送和接收。头部在初始请求数据从客户端发送到服务器之前发送,类似地,在初始响应数据从服务器发送到客户端之前发送。尾部在服务器关闭 RPC 时发送。

gRPC 元数据有多种用途,例如:

  • 认证:gRPC 元数据可用于向服务器发送认证凭据。这可用于使用标准的 HTTP Authorization 头部实现不同的认证方案,例如 OAuth2JWT
  • 追踪: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:

语言支持

语言示例备注
JavaJava 头部
Java 错误处理
GoGo 元数据
Go 元数据拦截器
Go 文档
C++C++ 元数据
NodeNode 元数据
PythonPython 元数据
Ruby示例即将推出
最后修改于 2024 年 11 月 12 日:在不同网页中嵌入 YouTube 视频 (#1380) (196f408)