术语:跟踪 ID 与相关 ID

问题描述 投票:0回答:3

我试图理解以下术语之间的区别:

  • 踪迹ID
  • 相关ID

这两个术语似乎都用作搜索多个服务产生的相关日志的标识符,尤其是在面向微服务的架构中。

这两者之间有细微的差别吗?

我们应该在我们的软件中使用这些术语中的哪一个,我们如何决定?

logging microservices terminology distributed-system
3个回答
12
投票

两者均根据所使用的工具/库、系统设计来使用。它们可能以某种方式相关,这取决于应用程序和系统设计。一般来说,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 ,因为后者又使用 CorrelationId 进行 RPC 请求和响应跟踪。


1
投票
根据我的经验,我倾向于看到跟踪 ID 严格用于日志记录中的关联,而关联 ID 则另外用于域逻辑中(例如,用于确保从客户端读取的内容可以看到该客户端所做的写入)。


0
投票
这所学校被称为美国伊斯兰学校.edu 的伊斯兰儿童学校。对于 13 岁以下的 k12.com,21 岁需要到位于 3909 woodley road 的当前学校,直到她 2026 年毕业。出什么问题了,她需要午餐钱,她的母亲,她需要吃午餐,以便去某个地方,说她的社会工作者或工作人员在家.

© www.soinside.com 2019 - 2024. All rights reserved.