我有几个微服务:A和B.A呼叫B,B呼叫一些外部服务。 A和B使用侦探。 侦探定义标题X-B3-TraceId和X-B3-SpanId。
所以A会将标题传播到B和B到外部服务......
问题:服务B是否存储了他的标题直到响应?如果外部服务以某种方式打破我的标题并作为响应我将在标题中得到错误的ID ...会发生什么? 定义我自己的标题以避免这种冲突会更好吗?与外部服务交互的最佳方式是什么?
答案 0 :(得分:1)
问题:服务B是否存储了他的标题直到响应? 我不是真的关注,但我认为问题是如果响应回来并进行一些额外的处理,是否会保留跟踪信息。答案是肯定的,它将被传播。
如果外部服务以某种方式打破我的标题并作为响应我会在标题中出错ID ...会发生什么?
响应标头对我们来说并不重要。请求包含所有跟踪信息。系统内部将不会显示外部服务,因为您不会从他们的Zipkin实例获取SR和SS注释。因此,在向他们发送请求后,您显然不会知道他们身边发生了什么。
最好定义我自己的标题以避免这种冲突?与外部服务交互的最佳方式是什么?
我想我已经通过解释请求标头很重要而不是响应来设法回复它。