在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
