我有两个服务(Java),它们之间是A依赖的关系B.这两个服务部署在两个启用了X-Ray的AWS EB上。当我向服务A发出HTTP请求时,AWS X-Ray控制台会向我显示服务A和B的段,但服务A和B之间没有边缘。
我的问题是B段的字段ParentId等于null的原因。
我希望客户 - >服务A - >服务B将在服务图上而不是客户端 - >服务A和客户 - >服务B。
你有什么想法吗?
谢谢
答案 0 :(得分:1)
如果你从B调用A,那么B的父ID不应为null。
A和B是否在同一条迹线中,即它们具有相同的迹线ID? 你是如何从A调用B的。当父id从调用者传播到被调用者时,就会产生A和B之间的连接。在HTTP的情况下,附加标头应该从A传递到B,其中包含父ID和跟踪ID。 请阅读here了解详情。
您应该在段A上看到一个子段,表示客户端从A到B的呼叫。该子段的ID成为下游服务B的父ID。这就是连接的建立方式。
为了方便客户端传播此头文件,aws-xray sdk提供了一个帮助器HTTP客户端,允许自动将此头传递给下游。 你在使用这个HTTP客户端吗? http://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-java-httpclients.html