Spring Sleuth Zipkin超场传播



我是分布式日志的新手,在Http Request和Messaging Request之间传播额外字段方面需要帮助。目前,我可以传播traceId和spanId,但我需要通过correlationId才能在所有微服务中传播。

spring:
sleuth:
correlation-fields:
- x-correlation-id
remote-fields:
- x-correlation-id

logback.xml

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p [${appName},%X{traceId:-},%X{parentId:-},%X{spanId:-},%X{correlation-id:-}]) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%t]){faint}  %clr(%logger{20}:%line){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

我有点好奇如何将关联id传递给其他服务。

In case the message starts from Service A - 
Service A (Message Started,CorrelationID-123) -> ServiceB (CorrelationID-123) -> ServiceC(CorrelationID-123)
In case if it started with Service B
Service B (Message Started,CorrelationID-123) -> ServiceA (CorrelationID-123) -> ServiceC(CorrelationID-123)
  1. 关联id将如何传递给Kafka消息
  2. 如何将关联id传递给Http请求
  3. 是否可以使用来自其他服务的现有tracedId

我认为你所说的correlationId实际上就是traceId,如果你是分布式跟踪的新手,我强烈建议你阅读spring-cloud-sleuth的文档,介绍部分会让你有一个基本的了解,而传播会告诉你,你的字段是如何在服务之间传播的
我还推荐这次演讲:分布式跟踪:微服务的延迟分析-Grzejszczak,Krishna。

回答您的确切问题:

关联id将如何传递给Kafka消息?

Kafka有头,我假设字段是通过Kafka头传播的。

如何将关联id传递给Http请求?

通过HTTP标头。

是否可以使用来自其他服务的现有tracedId?

不仅可能,Sleuth还为您开箱即用。如果传入请求/消息/事件等中有traceId。Sleuth不会创建一个新的,但它会使用它(请参阅我上面链接的文档(。

最新更新