Как сохранить идентификатор корреляции (X-Correlation-ID) в приложении, которое отвечает за его генерацию - PullRequest
0 голосов
/ 14 ноября 2018

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

Допустим, у меня есть веб-приложение (front-end), которое обслуживает страницы для моих пользователей.Он говорит с двумя API, которые предоставляют данные.API не предоставляются пользователю, поэтому все запросы «запускаются» во внешнем приложении.

Работа API проста: они используют идентификатор корреляции, как указано во всех заголовках из внешнего интерфейса.приложение (X-Correlation-ID) и распечатайте его в любом журнале.

Внешнее приложение должно сгенерировать идентификатор, добавить его в заголовки для исходящих запросов, но оно также должно использовать идентификатор.

У меня такой вопрос: как интерфейсное приложение хранит идентификатор корреляции?Сначала я подумал, что он изменит входящий запрос и добавит заголовок, если он не существует, однако это сделает входящий запрос несколько «ненадежным», так как он теперь изменен.Другая мысль, возможно, заключается в том, что она хранится как некое глобальное приложение, которое очищается для каждого запроса.

1 Ответ

0 голосов
/ 12 июля 2019

Идентификаторы корреляции, т. Е. Идентификаторы, обычно присоединяемые к заголовкам, таким как Идентификатор запроса, Идентификатор X-запроса, Идентификатор X-трассировки, Идентификатор X-Корреляции, обычно выдаются на запрос .

* 1004.* Кажется, вы хотите хранить его локально на клиенте.То, что вы описываете, больше похоже на «идентификатор сеанса», который сбрасывается при перезагрузке клиента.Если это так, то вы просто используете локальное / сеансовое хранилище или куки-файлы для хранения и очистки при необходимости.

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

  1. Создание идентификатора на клиенте для каждого запроса
  2. Передача его API через один из вышеупомянутых заголовков
  3. Кто бы ни получил запрос первым(некоторый API-шлюз, HA-прокси и т. д.) проверяет наличие заголовка и прокси его далее в нисходящем направлении.То же самое делают любые сервисы, которые звонят в другие сервисы.Это обычно предоставляется как сервис: инструмент для большинства сервисов / команд, чтобы они не забыли это сделать.
  4. Прибыль?

Это то, что heroku делает например.То же самое для многих других служб / компаний.

Само собой разумеется, вы можете объединить два идентификатора: «сессионный», на который вы ссылаетесь, и идентификаторы, сгенерированные для запроса, чтобы получить лучшее представление о том, что происходит вжурналы и т. д.

...