Как правильно работать с идентификаторами корреляции? - PullRequest
0 голосов
/ 10 июля 2020

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

Мой вопрос: как это обычно реализуется? Где генерируется этот идентификатор корреляции? Вы генерируете какой-то UUID на Frontend и передаете его через HTTP-заголовок X-REQUEST-ID?

Мой второй вопрос: когда вы получаете этот идентификатор корреляции на сервере, как вы делаете он доступен для всех функций на сервере?

Предположим, на вашем сервере есть что-то вроде этого:

requestHandler(httpRequest) {
    correlationId = httpRequest.header.get(X-REQUEST-ID)
    ...
    function2()
}

function2() {
    ...
    function3()
}

function3() {
    ...
    function4()
}

function4() {
    ...
}

Предположим, я хочу что-то зарегистрировать в function4 () (предположим, что мне нужен журнал чтобы включить также идентификатор корреляции), действительно ли мне нужно передавать идентификатор корреляции полностью вниз от requestHandler () до function4 ()? Или есть лучший подход?

Моей первой мыслью было бы иметь своего рода БД значения ключа в памяти, где вы могли бы хранить идентификатор корреляции как значение, но какой будет ключ?

1 Ответ

1 голос
/ 10 июля 2020

Да, это только своего рода UUID, всякий раз, когда интерфейс отправляет запрос на шлюз API или на уровень оркестрации, этот UUID генерируется и добавляется к последующим вызовам, которые будут выполняться для каждого из отслеживаемых микросервисов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...