软件架构微服务化后,虽然软件间的耦合性更好了,不过在出现问题后,增加了定位问题的困难,所以就出现了 Correlation ID 来方便问题定位。首先我们看下关于 Correlation ID 在流程中的传输过程如下图:的定义描述。

The correlation identifier is a unique identifier attached to each request in architecture. The correlation ID is not an error number or code. Simply, it’s a GUID (globally unique identifier) that’s automatically generated for every request. There is no standard format for the correlation identifier. It can be a UUID or any meaningful unique identifier for the application domain. we prefer using UUID as a correlation identifier.

Correlation ID 在流程中的传输过程如下图:

correlation-identifier
correlation-identifier

X-Correlation-Id 是用于相关标识符的非标准但常用的 HTTP 标头,在HTTP头中增加的内容一般类似如下:

1X-Correlation-Id: aa094a45-afc4-45e6-b557-e0ed98674d66

很多知名的程序中都会使用 Correlation ID,比如微软sharepoint程序,如下:

sharepoint
sharepoint

同样,很多网关程序也会使用 Correlation ID,比如 kong Gateway 有 Correlation ID 插件。

同样在数据库里也有类似的特性,比如mysql里的GTID( global transaction identifier)。