Я только что прочитал о регистрации в микросервисной архитектуре, и, похоже, существует концепция 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 ()? Или есть лучший подход?
Моей первой мыслью было бы иметь своего рода БД значения ключа в памяти, где вы могли бы хранить идентификатор корреляции как значение, но какой будет ключ?