【发布时间】:2019-11-07 01:16:27
【问题描述】:
我的 API 网关启动了一个跟踪器和一个用于验证电子邮件的跨度。然后将其传递给user-service 进行验证。
我想将这个 span 详细信息作为 json 对象传递给 user-service 并启动另一个 span 作为
tracer.start_span('Validate Email', child_of=API_gateway_span)
为此,我使用了以下结构:
type checkEmail struct {
GatewayTracerSpan opentracing.SpanContext `json: gatewayTracerSpan`
Email string `json: email`
Uuid string `json: uuid`
}
在function()
validateEmailSpan := apitracer.tracer.StartSpan("Validate Email")
emailJson := checkEmail{
GatewayTracerSpan: validateEmailSpan.Context(),
Email: email,
Uuid: uuid,
}
但GatewayTracerSpan 始终为空值。
我刚刚开始分布式跟踪。这里我选择使用 json 而不是原生 http-headers,因为它可以轻松升级任何协议更改。
这可能吗?如果是这样,我做得对吗?或者我犯了什么错误?
【问题讨论】:
-
您需要
validateEmailSpan.Context()提供什么?您只是想查看在不同服务中创建、链接在一起的跨度,还是需要来自validateEmailSpan.Context()的一些特定信息? -
@eminlala 我只想将跨度数据传递给我的下一个服务并启动一个新跨度,因为将 API 网关跨度保持为父级。
标签: go microservices opentracing distributed-tracing