一种链路关系存储方法、装置、设备及介质制造方法及图纸

技术编号:36000179 阅读:68 留言:0更新日期:2022-12-17 23:17
本申请公开了一种链路关系存储方法、装置、设备及介质,涉及计算机技术领域,包括:通过计算服务端获取日志数据并发送至内存数据队列,通过计算协程从内存数据队列中获取请求日志数据,根据对应请求ID确定存储分片的索引序号;基于索引序号定位单切片字典并在单切片字典存在请求ID时进行锁定;根据请求ID获取单切片字典中的请求数据,计算当前层级号并检测当前层级是否存在SpanId数据集;若是则利用请求实体数据对当前层级的SpanId切片字典进行赋值,利用请求实体数据对链路树分片缓存进行更新;轮询计算链路树分片缓存中的请求实体数据得到链路关系数据并存储至数据库。能够理清各应用日志数据间的链路关系,并进行高效存储。储。储。

【技术实现步骤摘要】
一种链路关系存储方法、装置、设备及介质


[0001]本专利技术涉及计算机
,特别涉及一种链路关系存储方法、装置、设备及介质。

技术介绍

[0002]随着客户应用服务之间的调用关系愈加复杂,每一个请求会经过多个应用的业务系统,并产生对各种业务、缓存或者DB(data base,即数据库)的访问,但是这些分散的应用数据对于问题排查,或者流程优化提供的帮助很有限。当前是将各应用的日志数据通过代码埋点的方式进行日志收集,并在收集完成后将每条日志实时写入日志系统进行查询定位及展示。然而通过代码埋点进行日志数据存储,对于生产环境下百亿级的日志数据,若采样率过高,则会影响应用系统的吞吐量,从而给业务造成影响;若采样率过低,则会影响相关链路关系的完整性存储及统计。
[0003]综上,如何理清多应用服务间相互调用生成海量日志数据的链路关系,并对链路关系进行高效存储是目前有待解决的问题。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种链路关系存储方法、装置、设备及介质,能够理清多应用服务间相互调用生成海量日志数据的链路关系,并对链路关系进行高效存储。其具体方案如下:
[0005]第一方面,本申请公开了一种链路关系存储方法,包括:
[0006]通过计算服务端按照预设规则获取日志数据,并将所述日志数据发送至内存数据队列,然后通过若干个计算协程从所述内存数据队列中获取请求日志数据,并根据与所述请求日志数据对应的请求ID确定出存储分片的索引序号;
[0007]基于所述索引序号定位所述存储分片中的单切片字典,并在所述单切片字典存在所述请求ID时锁定该单切片字典;
[0008]根据所述请求ID获取所述单切片字典中的请求数据,并计算所述请求数据的当前层级号,然后基于所述当前层级号检测当前层级是否存在SpanId数据集;
[0009]若存在所述SpanId数据集,则利用创建的请求实体数据对所述当前层级的SpanId切片字典进行赋值,并基于计算得到的指纹ID利用所述请求实体数据对链路树分片缓存进行更新;
[0010]按照预设规则轮询计算所述链路树分片缓存中的所述请求实体数据,以得到链路关系数据,并将所述链路关系数据存储至数据库。
[0011]可选的,所述通过计算服务端按照预设规则获取日志数据,包括:
[0012]预设日志消费端通过基于GRPC协议的第一协程向计算服务端上报日志数据;
[0013]通过所述计算服务端基于HTTP协议的第二协程从所述预设日志消费端拉取日志数据。
[0014]可选的,所述根据与所述请求日志数据对应的请求ID确定出存储分片的索引序号,包括:
[0015]确定与所述请求日志数据对应的请求ID,并通过预设哈希算法计算与所述请求ID对应的哈希值;
[0016]基于所述哈希值和存储分片数量确定出存储分片的索引序号。
[0017]可选的,所述通过若干个协程从所述内存数据队列中获取请求日志数据之后,还包括:
[0018]根据所述请求日志数据的方法ID获取相应的应用ID和类ID;
[0019]相应的,所述基于计算得到的指纹ID利用所述请求实体数据对链路树分片缓存进行更新之前,还包括:
[0020]基于所述方法ID、应用ID和类ID计算链路的指纹ID。
[0021]所述按照预设规则轮询计算所述链路树分片缓存中的所述请求实体数据,包括:
[0022]每隔预设时间间隔轮询所述链路树分片缓存以获取链路树分片缓存对象,并根据链路分片数量分配每一协程的待处理数据任务;
[0023]通过每一协程获取相应的单片数据拷贝,并执行链路树顶层节点中请求实体数据的计算流程,并在顶层节点计算成功后执行链路树子层节点中请求实体数据的计算流程,直到遍历完所有链路树节点。
[0024]所述执行链路树顶层节点中请求实体数据的计算流程的过程中,还包括:
[0025]检测层级号数据组中是否存在相应的顶层节点号,若存在,则检测所述链路树是否有断层或断层号是否超过预设数量;
[0026]若无断层或断层号不超过所述预设数量,则获取所述链路树顶层节点对应的SpanID,并创建顶层链路树的实体节点。
[0027]所述执行链路树子层节点中请求实体数据的计算流程的过程中,还包括:
[0028]检测当前子层节点是否存在对应的SpanID,若存在,则检测所述当前子层节点是否包括上级节点的SpanID特征信息;
[0029]若包括,则基于所述SpanID特征信息获取相应的实体列表,并对所述实体列表进行遍历以得到本层节点信息。
[0030]第二方面,本申请公开了一种链路关系存储装置,包括:
[0031]数据获取模块,用于通过计算服务端按照预设规则获取日志数据,并将所述日志数据发送至内存数据队列,然后通过若干个协程从所述内存数据队列中获取请求日志数据,并根据与所述请求日志数据对应的请求ID确定出存储分片的索引序号;
[0032]存储分片确定模块,用于基于所述索引序号定位单切片字典,并在所述单切片字典存在所述请求ID时锁定该单切片字典;
[0033]链路层级检测模块,用于根据所述请求ID获取所述单切片字典中的请求数据,并计算所述请求数据的当前层级号,然后基于所述当前层级号检测当前层级是否存在SpanId数据集;
[0034]链路缓存更新模块,用于若存在所述SpanId数据集,则利用创建的请求实体数据对所述当前层级的SpanId切片字典进行赋值,并基于计算得到的指纹ID利用所述请求实体数据对链路树分片缓存进行更新;
[0035]链路数据存储模块,用于按照预设规则轮询计算所述链路树分片缓存中的所述请求实体数据,以得到链路关系数据,并将所述链路关系数据存储至数据库。
[0036]第三方面,本申请公开了一种电子设备,包括:
[0037]存储器,用于保存计算机程序;
[0038]处理器,用于执行所述计算机程序,以实现前述公开的链路关系存储方法的步骤。
[0039]第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的链路关系存储方法的步骤。
[0040]可见,本申请通过计算服务端按照预设规则获取日志数据,并将所述日志数据发送至内存数据队列,然后通过若干个计算协程从所述内存数据队列中获取请求日志数据,并根据与所述请求日志数据对应的请求ID确定出存储分片的索引序号;基于所述索引序号定位所述存储分片中的单切片字典,并在所述单切片字典存在所述请求ID时锁定该单切片字典;根据所述请求ID获取所述单切片字典中的请求数据,并计算所述请求数据的当前层级号,然后基于所述当前层级号检测当前层级是否存在SpanId数据集;若存在所述SpanId数据集,则利用创建的请求实体数据对所述当前层级的SpanId切片字典进行赋值,并基于计算得到的指纹ID利用所述请求实体数据对链路树分片缓存进行更新;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种链路关系存储方法,其特征在于,包括:通过计算服务端按照预设规则获取日志数据,并将所述日志数据发送至内存数据队列,然后通过若干个计算协程从所述内存数据队列中获取请求日志数据,并根据与所述请求日志数据对应的请求ID确定出存储分片的索引序号;基于所述索引序号定位所述存储分片中的单切片字典,并在所述单切片字典存在所述请求ID时锁定该单切片字典;根据所述请求ID获取所述单切片字典中的请求数据,并计算所述请求数据的当前层级号,然后基于所述当前层级号检测当前层级是否存在SpanId数据集;若存在所述SpanId数据集,则利用创建的请求实体数据对所述当前层级的SpanId切片字典进行赋值,并基于计算得到的指纹ID利用所述请求实体数据对链路树分片缓存进行更新;按照预设规则轮询计算所述链路树分片缓存中的所述请求实体数据,以得到链路关系数据,并将所述链路关系数据存储至数据库。2.根据权利要求1所述的链路关系存储方法,其特征在于,所述通过计算服务端按照预设规则获取日志数据,包括:预设日志消费端通过基于GRPC协议的第一协程向计算服务端上报日志数据;通过所述计算服务端基于HTTP协议的第二协程从所述预设日志消费端拉取日志数据。3.根据权利要求1所述的链路关系存储方法,其特征在于,所述根据与所述请求日志数据对应的请求ID确定出存储分片的索引序号,包括:确定与所述请求日志数据对应的请求ID,并通过预设哈希算法计算与所述请求ID对应的哈希值;基于所述哈希值和存储分片数量确定出存储分片的索引序号。4.根据权利要求1所述的链路关系存储方法,其特征在于,所述通过若干个协程从所述内存数据队列中获取请求日志数据之后,还包括:根据所述请求日志数据的方法ID获取相应的应用ID和类ID;相应的,所述基于计算得到的指纹ID利用所述请求实体数据对链路树分片缓存进行更新之前,还包括:基于所述方法ID、应用ID和类ID计算链路的指纹ID。5.根据权利要求1至4任一项所述的链路关系存储方法,其特征在于,所述按照预设规则轮询计算所述链路树分片缓存中的所述请求实体数据,包括:每隔预设时间间隔轮询所述链路树分片缓存以获取链路树分片缓存对象,并根据链路分片数量分配每一协程的待处理数据任务;通过每一协程获取相应的单片数据拷贝,并执行链路树顶层节点中请求实体数据的计算流程,...

【专利技术属性】
技术研发人员:翟增明陈莹莹王雅楠黄昭侠岑浩铭王伟吕勇
申请(专利权)人:税友信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1