APM的span存储疑问

2019-04-04  本文已影响0人  AI云栈

A服务调用B服务,是如何存储span的?

问题描述

A方调用B方,A方知道自己的服务名,ip,traceId等,也可以知道调用耗时,但不一定知道B方所在的ip、serviceName。这种情况如何处理span存储?

解决思路

A调用B时,声明一个span,将创建的spanid传递到B,对于接收方B,能拿到span的id信息,又能获取自己的serviceName和ip信息。构成了一个完整的span链。

这里有两种实现方案:

A方不记录span信息,B接收到span后,记录整个span信息,这样的span发起方和接收方是同一条数据。

A方记录span的发起方信息,B记录span的接收方信息。这样同一个span会有发起方和接收方两条数据。

第一个方案缺点是:假如B方是外部的系统,如果A不记录,这条记录就丢失了。所以可以排除。

第二个方案缺点是:同一个span记录两条数据,对应调用耗时及共用属性存储哪里为好?

由于第一个方案丢失数据风险,只能去完善第二个方案,发起方能获取到的存储在发起方,接收方能获取到存储在接收方。

先思考到这里,后期再补。

上一篇下一篇

猜你喜欢

热点阅读