一种基于Kubernetes的微服务时序知识图谱构建方法
- 国知局
- 2024-07-31 23:12:01
本发明属于知识图谱构建,特别涉及一种基于kubernetes的微服务时序知识图谱构建方法。
背景技术:
1、在微服务领域,拓扑图的构建的方法主要分为基于调用链的服务间调用拓扑构建以及基于指标的服务间调用拓扑构建。基于调用链的模型通过解析一个请求经过的调用节点构建拓扑图。基于指标的模型通过解析指标内预设的源端和目的端服务名称识别服务节点并构建关系。以上方法需要实时解析集群中产生的指调用链或指标信息,对性能要求较高。
2、目前基于kubernetes的微服务拓扑图构建技术通常是在缓存中通过邻接矩阵的方式实现,缺乏在时间维度上的考虑,并且缺乏持久化机制,这使得运维人员难以掌握完整的服务间时序信息以进行运维治理。
3、在实际的微服务集群中,每秒会产生几万甚至几百万以上的请求次数,这使得以上两种技术较高的实时处理能力,生成的拓扑需要做大量的实体对齐操作,效率低下,并且大多数拓扑结构只能表示实时的信息,缺乏时间维度的考虑。
4、公开号为cn117544521a的专利申请文件公开了一种面向容器网络的拓扑发现和微服务依赖关联方法,通过集群api(application provider interface)信息以及http(hypertext transferprotocol)报文采集程序自动动态获取kubernetes集群拓扑。但由于首先该方法主要关注微服务与pod、微服务与容器、pod与容器的关系,从而产生因缺少微服务间依赖以及kubernetes资源间依赖导致的微服务流量拓扑不完整的问题,其次,该方法并未明确节点间关系的时间属性,缺乏时效性,最后该方法需要解析大量http请求,会占用大量运算资源。
技术实现思路
1、为了克服上述现有技术的不足,本发明的目的在于提供一种基于kubernetes的微服务时序知识图谱构建方法,通过时序知识图谱的方式构建微服务拓扑,保障知识精确度的同时降低内存占用率,监听资源事件以分析kubernetes中微服务的依赖情况,本发明降低了系统实时处理能力的要求,效率高效。
2、为了实现上述目的,本发明采取的技术方案是:
3、一种基于kubernetes的微服务时序知识图谱构建方法,包括以下步骤:
4、步骤1,建立微服务集群的事件监听机制,获取资源对象的配置、状态详细信息;
5、步骤2,利用对象转换方法,从步骤1获取的资源对象的配置、状态详细信息中,将对象转换为资源对象知识图谱,保留完整资源数据信息;
6、步骤3,利用步骤2获得的资源对象知识图谱,以及根据对象间关系确立方法,构建微服务与配置资源间和微服务与pod间的时序关系,并同步处理微服务资源的创建、更新、删除事件;
7、步骤4,利用步骤2获得的资源对象知识图谱,通过分析实时流量指标,构建pod与pod间的时序关系,最终得到微服务系统的时序知识图谱。
8、所述步骤1的具体方法为:
9、使用kubernetes提供的listwatchapi创建资源的informer,以监控集群中资源的创建、更新和删除事件,维护一个键值对形式的本地缓存,用于存储符合neo4j格式的对象资源信息,其中键为对象命名空间名称+“:”+对象名,值为实际对象。
10、所述步骤2中对象转换方法的具体过程为:
11、1)将kubernetes资源对象名称转换为neo4j节点标签;
12、2)kubernetes资源对象组成分为基础数据类型、列表list、键值对map、子对象四种字段,而列表list和键值对map分为基础数据类型和对象类型两种;对于基础数据类型的字段以及基础数据类型的list、map字段,按照neo4j中的基础属性、list和map属性填充;对于对象类型的list以及子对象字段,构造含有对应节点关系的list;对于对象类型的map字段,按照neo4j中map格式进行填充,其中neo4j的键为map的键,neo4j的值为map中值对象进行序列化后的字符串值。
13、所述步骤3的具体方法为:
14、对象间关系的确立方法由名称匹配规则、标签选择器规则以及路由匹配规则组成;对象间关系确立方法中的对象为kubernetes中常用的资源对象,其具体执行方法如下:
15、1)对类型为gateway、ingress的资源对象,通过路由匹配规则从本地缓存中寻找对应的service;
16、2)对类型为service的资源对象,首先通过路由匹配规则或名称匹配规则从本地缓存中寻找类型为endpoint或endpointslices的资源对象,然后通过标签选择器规则进一步确定是否具备依赖关系;
17、3)对类型为endpoint或endpointslices的资源对象,首先通过路由匹配规则或名称匹配规则从本地缓存中寻找类型为pod的资源对象,然后通过标签选择器规则进一步确定是否具备依赖关系;
18、4)对类型为deployments的资源对象,通过标签选择器规则从本地缓存中寻找类型为replicaset的资源对象;
19、5)对类型为replicaset、statefulset或daemonset的资源对象,通过标签选择器从本地缓存中寻找类型为pod的资源对象;
20、对于新增的资源,按照对象转换方法存储到neo4j图数据库中,在本地缓存中寻找与其相关联的资源节点建立时序关系,在关系中添加创建时间;
21、对于有更新的节点,首先从本地缓存中找到节点之前的状态并对比,判断其自身属性是否有变动,若有则按照步骤2中的对象转换方法更新数据库中的节点信息,若没有则不更新,然后按照对象间关系确立方法判断是否存在关系改变,如果有新关系建立,则在neo4j图数据库中添加新的关系,并记录创建时间,如果有关系失效,则在neo4j图数据库中记录关系的失效时间;
22、对于有删除的资源,首先从本地缓存中找到资源之前的状态并对比,判断其自身属性是否有变动,若有则按照步骤2中的对象转换方法更新数据库中的节点信息,若没有则不更新,然后为所有未失效的时序关系添加失效时间。
23、所述步骤4的具体方法为:
24、定期从微服务监控系统prometheus中查询计数器类型的流量指标,解析指标标签中的源端负载名称和命名空间,并在在本地缓存中找到对应的源端pod,然后解析指标标签中的目的端负载名称和命名空间,并在本地缓存中找到对应的目的端pod,如果源端pod与目的端pod之间并未建立时序关系,则新建时序关系,起始及结束时间为当前处理时间,如果已建立时序关系,则将结束时间更新为当前的处理时间。
25、与现有技术相比,本发明的有益效果为:
26、1、本发明通过listwatchapi解析资源事件以及流量指标解析的方式,能够解析微服务间、微服务与pod、微服务与配置资源之间的依赖关系的同时,降低对集群的负载压力,同时避免解析大量http请求数据。
27、2、本发明通过时序知识图谱构建微服务集群拓扑,并利用图数据库neo4j进行数据持久化,保障拓扑知识的时效性的同时,降低对存储空间占用率。
28、综上,本发明通过监听有限的资源事件构建微服务间依赖拓扑,不需要实时解析大量的请求指标或调用链,避免重复的实体对齐操作,提高了微服务间依赖拓扑的构建效率;引入时序知识图谱,精确了知识的时效性的同时降低了存储空间占比。
本文地址:https://www.jishuxx.com/zhuanli/20240730/196371.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表