spring cloud sleuth服务与第三方服务的集成
我有两个微型服务:a和B。a调用B,B调用一些外部服务。 A和B使用侦探。 Sleuth定义标题X-B3-TraceId和X-B3-SpanId 所以A将头传播到B,B传播到外部服务 问题:服务B是否在响应之前存储其标题?若外部服务以某种方式破坏了我的头,作为响应,我会在头中得到错误的ID。。。会发生什么? 为避免此类冲突,最好定义自己的标题?与外部服务交互的最佳方式是什么 问题:服务B是否在响应之前存储其标题? 我不太明白,但我假设问题是,如果回复回来并进行了一些额外的处理,是否会保留跟踪信息。答案是肯定的,它将被传播 若外部服务以某种方式破坏了我的头,作为响应,我会在头中得到错误的ID。。。会发生什么 响应标题对我们来说并不重要。请求包含所有跟踪信息。外部服务将不会在您的系统中看到,因为您将无法将SR和SS注释从其一侧获取到Zipkin实例。所以在向他们发出请求后,你显然不知道他们那边发生了什么 为避免此类冲突,最好定义自己的标题?与外部服务交互的最佳方式是什么spring cloud sleuth服务与第三方服务的集成,spring,spring-cloud-sleuth,Spring,Spring Cloud Sleuth,我有两个微型服务:a和B。a调用B,B调用一些外部服务。 A和B使用侦探。 Sleuth定义标题X-B3-TraceId和X-B3-SpanId 所以A将头传播到B,B传播到外部服务 问题:服务B是否在响应之前存储其标题?若外部服务以某种方式破坏了我的头,作为响应,我会在头中得到错误的ID。。。会发生什么? 为避免此类冲突,最好定义自己的标题?与外部服务交互的最佳方式是什么 问题:服务B是否在响应之前存储其标题? 我不太明白,但我假设问题是,如果回复回来并进行了一些额外的处理,是否会保留跟踪信息
我想我已经设法通过解释请求头是重要的,而不是响应来回应它。感谢您的回复,似乎我已经有了这个想法。Marcin,我们提出了另一个问题:我们有一个非Spring客户端-它调用我的服务A。而不是客户端调用我的另一个服务C。我想在同一id下跟踪两个调用,不需要是跟踪id。另外,如果这个id是在服务A的第一次调用时生成的,那么最好的方法是什么?用于A,Brave或Sleuth代表B,Brave或Sleuth代表C。这样,一切都会得到正确的传播,因为Sleuth和Brave配合得很好。谢谢,请看一看!