我是分布式日志的新手,在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)
- 关联id将如何传递给Kafka消息
- 如何将关联id传递给Http请求
- 是否可以使用来自其他服务的现有tracedId
我认为你所说的correlationId实际上就是traceId,如果你是分布式跟踪的新手,我强烈建议你阅读spring-cloud-sleuth
的文档,介绍部分会让你有一个基本的了解,而传播会告诉你,你的字段是如何在服务之间传播的
我还推荐这次演讲:分布式跟踪:微服务的延迟分析-Grzejszczak,Krishna。
回答您的确切问题:
关联id将如何传递给Kafka消息?
Kafka有头,我假设字段是通过Kafka头传播的。
如何将关联id传递给Http请求?
通过HTTP标头。
是否可以使用来自其他服务的现有tracedId?
不仅可能,Sleuth还为您开箱即用。如果传入请求/消息/事件等中有traceId。Sleuth不会创建一个新的,但它会使用它(请参阅我上面链接的文档(。