[发明专利]一种微服务系统中循环依赖检测方法及系统在审
申请号: | 202210065403.9 | 申请日: | 2022-01-20 |
公开(公告)号: | CN114416564A | 公开(公告)日: | 2022-04-29 |
发明(设计)人: | 刘明伟;代昊琦;康旖;梁子健;刘竹青;任昊文;王金贺;张凌志 | 申请(专利权)人: | 南方电网数字电网研究院有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/448 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苟冬梅 |
地址: | 510000 广东省广州市黄*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 微服 系统 循环 依赖 检测 方法 | ||
1.一种微服务系统中循环依赖检测方法,其特征在于,所述方法包括:
响应于对所述微服务系统的循环依赖检测请求,执行第一循环依赖检测任务以及第二循环依赖检测任务;
其中,执行所述第一循环依赖检测任务,包括:
获取所述微服务系统中执行同一请求任务的各个服务上报的调用信息,每个服务执行所述请求任务的当前时间戳、该服务的服务标识、以及该服务所要调用的其他服务的服务标识;
基于所述各个服务上报的调用信息中每个服务执行所述请求任务的当前时间戳、该服务的服务标识、以及该服务所要调用的其他服务的服务标识,生成表征执行所述请求任务的各个服务的服务流程的第一有向图;
基于所述第一有向图,确定所述请求任务是否存在循环依赖;
其中,执行所述第二循环依赖检测任务,包括:
获取所述微服务系统中每个服务执行请求任务的服务标识、以及该服务所要调用的其他服务的服务标识;
基于每个服务执行请求任务的服务标识、以及该服务所要调用的其他服务的服务标识,生成表征所述各个服务的调用关系的第二有向图;
基于所述第二有向图,确定所述多个服务之间是否存在循环依赖。
2.根据权利要求1所述的一种检测方法,其特征在于,获取所述微服务系统中执行同一请求任务的各个服务上报的调用信息,包括:
每当所述所述微服务系统中的一个服务在调用另一个服务的接口时,另一个服务均检测所述服务的调用请求中是否存在唯一标识;
若不存在,则生成唯一标识并放入所述服务中;
若存在,则将唯一标识放入另一个服务生成的调用请求中;
获取所有唯一标识相同的所述服务的调用信息。
3.根据权利要求2所述的一种检测方法,其特征在于,所述基于所述各个服务上报的调用信息中每个服务执行所述请求任务的当前时间戳、该服务的服务标识、以及该服务所要调用的其他服务的服务标识,生成表征执行所述请求任务的各个服务的服务流程的第一有向图,包括:
创建一个分组,将所述各个服务上报的调用信息放入所述分组中;
按照所述当前时间戳的先后顺序,对所述分组中多个调用信息进行先后排列;
按照所述排列顺序,依次连接所述多个调用信息中调用服务的服务标识和被调用服务的服务标识,得到所述第一有向图。
4.根据权利要求3所述的一种检测方法,其特征在于,所述基于所述第一有向图,确定所述请求任务是否存在循环依赖,包括:
遍历所述第一有向图,判断所述第一有向图中是否存在服务标识相同的两个服务之间的连接关系;
若存在,则所述请求任务中存在循环依赖。
5.根据权利要求1所述的一种检测方法,其特征在于,所述基于每个服务执行请求任务的服务标识、以及该服务所要调用的其他服务的服务标识,生成表征所述各个服务的调用关系的第二有向图,包括:
按照每个服务所调用其他服务之间的服务调用关系,连接各个服务的服务标识,其中,调用服务的服务标识连接被调用服务的服务标识,得到所述第二有向图。
6.根据权利要求5所述的一种检测方法,其特征在于,所述基于所述第二有向图,确定所述多个服务之间是否存在循环依赖,包括:
遍历所述第二有向图,判断所述第二有向图中是否存在服务标识相同的两个服务之间的连接关系;
若存在,则该微服务系统中存在循环依赖。
7.根据权利要求1-6任一所述的一种检测方法,其特征在于,所述方法还包括:
当检测到所述请求任务存在循环依赖时,输出第一告警信息;
当检测到所述第二有向图中存在循环依赖时,输出存在循环依赖的服务的第二告警信息。
8.根据权利要求7所述的一种检测方法,其特征在于,所述方法还包括:
每在输出第二告警信息时,均获取所述第二有向图中存在循环依赖服务的当前服务版本信息;
对多次输出第二告警信息时获取的当前服务版本信息进行对比,以确定服务存在循环依赖的版本。
9.一种微服务系统中循环依赖检测系统,其特征在于,包括第一获取模块、第一有向图生成模块、第二获取模块、第二有向图生成模块、循环依赖判断模块、告警模块和记录对比模块,其中:
第一获取模块,用于获取所述微服务系统中执行同一请求任务的各个服务上报的调用信息,每个服务执行所述请求任务的当前时间戳、该服务的服务标识、以及该服务所要调用的其他服务的服务标识;
第一有向图生成模块,用于基于所述各个服务上报的调用信息中每个服务执行所述请求任务的当前时间戳、该服务的服务标识、以及该服务所要调用的其他服务的服务标识,生成表征执行所述请求任务的各个服务的服务流程的第一有向图;
第二获取模块,用于获取所述微服务系统中每个服务执行请求任务的服务标识、以及该服务所要调用的其他服务的服务标识;
第二有向图生成模块,用于基于每个服务执行请求任务的服务标识、以及该服务所要调用的其他服务的服务标识,生成表征所述各个服务的调用关系的第二有向图;
循环依赖判断模块,用于基于基于所述第一有向图,确定所述请求任务是否存在循环依赖;用于基于所述第二有向图,确定所述多个服务之间是否存在循环依赖;告警模块,用于在当检测到所述请求任务存在循环依赖时,输出第一告警信息;在检测到所述第二有向图中存在循环依赖时,输出存在循环依赖的服务的第二告警信息;
记录对比模块,用于在输出第二告警信息时,同时对比所述存在循环依赖服务的当前服务版本信息;若所述存在循环依赖的的当前服务版本信息不一致,则上报记录。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南方电网数字电网研究院有限公司,未经南方电网数字电网研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210065403.9/1.html,转载请声明来源钻瓜专利网。