我应该在请求标头中使用Request-Id,X-Request-Id或X-Correlation-Id吗?

时间:2019-05-09 23:00:52

标签: asp.net-core

我不清楚出于关联目的应在请求和响应中放入哪个id头。

“ X-Correlation-ID”和“ X-Request-ID”是已知的http标头。在请求和响应中使用哪一个无关紧要?

ASP.NET Core的System.Diagnostics.DiagnosticSource查找“请求ID”。这仅用于活动目的吗?为什么不使用“ X-Request-ID”?

如果我不使用活动,则不需要发送该标头,对吗?

ASP.NET Core也具有分层的请求ID(https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/HierarchicalRequestId.md ),我喜欢这个主意。我可以做这样的事情

    var newRequestId = $"{context.Request.headers["X-Correlation-ID"]}:{CreateNewGuid()}";

或者使用Activity是否更好?我发现Activity.Current始终为null。是否需要启用它并影响性能?

1 个答案:

答案 0 :(得分:0)

对于Request-Id,它唯一标识操作处理中涉及的每个HTTP请求,并在调用方生成并传递给被调用方。

对于X-Correlation-ID,也称为“传输ID”,是唯一的标识符值,附加到允许引用特定事务或事件链的请求和消息上。

对于每个请求,应使用Request-Id,对于请求事务,应使用X-Correlation-ID

  
    

如果我不使用活动,则不需要发送该标头,对吗?

  

通常,对于“相关ID”,您不必使用一个。但是,如果您要设计一个包含消息队列和异步处理的分布式系统,那么最好在消息中包含一个Correlation ID。

  
    

我发现Activity.Current始终为null。是否需要启用它并影响性能?

  

要使用Activity.Current,您需要ApplicationInsights,或者实现自己的功能来管理活动。

  1. 安装Microsoft.ApplicationInsights.AspNetCore
  2. 配置WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseApplicationInsights()
  3. var activity = Activity.Current;一样使用