microservices - 在 gRPC 服务间通信中传播 traceID
问题描述
我正在开发一些 gRPC 微服务,并使用上下文传递任何标头和元数据。我正在使用 opentracing 进行跟踪,并且我的一个 gRPC 服务调用了其他 gRPC 服务,此时我在传播上下文时遇到了问题,因为它没有保留元数据和 traceID。我的代码如下
func A(ctx context.Context) {
metadata:=extractMetadata(ctx)
conn := &grpc.ClientConn{}
zipkinCtx := opentracing.SpanFromContext(ctx).Context().(gozipkin.SpanContext)
client := pb.NewDClient(conn)
reply, err := client.LookupProperty(metadata.NewOutgoingContext(context.Background(), metadata.New(metadata)))
}
在上面的代码中,我正在调用服务D
,我必须使用我可以接受的元数据重新创建一个新的上下文,但我不确定如何将 tracIds 传播到服务D
解决方案
推荐阅读
- python - Keras添加层和NoneType:TypeError,不可下标
- image - 如何使用 react-navigation 在 react-native 中设置带有导航栏的背景图像
- linux - 将 Linux grep 命令转换为 windows
- c# - 如何使用 Windows 应用程序创建谷歌翻译而不出现错误应用程序默认凭据不可用。?
- algorithm - 返回数组中索引 k 处整数的最大值
- solr - 如何更新 Solr 集合中的字段名称?
- javascript - 如何在 Javascrpt 的 urlParams.get 中获取“&”
- database - 我是否应该通过仅使用增量文件来同步两个数据库,操作系统我应该使用增量+完全同步的组合(在每个月底)
- javascript - 获取两个数字之间的百分比差 JavaScript
- javascript - 为什么我的 for 循环没有从我的对象数组中提取正确的数据?