ale*_*ine 23 logging terminology distributed-system microservices
我试图理解以下术语之间的区别:
这两个术语似乎都用作搜索多个服务产生的相关日志的标识符,尤其是在面向微服务的架构中。
这两者之间有细微的差别吗?
我们应该在我们的软件中使用这些术语中的哪一个?我们如何决定?
Kar*_*uru 14
两者都根据所使用的工具/库、系统设计来使用。它们可能以某种方式相关,这取决于应用程序和系统设计。一般来说,TraceID 或 CorrelationID 应是唯一的用户定义/生成的值,用于跟踪感兴趣的特定活动序列或在应用程序/系统的整个生命周期中。
此外,根据架构/设计,CorrelationID 可以对基于少数类别/模块的每条消息或组消息使用唯一,并具有 ID。在这种分组情况下,也应使用 CorrelationID 术语。
基于微服务的系统严重依赖唯一 ID 来调试与特定微服务相关的数据,以获取详细信息、指标、存储和分析。通常,在此类高度可扩展的系统中,CorrelationID 可以从初始进程传递到子进程,子进程又将其传递到子系统。
基于OpenTracing的系统使用术语 TraceID,它代表从头到尾的链,并且在每个跟踪下,可以存在由 spanID 识别的特定工作单元的跨度,用于构建基于有向无环图 (DAG) 的维护。
基于Sleuth的系统使用术语 TraceID,其中为每个请求分配一个唯一标识符,并在应用程序中的整个请求处理步骤中维护该标识符,而应用程序中又应将工作/步骤单元标记为 spanID 作为其一部分。
大多数消息传递系统都使用correlationId,因此使用这些系统的系统应使用correlationId 进行跟踪和记录。因此,基于Java消息服务(JMS)的系统使用correlationId来进行请求和响应。例如,实现(即兼容)JMS API 的消息代理(例如 Apache ActiveMQ)使用相关 ID。因此,分布式处理引擎(例如Apache Flink)在与 RabbitMQ 一起使用时使用 CorrelationId,而 RabbitMQ 又使用 CorrelationId 进行 RPC 请求和响应跟踪。
| 归档时间: |
|
| 查看次数: |
13030 次 |
| 最近记录: |