在与其他微服务框架一起使用时,将Spring的Sleuth用于MDC

时间:2018-07-11 11:27:54

标签: spring-boot microservices spring-cloud-sleuth mdc

仅使用Spring Boot微服务时,对于Sleuth,Spring的MDC (Mapped Diagnostic Context)似乎是一个不错的解决方案。

但是我们想知道,当每个微服务都使用不同的框架(dropwizardjava spark,...)或什至是不同的语言(Node.js ...)构建时,它是否有用? ?

或者唯一使用它的方法是何时使用Spring Boot构建系统中的所有微服务?

很显然,非springboot应用程序将无法支持此Sleuth的MDC功能,并且“ traceId”链将丢失。

因此,解决此问题的方法似乎是在不同服务之间的所有HTTP调用中继续传递一些“ traceId”参数。

例如:http://userservice/getuser?id=5&traceId=abc-321http://billingservice/getbill?id=5&traceId=abc-321

然后,每个微服务都必须“重新发明轮子”才能处理MDC问题。

这是正确的,还是我们遗漏了一些东西?

1 个答案:

答案 0 :(得分:0)

这与Sleuth和MDC无关。关于Sleuth与Zipkin兼容。 https://zipkin.io/pages/existing_instrumentations.html列出了适用于不同语言和框架的工具。如果使用它们,则将传播跟踪上下文,并且一切正常。