APM的span存储疑问

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记录两条数据,对应调用耗时及共用属性存储哪里为好?

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容