Должен ли я использовать Request-Id, X-Request-Id или X-Correlation-Id в заголовке запроса?
Мне не ясно, какой заголовок идентификатора я должен указать в запросе и ответе для целей корреляции.
"X-Correlation-ID" и "X-Request-ID" являются известным заголовком http. Имеет ли значение, какой я использую в запросе и ответе?
ASP.NET Core System.Diagnostics.DiagnosticSource ищет "Идентификатор запроса". Это только для целей деятельности? Почему он не использует "X-Request-ID"?
Если я не использую Activity, мне не нужно отправлять этот заголовок, верно?
Ядро ASP.NET также имеет идентификатор иерархического запроса (https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/HierarchicalRequestId.md), который мне нравится. Я могу сделать что-то подобное
var newRequestId = $"{context.Request.headers["X-Correlation-ID"]}:{CreateNewGuid()}";
ИЛИ лучше использовать активность? Я нахожу Activity.Current всегда нулевым. Нужно ли его включать и влияет ли это на производительность?
Для Request-Id
он однозначно идентифицирует каждый HTTP-запрос, участвующий в обработке операции, и генерируется на стороне вызывающего и передается вызываемому.
Для X-Correlation-ID
, также известного как Transit ID, это уникальное значение идентификатора, которое прикрепляется к запросам и сообщениям, которые позволяют ссылаться на определенную транзакцию или цепочку событий.
Для каждого запроса вы должны использовать Request-Id
, для транзакции запроса вы должны использовать X-Correlation-ID
.
Если я не использую Activity, мне не нужно отправлять этот заголовок, верно?
Как правило, для идентификатора корреляции вам не нужно его использовать. Но если вы разрабатываете распределенную систему, которая включает в себя очереди сообщений и асинхронную обработку, вам будет полезно включить в ваши сообщения идентификатор корреляции.
Я нахожу Activity.Current всегда нулевым. Нужно ли его включать и влияет ли это на производительность?
Для использования Activity.Current
вам необходимо включить ApplicationInsights
или реализовать собственную функцию управления деятельностью.
Microsoft.ApplicationInsights.AspNetCore
Настройте WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseApplicationInsights()
Используйте как var activity = Activity.Current;
Еще в рубрике
- Вопросы
- Asp.net-core
- Должен ли я использовать Request-Id, X-Request-Id или X-Correlation-Id в заголовке запроса?