CN116107777A - 一种服务依赖挖掘方法及微服务的服务调用方法 - Google Patents

一种服务依赖挖掘方法及微服务的服务调用方法 Download PDF

Info

Publication number
CN116107777A
CN116107777A CN202310388557.6A CN202310388557A CN116107777A CN 116107777 A CN116107777 A CN 116107777A CN 202310388557 A CN202310388557 A CN 202310388557A CN 116107777 A CN116107777 A CN 116107777A
Authority
CN
China
Prior art keywords
service
span
micro
dependent
call
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310388557.6A
Other languages
English (en)
Other versions
CN116107777B (zh
Inventor
李子星
赵涛
聂少龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Linji Zhiyun Technology Suzhou Co ltd
Original Assignee
Linji Zhiyun Technology Suzhou Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Linji Zhiyun Technology Suzhou Co ltd filed Critical Linji Zhiyun Technology Suzhou Co ltd
Priority to CN202310388557.6A priority Critical patent/CN116107777B/zh
Publication of CN116107777A publication Critical patent/CN116107777A/zh
Application granted granted Critical
Publication of CN116107777B publication Critical patent/CN116107777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种服务依赖挖掘方法及微服务的服务调用方法,包括以下步骤:(a)数据分类聚合:从多个数据源中读取数据并根据链路唯一标识进行数据分类聚合;(b)服务依赖集聚合计数:对链路服务调用中重复出现的关键服务调用进行计数;(c)部分依赖挖掘:根据关键服务的调用次数,计算其支持度;当支持度大于调用阈值时,认定所述关键服务为部分依赖;将挖掘到的部分依赖按照服务节点的多少排序输出到表格中;(d)组合依赖候选集生成:以挖掘最长的部分依赖作为组合依赖的候选集合,通过计算部分依赖的内部聚合度生成部分依赖候选集,遍历部分依赖候选集获得多条链路中重复出现的组合依赖。有利于部署具有关联关系的服务片段,从而优化了***性能和减小了运维管理难度。

Description

一种服务依赖挖掘方法及微服务的服务调用方法
技术领域
本发明属于微服务技术领域,具体涉及一种服务依赖挖掘方法及基于该服务依赖挖掘方法的微服务的服务调用方法。
背景技术
现有的服务注册方法主要有SOA(面向服务架构)的服务发现机制。SOA的服务注册发现机制是指服务提供者将自己提供的服务注册到服务注册中心,服务消费者从服务注册中心获取可用的服务列表,然后选择合适的服务进行调用。spring框架(由Rod Johnson创建的一个开源框架)提供了spring cloud eureka注册中心,其中服务提供方向EurekaServer注册服务:服务提供方启动时,会向Eureka Server注册自己提供的服务,包括服务名称、IP地址、端口号等信息,Eureka Server会将服务提供方注册的信息存储在自己的服务注册表中;服务消费方从Eureka Server获取服务:服务消费方启动时,会向EurekaServer发送查询请求,获取可用的服务列表,服务消费方通过负载均衡算法选择一台服务提供方进行调用。
微服务的服务于分布式***,是个分散式***;服务部署跨主机、网段、机房乃至大区,每个服务也可能会部署若干个运行实例,服务与服务之间的调用变得尤为重要。在Spring Cloud的微服务技术方案实现中采用的是http和restful的轻量级通讯方式,但每个服务都会对应一个IP地址,这么多的IP地址如果交给客户端自己维护那将会是灾难,因此服务注册与发现就应运而生了。
现有的Eurka等服务注册中心,需要将自身侵入到业务***源码中,这会导致已研***上云(注册发现)需要改代码,对于一些传统已研***上云就非常不友好。频繁修改源码会造成服务注册时间浪费,工作量繁琐,有的已有打包项目甚至没有源码,使得微服务***无法扩展。当前的服务注册发现方法(例如Spring Eurka)只支持以java为基础的***,对于c语言、c++、go语言等项目无法支持,限制了服务上云的普适性。
另外,在服务启动后,容器内的代理会进行本容器内服务的依赖分析,在微服务***中,服务之间的关系十分复杂,服务之间频繁调用,是一个典型的有向有环图。完成一个服务可能同时依赖多个服务才能实现其功能,只有当被依赖的所有服务正常提供服务时,服务才能正常运转。完整的调用链路对应一次业务过程访问的多个连续服务组合,其中的复合调用结构应用由多个服务组合而成,根据其预置的逻辑结构进行服务交互,这些复合调用构成了服务组合依赖。因此,需要对服务依赖关系进行挖掘,以优化***性能和减小运维管理难度。
发明内容
基于上述缺陷,本发明提供一种服务依赖挖掘方法,以优化***性能和减小运维管理难度。
为了达成上述目的,本发明提供一种服务依赖挖掘方法,包括以下步骤:
(a)数据分类聚合:从多个数据源中读取数据并根据链路唯一标识进行数据分类聚合;
(b)服务依赖集聚合计数:对链路服务调用中重复出现的关键服务调用进行计数;
(c)部分依赖挖掘:根据关键服务的调用次数,计算其支持度;当支持度大于调用阈值时,认定所述关键服务为部分依赖;将挖掘到的部分依赖按照服务节点的多少排序输出到表格中;
(d)组合依赖候选集生成:以挖掘最长的部分依赖作为组合依赖的候选集合,通过计算部分依赖的内部聚合度生成部分依赖候选集,遍历部分依赖候选集获得多条链路中重复出现的组合依赖。
优化地,步骤(a)中,当读取的数据为乱序数据时,需要按照调用时间进行排序。
优化地,步骤(a)中,根据链路唯一标识traceid进行数据分类聚合;步骤(b)中,还对所述关键服务调用创建标签列表,列表中存放所述链路标识traceid。
进一步地,步骤(c)中,定义Trace={span1,span2,…,spann,span|N∈N+}为一个服务调用链路,包含一组拥有相同traceid的有限调用链序列服务过程实例;Traces={trace1,trace2,…tracen,trace|N∈N+}为一组服务调用链路集合;(spani,spani+1,…,spani+t)∈tracej且(spani,spani+1,…,spani+t)在整条调用链路被调用的次数记做sum(spani,spani+1,…,spani+t);M为设置的调用阈值,当sum (spani,spani+1,…,spani+t)>M,则(spani,spani+1,…,spani+t)构成一个部分依赖,其中(spani,spani+1,…,spani+t)是服务链路中的连续调用关系,t表示调用链的长度;
(spani,spani+1,…,spani+t)∈tracej且(spanx, spanx+1,…,spanx+y)∈tracej,i+t<x,当sum(spani,spani+1,…,spani+t,spanx, spanx+1,…,spanx+y)>M,则(spani,spani+1,…, spani+t)=>(spanx,spanx+1,…,spanx+y)构成一个组合依赖,其中(spani, spani+1,…,spani+t)和(spanx,spanx+1,…,spanx+y)都是trace服务调用链路中的部分依赖。
优化地,步骤(d)中,所述内部聚合度计算公式如下:
式中,Xi为i度服务依赖调用,Xk表示Xi的子服务依赖调用。
本发明的又一目的在于提供一种上述微服务的服务调用方法,它包括上述的服务依赖挖掘方法。
优化地,包括以下步骤:
(S1)服务注册:启动微服务,向服务注册中心注册微服务对应的地址信息;所述地址信息包括IP地址和端口号;
(S2)服务发现:获取服务依赖后,当所述微服务需要调用其他服务时,通过服务注册中心查询到需要调用的其他服务地址信息;
(S3)地址渲染:将需要调用的其他服务地址信息渲染到配置文件、代码中;
(S4)服务调用:从配置文件或代码中获取需要调用的其他服务地址信息,使用相应的协议使微服务与其他服务进行通信,实现服务的调用。
进一步地,步骤(S1)中,当在服务外部的容器启动时,获取微服务的名称,然后容器中嵌入代理,所述代理从容器镜像中获取微服务名称后,根据容器的IP地址,并将所述微服务的名称与IP地址拼接起来,写入到容器所在服务器的IP table规则中,通知服务目录、进行记录。
进一步地,步骤(S2)中,获取服务依赖后,将被依赖服务的地址链接到服务容器中,作为服务的一类资源;当微服务要访问被依赖服务时,容器将进行访问截获,利用Hook技术实现对程序调用的拦截或者修改。
本发明服务依赖挖掘方法,通过采用数据分类聚合、服务依赖集聚合计数、部分依赖挖掘和组合依赖候选集生成等步骤的配合,挖掘分析服务调用链路中的依赖关系,进而可以根据强依赖关系以及服务调用频率优化部署具有关联关系的的服务片段,从而优化了***性能和减小了运维管理难度。
附图说明
图1为本发明服务依赖挖掘方法的流程图;
图2为本发明服务依赖挖掘方法中数据处理示例图;
图3为本发明服务依赖挖掘方法中链路调用过程图;
图4为本发明微服务调用链路监控分析***的总体架构图;
图5为本发明微服务调用链路监控分析***中采集模块的架构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明,下面将结合实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所做的等效变化与修饰前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
实施例1
本实施例提供一种发明服务依赖挖掘方法,通过挖掘分析服务调用链路中的依赖关系,进而可以根据强依赖关系以及服务调用频率优化部署具有关联关系的的服务片段,从而优化了***性能和减小了运维管理难度;具体如图1所示,包括以下步骤:
(a)数据分类聚合:从多个数据源中读取数据并根据链路唯一标识进行数据分类聚合。由于分布式链路追踪日志数据的特性,每条链路追踪的日志数据会出现在多个数据库中,因此需要从多个数据源中读取数据并根据链路唯一标识traceid进行数据分类聚合(数据处理示例如图2所示)。同时要保证链路调用服务数据的局部有序性,因此针对部分乱序数据,需要按照调用时间进行排序。
(b)服务依赖集聚合计数:对链路服务调用中重复出现的关键服务调用进行计数;还对所述关键服务调用创建标签列表,列表中存放所述链路标识traceid。
部分频繁项集计算由于***微服务的数量有限,在大量的链路服务调用中会出现部分关键服务调用重复出现的情况,因此针对这种重复的服务调用,需要对其进行计数,有利于下面部分依赖挖掘算法的计算,并同时为该服务调用创建标签列表,列表中存放该链路的traceid,为跨依赖组合挖掘算法做铺垫。以图3中的链路为例,计数结果如表1所示:箭头表示服务调用,权重表示调用次数(这里的元只是服务依赖关系中的服务节点个数)。
在本实施例中,步骤(a)和步骤(b)可以进行单节点链路日志扫描,再进行单节点服务计数,进而实现服务汇总聚合。
(c)部分依赖挖掘:根据关键服务的调用次数,计算其支持度;当支持度大于调用阈值时,认定所述关键服务为部分依赖;将挖掘到的部分依赖按照服务节点的多少排序输出到表格中。具体是,基于步骤(b)中的服务调用次数,计算其支持度(即该服务调用次数在整体服务调用链路数据调用中的占比);当支持度大于M时,认定其为一个部分依赖,将其挖掘到的部分依赖按照服务节点的多少排序输出到表格中。
服务依赖是有向、可传递、有环的多元关系。服务依赖是指与服务相关的多种依赖关系,表现为服务之间的约束,若约束条件不成立,服务实现受到影响。在Ei和Ej之间的服务依赖是一种有向依赖,记为Ei→Ej,称Ei依赖Ej,Ej影响Ei,Ei是依赖者,Ej是被依赖者。在服务调用链路中,如果服务Ei和服务Ej有Ei→Ej,则说明Ei和Ej之间存在服务依赖关系。
定义Trace={span1,span2,…,spann,span|N∈N+}为一个服务调用链路,包含一组拥有相同traceid的有限调用链序列服务过程实例;Traces={trace1,trace2,…tracen,trace|N∈N+}为一组服务调用链路集合;(spani,spani+1,…,spani+t)∈tracej且(spani,spani+1,…,spani+t)在整条调用链路被调用的次数记做sum(spani,spani+1,…,spani+t);M为设置的调用阈值,当sum (spani,spani+1,…,spani+t)>M,则(spani,spani+1,…,spani+t)构成一个部分依赖,其中(spani,spani+1,…,spani+t)是服务链路中的连续调用关系,t表示调用链的长度;
(spani,spani+1,…,spani+t)∈tracej且(spanx, spanx+1,…,spanx+y)∈tracej,i+t<x,当sum(spani,spani+1,…,spani+t,spanx, spanx+1,…,spanx+y)>M,则(spani,spani+1,…, spani+t)=>(spanx,spanx+1,…,spanx+y)构成一个组合依赖,其中(spani, spani+1,…,spani+t)和(spanx,spanx+1,…,spanx+y)都是trace服务调用链路中的部分依赖。
因此,微服务架构下的服务依赖不仅存在连续的服务依赖,也存在跨越式的服务依赖(即非连续的组合依赖)。这些依赖存在多次的服务调用链路中,挖掘分析这些依赖关系,根据强依赖关系以及服务调用频率可以优化部署具有关 联关系的服务片段,从而优化了***性能和减小了运维管理难度。
(d)组合依赖候选集生成:以挖掘最长的部分依赖作为组合依赖的候选集合,通过计算部分依赖的内部聚合度(内部聚合度表示部分依赖中的子依赖占整体的比重,用来衡量部分依赖的强度)生成部分依赖候选集,遍历部分依赖候选集获得多条链路中重复出现的组合依赖。
在获取了部分依赖的情况下,当直接把所有的部分依赖进行组合,再到服务调用链数据库中查询频率,是一个非常大的工作量,因此以挖掘最长的部分依赖作为组合依赖的候选集合,此时通过计算部分依赖的内部聚合度来寻找局部n个服务是否组成最长的局部部分依赖。
内部聚合度计算公式如下:
式中,Xi为i度服务依赖调用,Xk表示Xi的子服务依赖调用。
内部聚合度的示例计算过程如下:
(1)首先计算支持度:
Support1=sum(A→B→C)/SUM(SUM为总体日志服务数据调用次数)
Support2=sum(B→C→D)/SUM
Support3=sum(C→D→E)/SUM
(2)其次计算内部聚合度:
sum(A→B→C)/sum(A→B)=0.26
sum(A→B→C)/sum(B→C)=0.86
sum(B→C→D)/sum(B→C)=0.93
sum(B→C→D)/sum(C→D)=0.7
sum(C→D→E)/sum(C→D)=0.9
sum(C→D→E)/sum(D→E)=0.3
(3)由于(B→C→D)部分依赖中的支持度与内部聚合度较高,因此通过参数度量可将(B→C→D)作为部分依赖加入候选集Φ中。
将满足支持度和置信度约束条件的所有部分依赖加入候选集Φ{X1,X2,…,Xn}中(表示候选集合),并且在前述步骤中已经为部分依赖贴上了标签,因此每个元素都携带各自的标签列表。此时遍历候选集及列表,即可找到多条链路中重复出现的跨越组合依赖。即通过遍历所有元素的标签列表,根据traceid创建链路字典,即每个traceid下创建列表记录所有出现的部分依赖,最后通过遍历链路字典挖掘出重复出现次数较高的组合依赖,即为挖掘出的非连续的组合依赖。
可以通过微服务调用链路监控分析***(其总体架构如图4所示)实现上述功能,该微服务调用链路监控分析***分为采集模块和监控分析模块,这些模块共同构成了微服务调用链路监控分析***,每个模块各司其职,相辅相成,完成监控分析功能。如图5所示,采集模块包含调用链路生成、收集、和存储三个阶段,其是集链路生成、收集、存储于一体的模块(其自顶向下包括调用链路生成阶段、收集阶段和存储阶段),主要功能对生成的微服务调用链路进行特征事件匹配,采集含有重要信息的链路数据,处理对象是由各个服务模块之间通信产生的调用链路数据,输出为带有异常标记的所有调用链路数据。
获取服务依赖后,本申请将被依赖服务的地址链接到服务容器中(利用iptables,将服务名称-pod ip-物理机ip建立联系,并映射到iptable规则中),作为服务的一类资源。未来服务要访问被依赖服务时,容器将进行访问截获,其中使用到了Hook技术(Hook技术是一种在软件运行时拦截或修改特定***或应用程序调用的技术,其原理是利用操作***提供的API接口,通过修改API函数指针地址或者中间件函数指针地址,实现对程序调用的拦截或者修改)。具体来说,本申请实现的Hook技术的实现可以分为以下几个步骤:(1)查找目标函数:在程序运行时,先通过函数名或者函数地址查找目标函数的地址,以便后续修改函数指针;(2)修改目标函数指针:通过修改目标函数的函数指针地址,将目标函数指针指向Hook函数,从而实现对目标函数的拦截或修改。Hook函数可以是自己编写的函数,也可以是***提供的函数。在Hook函数中,可以实现对目标函数的拦截、修改、调用原函数等操作。(3)调用原函数:在Hook函数中,可以通过调用原函数指针来实现对目标函数的调用。这里需要注意的是,在调用原函数时,需要保存原函数的执行上下文,以确保程序的正常执行。同时,还需要注意Hook函数和原函数之间的调用顺序和参数传递方式等。本申请通过Hook技术对服务进行截获访问,然后将查询的pod IP或eip对应的物理服务器IP,通过iptable规则将流量传至目的物理机IP地址,物理机iptable查询并转发到本机 pod上即可完成透明访问(透明发现-访问转义)。
实施例2
本实施例提供一种微服务的服务调用方法,包括以下步骤:
(S1)服务注册:启动微服务,向服务注册中心注册微服务对应的地址信息;所述地址信息包括IP地址和端口号。
当在服务外部的容器启动时,获取微服务的名称,然后容器中嵌入代理,所述代理从容器镜像中获取微服务名称后,根据容器的IP地址,并将所述微服务的名称与IP地址拼接起来,写入到容器所在服务器的IP table规则中,通知服务目录、进行记录。
具体是:服务注册的核心是告知服务目录:某个服务运行在哪个节点上(IP),并且记录下来。因此,在此过程中,可以在服务外部的容器启动时,拿到服务的名称,然后容器中嵌入一个小代理,这个代理从容器镜像中拿到服务名称后,根据容器的ip地址,并将该服务名与ip地址拼接起来,一方面写入到容器所在服务器的IP table规则中(这是本发明定义的一个扩展规则),用于实现服务名-pod IP-iptable规则间的映射,写入后通知服务目录,并进行记录。当服务重启后pod ip改变,同时也会诱发目录中服务地址的更新,从而可以在无侵入式的模式下成功实现服务的注册。
iptables是一个在Linux内核中实现的防火墙软件,它可以过滤网络流量、修改网络流量、拒绝网络流量等,是Linux***中最常用的防火墙软件之一。iptables技术主要包括以下几个方面:
规则链(Chain):iptables将所有的包分为不同的规则链,每个规则链都包含了一系列的规则,用于过滤相应的流量。
规则(Rule):规则链中的每个规则都是用来过滤网络流量的,规则可以包含匹配条件和动作,匹配条件可以是IP地址、端口号、协议类型等,动作可以是允许、拒绝、修改等。
NAT(Network Address Translation):iptables可以对网络地址进行转换,将私有IP地址转换为公有IP地址,或者将一个端口映射到另一个端口。
日志(Logging):iptables可以记录所有被过滤的流量,包括被允许和被拒绝的流量,以便管理员进行监控和分析。
高级选项:iptables还提供了一些高级选项,例如连接跟踪、多个网络接口的支持、动态规则更新等,可以提高防火墙的安全性和灵活性。
本申请通过iptables技术,使得服务注册模型灵活性更高,能够为服务的注册提供更好的网络保障。
(S2)服务发现:获取服务依赖后,当所述微服务需要调用其他服务时,通过服务注册中心查询到需要调用的其他服务地址信息(包括IP地址、端口号等)。在本实施例中,获取服务依赖后,将被依赖服务的地址链接到服务容器中,作为服务的一类资源;当微服务要访问被依赖服务时,容器将进行访问截获,利用Hook技术实现对程序调用的拦截或者修改。
在服务启动后,容器内的代理会进行本容器内服务的依赖分析,在微服务***中,服务之间的关系十分复杂,服务之间频繁调用,是一个典型的有向有环图,完成一个服务可能同时依赖多个服务才能实现其功能,只有当被依赖的所有服务正常提供服务时,服务才能正常运转。完整的调用链路对应一次业务过程访问的多个连续服务组合,其中的复合调用结构应用由多个服务组合而成,根据其预置的逻辑结构进行服务交互,这些复合调用构成了服务组合依赖。基于服务调用链路数据存在着多种的服务依赖关系,通过该服务依赖关系关联分析提取有价值的信息,并验证对整体微服务***部署维护、性能优化。在本实施例中,采用实施例1中的服务依赖挖掘方法确定服务组合依赖。即从无侵入式服务发现的角度定义了服务依赖关系, 为后续的服务灵活部署、性能优化和运维管理提供基础支撑。
(S3)地址渲染:将需要调用的其他服务地址信息渲染到配置文件、代码中。服务在启动时,会通过一定的规则和算法,将需要调用的服务的地址信息渲染到配置文件、代码中。这个过程通常包括动态获取需要调用的服务的地址信息,将地址信息写入配置文件或代码中,并在运行时进行地址的动态替换等。
(S4)服务调用:从配置文件或代码中获取需要调用的其他服务地址信息,使用相应的协议使微服务与其他服务进行通信,实现服务的调用。服务在运行时,可以从配置文件或代码中获取需要调用的服务的地址信息,并使用相应的协议(如HTTP、gRPC等)与其他服务进行通信,实现服务的调用。
微服务地址渲染的好处在于:它可以实现服务的动态发现和调用,从而提高了***的灵活性和可扩展性。同时,它也可以提高***的可靠性和可用性,因为当一个服务出现故障或者需要升级时,***可以动态地切换到其他可用的服务实例上,从而避免了单点故障和***宕机的风险。
以上所述仅为本发明较佳的实施方式,并非用以限定本发明的保护范围;同时以上的描述,对于相关技术领域中具有通常知识者应可明了并据以实施,因此其他未脱离本发明所揭露概念下所完成之等效改变或修饰,都应涵盖在本发明的保护范围之内。

Claims (9)

1.一种服务依赖挖掘方法,其特征在于,包括以下步骤:
(a)数据分类聚合:从多个数据源中读取数据并根据链路唯一标识进行数据分类聚合;
(b)服务依赖集聚合计数:对链路服务调用中重复出现的关键服务调用进行计数;
(c)部分依赖挖掘:根据关键服务的调用次数,计算其支持度;当支持度大于调用阈值时,认定所述关键服务为部分依赖;将挖掘到的部分依赖按照服务节点的多少排序输出到表格中;
(d)组合依赖候选集生成:以挖掘最长的部分依赖作为组合依赖的候选集合,通过计算部分依赖的内部聚合度生成部分依赖候选集,遍历部分依赖候选集获得多条链路中重复出现的组合依赖。
2.根据权利要求1所述的服务依赖挖掘方法,其特征在于:步骤(a)中,当读取的数据为乱序数据时,需要按照调用时间进行排序。
3.根据权利要求1所述的服务依赖挖掘方法,其特征在于:步骤(a)中,根据链路唯一标识traceid进行数据分类聚合;步骤(b)中,还对所述关键服务调用创建标签列表,列表中存放所述链路标识traceid。
4.根据权利要求3所述的服务依赖挖掘方法,其特征在于:步骤(c)中,定义Trace={span1,span2,…,spann,span|N∈N+}为一个服务调用链路,包含一组拥有相同traceid的有限调用链序列服务过程实例;Traces={trace1,trace2,…tracen,trace|N∈N+}为一组服务调用链路集合;(spani,spani+1,…,spani+t)∈tracej且(spani,spani+1,…,spani+t)在整条调用链路被调用的次数记做sum(spani,spani+1,…,spani+t);M为设置的调用阈值,当sum (spani,spani+1,…,spani+t)>M,则(spani,spani+1,…,spani+t)构成一个部分依赖,其中(spani,spani+1,…,spani+t)是服务链路中的连续调用关系,t表示调用链的长度;
(spani,spani+1,…,spani+t)∈tracej且(spanx, spanx+1,…,spanx+y)∈tracej,i+t<x,当sum(spani,spani+1,…,spani+t,spanx, spanx+1,…,spanx+y)>M,则(spani,spani+1,…, spani+t)=>(spanx,spanx+1,…,spanx+y)构成一个组合依赖,其中(spani,spani+1,…,spani+t)和(spanx,spanx+1,…,spanx+y)都是trace服务调用链路中的部分依赖。
5.根据权利要求1所述的服务依赖挖掘方法,其特征在于:步骤(d)中,所述内部聚合度计算公式如下:
式中,Xi为i度服务依赖调用,Xk表示Xi的子服务依赖调用。
6.一种微服务的服务调用方法,其特征在于,它包括权利要求1至5中任一所述的服务依赖挖掘方法。
7.根据权利要求6所述微服务的服务调用方法,其特征在于,包括以下步骤:
(S1)服务注册:启动微服务,向服务注册中心注册微服务对应的地址信息;所述地址信息包括IP地址和端口号;
(S2)服务发现:获取服务依赖后,当所述微服务需要调用其他服务时,通过服务注册中心查询到需要调用的其他服务地址信息;
(S3)地址渲染:将需要调用的其他服务地址信息渲染到配置文件、代码中;
(S4)服务调用:从配置文件或代码中获取需要调用的其他服务地址信息,使用相应的协议使微服务与其他服务进行通信,实现服务的调用。
8.根据权利要求7所述微服务的服务调用方法,其特征在于,步骤(S1)中,当在服务外部的容器启动时,获取微服务的名称,然后容器中嵌入代理,所述代理从容器镜像中获取微服务名称后,根据容器的IP地址,并将所述微服务的名称与IP地址拼接起来,写入到容器所在服务器的IP table规则中,通知服务目录、进行记录。
9.根据权利要求7所述微服务的服务调用方法,其特征在于,步骤(S2)中,获取服务依赖后,将被依赖服务的地址链接到服务容器中,作为服务的一类资源;当微服务要访问被依赖服务时,容器将进行访问截获,利用Hook技术实现对程序调用的拦截或者修改。
CN202310388557.6A 2023-04-12 2023-04-12 一种服务依赖挖掘方法及微服务的服务调用方法 Active CN116107777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310388557.6A CN116107777B (zh) 2023-04-12 2023-04-12 一种服务依赖挖掘方法及微服务的服务调用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310388557.6A CN116107777B (zh) 2023-04-12 2023-04-12 一种服务依赖挖掘方法及微服务的服务调用方法

Publications (2)

Publication Number Publication Date
CN116107777A true CN116107777A (zh) 2023-05-12
CN116107777B CN116107777B (zh) 2023-06-23

Family

ID=86267602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310388557.6A Active CN116107777B (zh) 2023-04-12 2023-04-12 一种服务依赖挖掘方法及微服务的服务调用方法

Country Status (1)

Country Link
CN (1) CN116107777B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117938942A (zh) * 2024-03-20 2024-04-26 中国科学院空天信息创新研究院 服务注册发现方法、装置、设备、介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325062A (zh) * 2018-09-12 2019-02-12 哈尔滨工业大学 一种基于分布式计算的数据依赖挖掘方法及***
CN111752641A (zh) * 2020-06-29 2020-10-09 深圳壹账通智能科技有限公司 微服务容器之间服务启动方法、装置、设备及存储介质
CN115203050A (zh) * 2022-07-27 2022-10-18 广域铭岛数字科技有限公司 一种服务的依赖关系的确定方法及装置
CN116016686A (zh) * 2022-12-15 2023-04-25 百度在线网络技术(北京)有限公司 待优化节点的确定方法、装置、电子设备和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325062A (zh) * 2018-09-12 2019-02-12 哈尔滨工业大学 一种基于分布式计算的数据依赖挖掘方法及***
CN111752641A (zh) * 2020-06-29 2020-10-09 深圳壹账通智能科技有限公司 微服务容器之间服务启动方法、装置、设备及存储介质
CN115203050A (zh) * 2022-07-27 2022-10-18 广域铭岛数字科技有限公司 一种服务的依赖关系的确定方法及装置
CN116016686A (zh) * 2022-12-15 2023-04-25 百度在线网络技术(北京)有限公司 待优化节点的确定方法、装置、电子设备和介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117938942A (zh) * 2024-03-20 2024-04-26 中国科学院空天信息创新研究院 服务注册发现方法、装置、设备、介质及程序产品
CN117938942B (zh) * 2024-03-20 2024-05-28 中国科学院空天信息创新研究院 服务注册发现方法、装置、设备、介质及程序产品

Also Published As

Publication number Publication date
CN116107777B (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US11876809B2 (en) Identifying a cyber-attack impacting a particular asset
US12007996B2 (en) Management of distributed computing framework components
US10394527B2 (en) System and method for generating an application structure for an application in a computerized organization
US9009324B2 (en) Managing and reconciling information technology assets in a configuration database
US7496912B2 (en) Methods and arrangements for ordering changes in computing systems
US8892415B2 (en) Model-based systems and methods for monitoring resources
US7243306B1 (en) Service descriptor for a multitier compute infrastructure
US9165047B2 (en) Data synchronization system and method
US9483312B2 (en) Locating service endpoints from a service registry
US7278133B2 (en) Index-based parameter access and software for using the same
US20100115100A1 (en) Federated configuration data management
US9514163B2 (en) Database consolidation tool
WO2006026659A2 (en) Services oriented architecture for data integration services
US7702687B2 (en) Method and system of typing resources in a distributed system
CN116107777B (zh) 一种服务依赖挖掘方法及微服务的服务调用方法
EP4285237A1 (en) Dataset multiplexer for data processing system
US8166143B2 (en) Methods, systems and computer program products for invariant representation of computer network information technology (IT) managed resources
US11494381B1 (en) Ingestion and processing of both cloud-based and non-cloud-based data by a data intake and query system
CN112435022B (zh) 基于用户实时数据的动态检索***、及方法
KR100974621B1 (ko) Rfid 비즈니스 인식 프레임워크
CN115390912B (zh) 资源发现方法、装置、计算机设备和存储介质
CN115729784A (zh) 一种中台服务模型监测***
Waldbusser et al. RFC 4011: Policy Based Management MIB

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant