仅使用Spring Boot微服务时,对于Sleuth,Spring的MDC (Mapped Diagnostic Context)似乎是一个不错的解决方案。
但是我们想知道,当每个微服务都使用不同的框架(dropwizard,java spark,...)或什至是不同的语言(Node.js ...)构建时,它是否有用? ?
或者唯一使用它的方法是何时使用Spring Boot构建系统中的所有微服务?
很显然,非springboot应用程序将无法支持此Sleuth的MDC功能,并且“ traceId”链将丢失。
因此,解决此问题的方法似乎是在不同服务之间的所有HTTP调用中继续传递一些“ traceId”参数。
例如:http://userservice/getuser?id=5&traceId=abc-321
和
http://billingservice/getbill?id=5&traceId=abc-321
然后,每个微服务都必须“重新发明轮子”才能处理MDC问题。
这是正确的,还是我们遗漏了一些东西?
答案 0 :(得分:0)
这与Sleuth和MDC无关。关于Sleuth与Zipkin兼容。 https://zipkin.io/pages/existing_instrumentations.html列出了适用于不同语言和框架的工具。如果使用它们,则将传播跟踪上下文,并且一切正常。