• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
grpc metadata介绍
gprc请求 怎么传递类似http的header信息

在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函数

 客户端发送metadata

 

 

客户端发送方式二

 

 

服务端接收metadata

服务端发送metadata

 

 

 

实战:

客户端发送请求

 

服务端接收数据

 

 

关联文章:

golang分布式链路追踪 OpenTracing  jaeger

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/14339928.html

posted on 2021-01-28 15:10  孙龙-程序员  阅读(2857)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3