0
点赞
收藏
分享

微信扫一扫

grpc metadata介绍

在http请求当中我们可以设置header用来传递数据,grpc底层采用http2协议也是支持传递数据的,采用的是metadata。

Metadata 对于 gRPC 本身来说透明, 它使得 client 和 server 能为对方提供本次调用的信息。

就像一次 http 请求的 RequestHeader 和 ResponseHeader,http header 的生命周期是一次 http 请求, Metadata 的生命周期则是一次 RPC 调用。


grpc是基于http2.0的rpc框架

那么如何传递一些用户自定义的数据呢?比如trace_id,span_id等

  通过http的头部进行传递

grpc对于http头部传递数据进行了封装

  metadata,单独抽象了一个包

  google.golang.org/grpc/metadata

  type MD map[string][]string 其实就是一个map


grpc metadata介绍

客户端添加metadata ,构造一个metadata


md := metadata.New(map[string]string{"key1": "val1", "key2": "val2"})


使用Pair函数

grpc metadata介绍_客户端

 客户端发送metadata

 grpc metadata介绍_服务端_02


客户端发送方式二


grpc metadata介绍_服务端_03


服务端接收metadata

grpc metadata介绍_golang链路追踪_04

服务端发送metadata

grpc metadata介绍_传递数据_05




实战:

客户端发送请求

grpc metadata介绍_golang链路追踪_06


服务端接收数据

grpc metadata介绍_传递数据_07



关联文章:

golang分布式链路追踪 OpenTracing  jaeger


举报

相关推荐

0 条评论