元数据

解释了元数据是什么、如何传输以及其用途。

元数据

解释了元数据是什么、如何传输以及其用途。

概述

元数据是一个旁路通道,允许客户端和服务器相互提供与 RPC 相关的信息。

gRPC 元数据是以键值对形式发送的数据,随初始或最终的 gRPC 请求或响应发送。它用于提供关于调用的附加信息,例如认证凭据、跟踪信息或自定义头部信息。

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

gRPC 元数据可以由客户端和服务器双方发送和接收。Headers 在客户端发送初始请求数据消息之前发送到服务器,同样,在服务器发送初始响应数据之前发送到客户端。Trailers 由服务器在关闭 RPC 时发送。

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

  • 认证:gRPC 元数据可用于向服务器发送认证凭据。这可以通过使用标准的 HTTP Authorization 头部来实现不同的认证方案,例如 OAuth2JWT
  • 跟踪:gRPC 元数据可用于向服务器发送跟踪信息。这可用于在分布式系统中跟踪请求的进度。
  • 自定义头部信息:gRPC 元数据可用于向服务器或从服务器向客户端发送自定义头部信息。这可用于实现应用程序特定的功能,例如负载均衡、限速或从服务器向客户端提供详细的错误消息。
  • 内部使用:gRPC 使用 HTTP/2 头部信息和 trailers,这些将与您的应用程序指定的元数据集成。

参阅 核心概念

注意事项

WARNING: Servers may limit the size of Request-Headers, with a default of 8 KiB suggested.

自定义元数据必须遵循 PROTOCOL-HTTP2 中列出的“Custom-Metadata”格式,但二进制头部信息无需进行 base64 编码除外。

Headers

Headers 在客户端发送初始请求数据消息之前发送到服务器,同样,在服务器发送初始响应数据之前发送到客户端。头部信息包括认证凭据以及如何处理 RPC 等内容。一些头部信息,例如 authorization,是由 gRPC 为您生成的。

自定义头部信息的处理取决于语言,通常通过 拦截器 实现。

Trailers

Trailers 是一种特殊的头部信息,在消息数据之后发送。它们在内部用于传达 RPC 的结果。在应用程序级别,自定义 trailers 可用于传达不直接属于数据一部分的信息,例如服务器利用率和查询成本。Trailers 仅由服务器发送。

更多详情,请参阅以下 gRFCs

语言支持

语言示例备注
JavaJava Header
Java Error Handling
GoGo Metadata
Go Metadata Interceptor
Go Documentation
C++C++ Metadata
NodeNode Metadata
PythonPython Metadata
Ruby示例即将发布
上次修改时间:2024年11月12日: Embed YouTube videos in different webpages (#1380) (196f408)