Должен ли я использовать Request-Id, X-Request-Id или X-Correlation-Id в заголовке запроса? - PullRequest
0 голосов
/ 10 мая 2019

Мне не ясно, какой заголовок идентификатора я должен поместить в запрос и ответ для целей корреляции.

"X-Correlation-ID" и "X-Request-ID" являются известными заголовками http,Имеет ли значение, какой я использую в запросе и ответе?

ASP.NET Core System.Diagnostics.DiagnosticSource ищет «Request-Id».Это только для целей деятельности?Почему он не использует «X-Request-ID»?

Если я не использую Activity, мне не нужно отправлять этот заголовок, верно?

В ASP.NET Core также есть Иерархический запрос-идентификатор (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 всегда нулевым.Нужно ли его включать и влияет ли это на производительность?

1 Ответ

0 голосов
/ 10 мая 2019

Для Request-Id он однозначно идентифицирует каждый HTTP-запрос, участвующий в обработке операции, и генерируется на стороне вызывающей стороны и передается вызываемой стороне.

Для X-Correlation-ID, также известного как Transit ID, является уникальным значением идентификатора, которое прикрепляется к запросам и сообщениям, которые позволяют ссылаться на определенную транзакцию или цепочку событий.

Для каждого запроса вы должны использовать Request-Id, для транзакции запроса вы должны использовать X-Correlation-ID.

Если я не использую Активность, мне не нужно отправлять этот заголовок, верно?

Обычно для идентификатора корреляции вам не нужно его использовать. Но если вы разрабатываете распределенную систему, которая включает в себя очереди сообщений и асинхронную обработку, вам стоит включить в свои сообщения идентификатор корреляции.

Я считаю Activity.Current всегда нулевым. Нужно ли его включать и влияет ли это на производительность?

Для использования Activity.Current необходимо иметь возможность ApplicationInsights или реализовать собственную функцию управления деятельностью.

  1. Установить Microsoft.ApplicationInsights.AspNetCore
  2. Настроить WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseApplicationInsights()
  3. Используйте как var activity = Activity.Current;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...