【发布时间】:2020-07-10 15:45:33
【问题描述】:
我刚刚阅读了微服务架构中的日志记录,似乎有这个 Correlation ID 的概念,它基本上传递给每个微服务。此 Correlation ID 可用于记录日志 - 您只需搜索 Correlation ID 即可跨微服务跟踪请求。
我的问题是,这通常是如何实现的?此关联 ID 是在哪里生成的?您是否在前端生成某种 UUID,并通过 X-REQUEST-ID HTTP 标头传递它?
我的第二个问题是:当您在服务器中收到这个 Correlation ID 时,如何让服务器中的所有功能都可以访问它?
假设你的服务器有这样的东西:
requestHandler(httpRequest) {
correlationId = httpRequest.header.get(X-REQUEST-ID)
...
function2()
}
function2() {
...
function3()
}
function3() {
...
function4()
}
function4() {
...
}
假设我想在 function4() 中记录一些内容(假设我希望日志也包含 Correlation ID),我真的必须将 Correlation ID 从 requestHandler() 一直向下传递到 function4() ?还是有更好的方法?
我的第一个想法是拥有某种内存键值数据库,您可以在其中将关联 ID 存储为值,但键是什么?
【问题讨论】:
-
您的微服务中将使用哪种实际语言?
-
在 Golang 中,我猜这个 RequestID 会附加到 Context 中,并且上下文会被传递到所有函数中。但是你将如何在 python Flask 微服务中做到这一点?
标签: microservices