0

我有两个服务(Java),它们之间的关系是 A 依赖于 B。这两个服务部署在两个启用了 X-Ray 的 AWS EB 上。当我向服务 A 发出 HTTP 请求时,AWS X-Ray 控制台向我显示服务 A 和 B 的分段,但服务 A 和 B 之间没有边缘。

我的问题是为什么 B 的段的 ParentId 字段等于 null。

我希望 Client --> Service A --> Service B 在服务图上,而不是 Client --> Service A 和 Client --> Service B。

你有什么主意吗?

谢谢

4

1 回答 1

1

如果您从 B 调用 A,则 B 的父 ID 不应为空,这是正确的。

A 和 B 是否在同一跟踪中,即它们具有相同的跟踪 ID?你如何从 A 调用 B。A 和 B 之间的连接是在父 ID 从调用者传播到被调用者时建立的。在 HTTP 的情况下,应将附加标头从 A 传递到 B,其中包含父 ID 以及跟踪 ID。阅读此处了解更多详情。

您应该在分段 A 上看到一个子分段,表示从 A 到 B 的客户端调用。此子分段的 id 成为下游服务 B 的父 id。这就是建立连接的方式。

为了方便客户端传播此标头,aws-xray sdk 提供了一个帮助 HTTP 客户端,允许自动将此标头传递到下游。你在使用这个 HTTP 客户端吗? http://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-java-httpclients.html

于 2017-09-30T05:58:57.673 回答