如何在负责生成关联ID的应用程序中存储关联ID(X-Correlation-ID)

时间:2018-11-14 16:39:19

标签: request http-headers soa

我正在我的应用程序中实现一个关联ID,并希望对此设计提供一些反馈。首先要考虑的是,相关ID应该可用于所有日志。

可以说我有一个Web(前端)应用程序,可以为用户提供页面。它与提供数据的两个API进行通信。该API不会向用户公开,因此所有请求都在前端应用程序中“开始”。

API的工作很简单,它们使用前端应用程序所有标头中提供的相关ID(X-Correlation-ID)并将其打印在任何日志中。

前端应用程序必须生成ID,将其添加到传出请求的标头中,但还必须使用ID。

我的问题是:前端应用程序如何存储关联ID? 我的第一个想法是,它将修改传入的请求并添加头(如果不存在),但是这会使传入的请求有些“不可靠”,因为现在已对其进行了修改。 另一个想法是,它可能存储为按请求清除的某种全局应用程序。

1 个答案:

答案 0 :(得分:0)

相关ID,即通常附加到标头(如Request-ID,X-Request-ID,X-Trace-ID,X-Correlation-ID)的ID,通常是每个请求颁发。

您似乎想将其本地存储在客户端上。您所描述的听起来更像是一个“会话ID”,当客户端“重新启动”时该ID将被重置。如果是这种情况,那么您只需使用本地/会话存储或cookie来存储并在需要时清除它。

请记住上面的第一句话。每个请求通常使用相关ID。我通常做什么:

  1. 根据请求在客户端上生成ID
  2. 通过上述标头之一将其传递给API
  3. 首先获取请求的人(某些API网关,HA代理等)将检查标头的存在并将其代理到更下游。任何调用其他服务的服务也是如此。通常,这是大多数服务/团队作为service:tool提供的,这样他们就不会忘记这样做。
  4. 利润?

例如heroku does。许多其他服务/公司也一样。

不用说,您可以将两个ID(您所引用的“会话” ID加上每个请求生成的ID)结合起来,以更好地了解日志中发生的事情等。

相关问题