CN115714738A - 一种应用拓扑的动态感知方法、装置 - Google Patents
一种应用拓扑的动态感知方法、装置 Download PDFInfo
- Publication number
- CN115714738A CN115714738A CN202211257142.7A CN202211257142A CN115714738A CN 115714738 A CN115714738 A CN 115714738A CN 202211257142 A CN202211257142 A CN 202211257142A CN 115714738 A CN115714738 A CN 115714738A
- Authority
- CN
- China
- Prior art keywords
- application
- micro
- topology
- service
- connection
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用拓扑的动态感知方法、装置,其中,该方法包括:监听微服务架构中微服务应用的各连接的心跳响应消息,其中,心跳响应消息包括微服务应用的连接目标的元数据,元数据包括连接目标的地址信息;根据元数据获取微服务应用的局部应用拓扑描述信息;将局部应用拓扑描述信息发送给预设节点,以供预设节点根据局部应用拓扑描述信息生成微服务架构的全局应用拓扑,其中,全局应用拓扑指示微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。通过本发明,解决了相关技术中,基于Trace数据实现微服务应用拓扑感知,若微服务调用还未有流量产生,则应用拓扑将会感知不到,或只能感知部分链路的应用拓扑的问题。
Description
技术领域
本申请涉及到微服务治理领域,具体而言,涉及一种应用拓扑的动态感知方法、装置。
背景技术
在微服务架构中,随着微服务拆分的复杂度上升,应用架构的拓扑展示能力在微服务治理中显得格外重要,而传统应用拓扑能力均是基于全链路追踪的追踪(Trace)数据实现的,这就意味着如果微服务应用没有发生流量调用,或者说微服务应用只发生了部分依赖关系的流量调用,那么就无法看到全局的,或者隐藏链路的应用拓扑关系。另外,基于Trace数据,如果有较大的流量,那么需要对较大的Trace数据进行存储有一定的成本。
因此,针对相关技术中存在的上述技术问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种应用拓扑的动态感知方法、装置,以至少解决相关技术中基于Trace数据实现微服务应用拓扑感知,如果微服务调用还未有流量产生,那么应用拓扑将会感知不到,或者只能感知部分链路的应用拓扑的问题。
根据本申请的一个方面,提供了一种应用拓扑的动态感知方法,包括:监听微服务架构中微服务应用的各连接的心跳响应消息,其中,所述心跳响应消息包括所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息;根据所述元数据获取所述微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;将所述局部应用拓扑描述信息发送给预设节点,以供所述预设节点根据所述局部应用拓扑描述信息生成所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
可选地,所述监听微服务架构中微服务应用的各连接的心跳响应消息包括:监听所述微服务应用与注册中心之间连接的心跳响应消息,以及,监听所述微服务应用与该微服务应用所依赖服务之间连接的心跳响应消息。
可选地,根据所述元数据获取所述微服务应用的局部应用拓扑描述信息包括:获取所述微服务应用对应的第一信息列表,其中,所述第一信息列表包括微服务应用和连接目标之间的连接关系;将所述元数据所包括的所述连接目标的地址信息和所述微服务应用的地址信息更新至所述第一信息列表,得到所述微服务应用的局部应用拓扑描述信息。
可选地,所述元数据还包括所述连接目标的属性信息、所述连接目标的应用信息。
可选地,根据所述元数据获取所述微服务应用的局部应用拓扑描述信息还包括:获取所述微服务应用对应的第二信息列表,其中,所述第二信息列表包括连接目标的属性信息、连接目标的应用信息;将所述元数据包括的所述连接目标的属性信息和所述连接目标的应用信息更新至所述第二信息列表,得到所述微服务应用的局部应用拓扑描述信息。
可选地,所述方法还包括:在所述微服务应用启动的过程中,建立所述各连接的心跳数据。
根据本申请的另一个方面,提供了一种应用拓扑的动态感知方法,包括:获取微服务架构中各微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息由各微服务应用接收到的心跳响应消息确定,所述心跳响应消息中携带有所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;将各所述微服务应用的局部应用拓扑描述信息聚合,获得所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
根据本申请的再一个方面,提供了一种应用拓扑的动态感知装置,包括:监听模块,用于监听微服务架构中微服务应用的各连接的心跳响应消息,其中,所述心跳响应消息包括所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息;第一获取模块,用于根据所述元数据获取所述微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;发送模块,用于将所述局部应用拓扑描述信息发送给预设节点,以供所述预设节点根据所述局部应用拓扑描述信息生成所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
根据本申请的又一个方面,提供了一种应用拓扑的动态感知装置,包括:第二获取模块,用于获取微服务架构中各微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息由各微服务应用接收到的心跳响应消息确定,所述心跳响应消息中携带有所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;第三获取模块,用于将各所述微服务应用的局部应用拓扑描述信息聚合,获得所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
根据本申请的另一个方面,还提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述的方法步骤。
根据本申请的另一个方面,还提供了一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现上述的方法步骤。
在本申请实施例中,监听微服务架构中微服务应用的各连接的心跳响应消息,其中,该心跳响应消息包括该微服务应用的连接目标的元数据,该元数据包括该连接目标的地址信息;根据该元数据获取该微服务应用的局部应用拓扑描述信息,其中,该局部应用拓扑描述信息用于指示该微服务应用和该连接目标的连接拓扑关系;将该局部应用拓扑描述信息发送给预设节点,以供该预设节点根据该局部应用拓扑描述信息生成该微服务架构的全局应用拓扑,其中,该全局应用拓扑用于指示该微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。也就是说,本申请实施例的微服务应用基于心跳响应消息中携带的信息获取局部应用拓扑描述信息,然后将该局部应用拓扑描述信息上报到预设节点进行聚合,生成全局应用拓扑,即使没有任何流量调用,也可以分析出完整的应用拓扑信息,进而解决了相关技术中,基于Trace数据实现微服务应用拓扑感知,如果微服务调用还未有流量产生,那么应用拓扑将会感知不到,或者只能感知部分链路的应用拓扑的问题,达到了提高应用拓扑感知效率的技术效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种应用拓扑的动态感知结构示意图;
图2是根据本申请实施例的一种应用拓扑的动态感知方法流程图;
图3是根据本申请实施例的一种应用拓扑的动态感知示意图;
图4是根据本申请实施例的另一种应用拓扑的动态感知方法流程图;
图5是根据本申请实施例的另一种应用拓扑的动态感知示意图;
图6是根据本申请实施例的又一种应用拓扑的动态感知示意图;
图7是根据本申请实施例的一种应用拓扑的动态感知装置结构示意图;
图8是根据本申请实施例的另一种应用拓扑的动态感知装置结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
本申请实施例主要是应用于微服务架构下,基于应用拓扑感知提出来的,其中应用拓扑反映了多个微服务应用之间的调用关系,微服务应用与注册中心之间的调用关系以及微服务应用与微服务应用所依赖的服务(例如,数据库、缓存、消息队列服务)之间的调用关系。如图1所示,该微服务架构包括注册中心,微服务应用1、微服务应用2、微服务应用3,数据库,缓存,消息队列服务。治理中心在进行应用的分析和治理时,就需要知道上述微服务架构中的调用关系,调用关系可以看作是图1中的各种连接关系,通过这些连接关系可以最终确定出微服务架构的拓扑。基于此,本实施例中提供了一种应用拓扑的动态感知方法,图2是根据本申请实施例的应用拓扑的动态感知方法的流程图,如图2所示,该方法包括如下步骤:
S202,监听微服务架构中微服务应用的各连接的心跳响应消息,其中,该心跳响应消息包括该微服务应用的连接目标的元数据,该元数据包括该连接目标的地址信息;
需要说明的是,上述地址信息可以是网际互连协议(Internet Protocol,简称为IP)地址。上述微服务架构是一类将单一应用程序作为由众多小型服务构成之套件加以开发的方式,其中各项服务都拥有自己的进程并利用轻量化机制实现通信。
另外,需要说明的是,上述连接在连接池中,连接池可以包括:调用连接池、注册中心连接池等。上述连接目标可以包括:微服务应用、注册中心、数据库、缓存、消息队列服务等。上述S202可以通过Java Agent技术在微服务应用中注入心跳监听程序,通过该心跳监听程序监听微服务架构中微服务应用的各连接的心跳响应消息。
可选地,上述S202可以包括以下步骤:
S11,监听该微服务应用与注册中心之间连接的心跳响应消息,以及,
S12,监听该微服务应用与该微服务应用所依赖服务之间连接的心跳响应消息。
需要说明的是,上述微服务应用所依赖服务包括但并不限于:除该微服务应用之外的其它微服务应用、第三方组件(如缓存)、数据库等。
通过上述S11监听微服务应用与注册中心之间连接的心跳响应消息,可以进一步依据该心跳响应消息获取微服务应用与微服务应用之间、微服务应用与注册中心之间的局部应用拓扑描述信息,以及通过S12,监听该微服务应用与该微服务应用所依赖服务之间连接的心跳响应消息,可以进一步依据该心跳响应消息获取微服务应用与该微服务应用所依赖服务之间的局部应用拓扑描述信息。
S204,根据该元数据获取该微服务应用的局部应用拓扑描述信息,其中,该局部应用拓扑描述信息用于指示微服务应用和连接目标的连接拓扑关系;
上述S204可以通过Java Agent技术在微服务应用中注入心跳信息分析程序,通过该心跳信息分析程序获取该微服务应用的局部应用拓扑描述信息。
可选地,上述S204可以包括:
S21,获取该微服务应用对应的第一信息列表,其中,该第一信息列表包括微服务应用和连接目标之间的连接关系;
S22,将该元数据所包括的该连接目标的地址信息和该微服务应用的地址信息更新至该第一信息列表,得到该微服务应用的局部应用拓扑描述信息。
需要说明的是,每个微服务应用都对应一个信息列表,该信息列表包括微服务应用和连接目标之间的连接关系,例如,微服务应用A调用微服务应用B,那么上述第一信息列表就可以包括微服务应用A到微服务应用B的连接关系(A-B),又例如,微服务应用A调用微服务应用B,微服务应用B调用微服务应用C,那么上述第一信息列表就可以包括微服务应用A到微服务应用B的连接关系,微服务应用B到微服务应用C的连接关系(A-B-C)。
可选地,上述元数据还可以包括连接目标的属性信息、连接目标的应用信息。例如,假设连接目标是微服务应用,上述属性信息可以是微服务应用的类型,类型的名称等,在连接目标是注册中心时,上述应用信息可以是注册中心监听的服务,在连接目标是数据库时,上述应用信息是可以访问到的数据库表等,这样应用拓扑的信息更完整,可以进一步用户体验度。
在上述元数据包括连接目标的属性信息、连接目标的应用信息时,根据该元数据获取该微服务应用的局部应用拓扑描述信息还包括:
S23,获取该微服务应用对应的第二信息列表,其中,该第二信息列表包括连接目标的属性信息、连接目标的应用信息;
S24,将该元数据包括的该连接目标的属性信息和该连接目标的应用信息更新至该第二信息列表,得到该微服务应用的局部应用拓扑描述信息。
通过上述S21~S22以及S23~S24,,可以根据元数据获取微服务应用和连接目标的连接关系,并将该连接关系更新到与微服务应用对应的第一信息列表中,将连接目标的属性信息、连接目标的应用信息更新到第二信息列表中,后端只需维护上述第一信息列表和第二信息列表这两张表,不用进行调用就可以分析拓扑关系,相比于相关技术中,只有产生调用的时候,才能分析出拓扑关系,而为了展示拓扑关系进行调用,就会导致需要存储大量的Trace数据,存储成本增加,而本申请实施例与调用量无关,即使是数百个微服务应用极其复杂的拓扑关系,存储的成本几乎为0。
S206,将该局部应用拓扑描述信息发送给预设节点,以供该预设节点根据该局部应用拓扑描述信息生成该微服务架构的全局应用拓扑,其中,该全局应用拓扑用于指示该微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
可选地,在本申请实施例中,上述预设节点具备聚合并生成全局应用拓扑功能(例如,应用拓扑生成程序),可以将多个微服务应用的局部应用拓扑描述信息进行聚合处理,进而得到微服务架构的全局应用拓扑。例如,以购物类的***为例进行说明,如图3所示,该***包括注册中心、生态云网关(Spring Cloud Gateway,简称为SCG)、购物车、交易中心、库存中心、数据库、缓存、消息队列服务。其中,生态云网关、购物车、交易中心、库存中心都可以是微服务应用。对于购物车来说,购物车通过各连接的心跳响应消息中携带的连接目标的地址信息,确定出购物车与注册中心存在连接关系1、购物车与交易中心存在连接关系2,以及购物车与数据库存在连接关系3,那个这3种连接关系就可以看作是购物车的局部应用拓扑描述信息A,依次类推,交易中心和库存中心也会得到对应的局部应用拓扑描述信息B、局部应用拓扑描述信息C,将局部应用拓扑描述信息A、局部应用拓扑描述信息B、局部应用拓扑描述信息C进行聚合,就可以得到图3所示的由所有连线构成的全局应用拓扑。
通过上述S202~S206,监听微服务架构中微服务应用的各连接的心跳响应消息,其中,所述心跳响应消息包括所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息;根据所述元数据获取所述微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;将所述局部应用拓扑描述信息发送给预设节点,以供所述预设节点根据所述局部应用拓扑描述信息生成所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。也就是说,本申请实施例的微服务应用基于心跳响应消息中携带的信息获取局部应用拓扑描述信息,然后将该局部应用拓扑描述信息上报到预设节点进行聚合,生成全局应用拓扑,即使没有任何流量调用,也可以分析出完整的应用拓扑信息,进而解决了相关技术中,基于Trace数据实现微服务应用拓扑感知,如果微服务调用还未有流量产生,那么应用拓扑将会感知不到,或者只能感知部分链路的应用拓扑的问题,达到了提高应用拓扑感知效率的技术效果。
在一个可选地实施方式中,上述方法还包括:
S41,在该微服务应用启动的过程中,建立所述各连接的心跳数据。
可选地,上述方法还可以包括:在微服务运行时,动态建立各连接的心跳数据。
通过上述S41,即使微服务应用没有发生任何调用,但是微服务应用启动的过程中就会提前将连接以及心跳建立,因此就算没有任何业务调用,也可以分析出完整的微服务应用拓扑信息。
在本实施例中还提供了一种应用拓扑的动态感知方法,图4是根据本申请实施例的另一种应用拓扑的动态感知方法方法的流程图,如图4所示,该方法包括如下步骤:
S402,获取微服务架构中各微服务应用的局部应用拓扑描述信息,其中,该局部应用拓扑描述信息由各微服务应用接收到的心跳响应消息确定,该心跳响应消息中携带有该微服务应用的连接目标的元数据,该元数据包括该连接目标的地址信息,该局部应用拓扑描述信息用于指示该微服务应用和该连接目标的连接拓扑关系;
S404,将各该微服务应用的局部应用拓扑描述信息聚合,获得该微服务架构的全局应用拓扑,其中,该全局应用拓扑用于指示该微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
通过上述S402~S404,获取各微服务应用上报的基于心跳响应消息确定的局部应用拓扑描述信息,然后将各微服务应用的局部应用拓扑描述信息聚合,获得该微服务架构的全局应用拓扑,即使没有任何流量调用,也可以分析出完整的应用拓扑信息,进而解决了相关技术中,基于Trace数据实现微服务应用拓扑感知,如果微服务调用还未有流量产生,那么应用拓扑将会感知不到,或者只能感知部分链路的应用拓扑的问题,达到了提高应用拓扑感知效率。
下面结合具体示例,对本申请实施例进行举例描述。
示例1
在本示例1中主要是描述微服务应用与微服务应用之间的应用拓扑感知。
如图5所示,在每个微服务应用的框架中注入心跳监听程序以及心跳信息分析程序,心跳监听程序会监听服务框架中与注册中心的连接的心跳响应消息,该心跳响应消息包括包含且不限于注册中心的地址、注册中心中监听的服务、以及服务中的服务端地址等元数据信息等。心跳监听程序将上述元数据收集上来后会交给心跳信息分析程序,心跳信息分析程序会分析元数据信息并抽象出当前微服务应用涉及到的第一信息列表、第二信息列表等展示全局拓扑信息所需的局部应用拓扑描述信息。心跳信息分析程序将分析结果上报至后端全局的应用拓扑生成程序,应用拓扑生成程序会将一段时间内收集到的各个微服务应用上报的分析结果进行全局的聚合与展示。
示例2
在本示例2中主要是描述微服务应用与该微服务应用所依赖服务之间的应用拓扑感知。
如图6所示,微服务应用与微服务应用所需的依赖之间的拓扑关系是通过心跳监听程序监听连接池的连接的心跳来实现。心跳监听程序会收集各连接的心跳响应消息,该心跳响应消息包括目标连接的元数据(缓存的地址、数据库的地址、访问到的数据库表等更加丰富的元数据)。心跳监听程序将这些元数据信息收集上来后会交给心跳信息分析程序,心跳信息分析程序会分析元数据信息并抽象出当前微服务应用涉及到的第一信息列表、第二信息列表等展示全局拓扑信息所需的局部应用拓扑描述信息。心跳信息分析程序将分析结果上报至后端全局的应用拓扑生成程序。应用拓扑生成程序会将一段时间内收集到的各个微服务应用上报的分析结果进行全局的聚合与展示。
实施例二
基于上述实施例一的应用场景,在本实施例中提供了一种应用拓扑的动态感知装置,图7是根据本申请实施例的应用拓扑的动态感知装置的结构示意图,如图7所示,该装置包括:
监听模块72,用于监听微服务架构中微服务应用的各连接的心跳响应消息,其中,该心跳响应消息包括该微服务应用的连接目标的元数据,该元数据包括该连接目标的地址信息;
需要说明的是,上述地址信息可以是网际互连协议(Internet Protocol,简称为IP)地址。上述微服务架构是一类将单一应用程序作为由众多小型服务构成之套件加以开发的方式,其中各项服务都拥有自己的进程并利用轻量化机制实现通信。
另外,需要说明的是,上述连接在连接池中,连接池可以包括:调用连接池、注册中心连接池等。上述连接目标可以包括:微服务应用、注册中心、数据库、缓存、消息队列服务等。上述监听模块72可以通过Java Agent技术在微服务应用中注入心跳监听程序,通过该心跳监听程序监听微服务架构中微服务应用的各连接的心跳响应消息。
可选地,上述监听模块72还用于监听该微服务应用与注册中心之间连接的心跳响应消息,以及,监听该微服务应用与该微服务应用所依赖服务之间连接的心跳响应消息。
需要说明的是,上述微服务应用所依赖服务包括但并不限于:除该微服务应用之外的其它微服务应用、第三方组件(如缓存)、数据库等。
通过上述监听模块72监听微服务应用与注册中心之间连接的心跳响应消息,可以进一步依据该心跳响应消息获取微服务应用与微服务应用之间、微服务应用与注册中心之间的局部应用拓扑描述信息,以及监听该微服务应用与该微服务应用所依赖服务之间连接的心跳响应消息,可以进一步依据该心跳响应消息获取微服务应用与该微服务应用所依赖服务之间的局部应用拓扑描述信息。
第一获取模块74,用于根据该元数据获取该微服务应用的局部应用拓扑描述信息,其中,该局部应用拓扑描述信息用于指示该微服务应用和该连接目标的连接拓扑关系;
上述第一获取模块74可以通过Java Agent技术在微服务应用中注入心跳信息分析程序,通过该心跳信息分析程序获取该微服务应用的局部应用拓扑描述信息。
可选地,上述第一获取模块74还用于获取该微服务应用对应的第一信息列表,其中,该第一信息列表包括微服务应用和连接目标之间的连接关系;将该元数据所包括的该连接目标的地址信息和该微服务应用的地址信息更新至该第一信息列表,得到该微服务应用的局部应用拓扑描述信息。
需要说明的是,每个微服务应用都对应一个信息列表,该信息列表包括微服务应用和连接目标之间的连接关系,例如,微服务应用A调用微服务应用B,那么上述第一信息列表就可以包括微服务应用A到微服务应用B的连接关系(A-B),又例如,微服务应用A调用微服务应用B,微服务应用B调用微服务应用C,那么上述第一信息列表就可以包括微服务应用A到微服务应用B的连接关系,微服务应用B到微服务应用C的连接关系(A-B-C)。
可选地,上述元数据还可以包括连接目标的属性信息、连接目标的应用信息。例如,假设连接目标是微服务应用,上述属性信息可以是微服务应用的类型,类型的名称等,在连接目标是注册中心时,上述应用信息可以是注册中心监听的服务,在连接目标是数据库时,上述应用信息是可以访问到的数据库表等,这样应用拓扑的信息更完整,可以进一步用户体验度。
在上述元数据包括连接目标的属性信息、连接目标的应用信息时,第一获取模块74还用于获取该微服务应用对应的第二信息列表,其中,该第二信息列表包括连接目标的属性信息、连接目标的应用信息;将该元数据包括的该连接目标的属性信息和该连接目标的应用信息更新至该第二信息列表,得到该微服务应用的局部应用拓扑描述信息。
通过上述第一获取模块7,可以根据元数据获取微服务应用和连接目标的连接关系,并将该连接关系更新到与微服务应用对应的第一信息列表中,将连接目标的属性信息、连接目标的应用信息更新到第二信息列表中,后端只需维护上述第一信息列表和第二信息列表这两张表,不用进行调用就可以分析拓扑关系,相比于相关技术中,只有产生调用的时候,才能分析出拓扑关系,而为了展示拓扑关系进行调用,就会导致需要存储大量的Trace数据,存储成本增加,而本申请实施例与调用量无关,即使是数百个微服务应用极其复杂的拓扑关系,存储的成本几乎为0。
发送模块76,用于将该局部应用拓扑描述信息发送给预设节点,以供该预设节点根据该局部应用拓扑描述信息生成该微服务架构的全局应用拓扑,其中,该全局应用拓扑用于指示该微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
可选地,在本申请实施例中,上述预设节点具备聚合并生成全局应用拓扑功能(例如,应用拓扑生成程序),可以将多个微服务应用的局部应用拓扑描述信息进行聚合处理,进而得到微服务架构的全局应用拓扑。例如,以购物类的***为例进行说明,如图3所示,该***包括注册中心、生态云网关(Spring Cloud Gateway,简称为SCG)、购物车、交易中心、库存中心、数据库、缓存、消息队列服务。其中,生态云网关、购物车、交易中心、库存中心都可以是微服务应用。对于购物车来说,购物车通过各连接的心跳响应消息中携带的连接目标的地址信息,确定出购物车与注册中心存在连接关系1、购物车与交易中心存在连接关系2,以及购物车与数据库存在连接关系3,那个这3种连接关系就可以看作是购物车的局部应用拓扑描述信息A,依次类推,交易中心和库存中心也会得到对应的局部应用拓扑描述信息B、局部应用拓扑描述信息C,将局部应用拓扑描述信息A、局部应用拓扑描述信息B、局部应用拓扑描述信息C进行聚合,就可以得到图3所示的由所有连线构成的全局应用拓扑。
通过图7所示装置,监听微服务架构中微服务应用的各连接的心跳响应消息,其中,所述心跳响应消息包括所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息;根据所述元数据获取所述微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;将所述局部应用拓扑描述信息发送给预设节点,以供所述预设节点根据所述局部应用拓扑描述信息生成所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。也就是说,本申请实施例的微服务应用基于心跳响应消息中携带的信息获取局部应用拓扑描述信息,然后将该局部应用拓扑描述信息上报到预设节点进行聚合,生成全局应用拓扑,即使没有任何流量调用,也可以分析出完整的应用拓扑信息,进而解决了相关技术中,基于Trace数据实现微服务应用拓扑感知,如果微服务调用还未有流量产生,那么应用拓扑将会感知不到,或者只能感知部分链路的应用拓扑的问题,达到了提高应用拓扑感知效率的技术效果。
在一个可选地实施方式中,上述装置还用于在该微服务应用启动的过程中,建立所述各连接的心跳数据。
可选地,上述装置还用于在微服务运行时,动态建立各连接的心跳数据。
通过上述装置,即使微服务应用没有发生任何调用,但是微服务应用启动的过程中就会提前将连接以及心跳建立,因此就算没有任何业务调用,也可以分析出完整的微服务应用拓扑信息。
本实施例中还提供了一种应用拓扑的动态感知装置,图8是根据本申请实施例的另一种应用拓扑的动态感知装置的结构示意图,如图8所示,该装置包括:
第二获取模块82,用于获取微服务架构中各微服务应用的局部应用拓扑描述信息,其中,该局部应用拓扑描述信息由各微服务应用接收到的心跳响应消息确定,该心跳响应消息中携带有该微服务应用的连接目标的元数据,该元数据包括该连接目标的地址信息,该局部应用拓扑描述信息用于指示该微服务应用和该连接目标的连接拓扑关系;
第三获取模块84,用于将各该微服务应用的局部应用拓扑描述信息聚合,获得该微服务架构的全局应用拓扑,其中,该全局应用拓扑用于指示该微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
通过图8所示装置,获取各微服务应用上报的基于心跳响应消息确定的局部应用拓扑描述信息,然后将各微服务应用的局部应用拓扑描述信息聚合,获得该微服务架构的全局应用拓扑,即使没有任何流量调用,也可以分析出完整的应用拓扑信息,进而解决了相关技术中,基于Trace数据实现微服务应用拓扑感知,如果微服务调用还未有流量产生,那么应用拓扑将会感知不到,或者只能感知部分链路的应用拓扑的问题,达到了提高应用拓扑感知效率。
实施例三
本发明实施例还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行上述任一项方法的步骤。
实施例四
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,指令被处理器执行时实现上述任一项方法的步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-On ly Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种应用拓扑的动态感知方法,其特征在于,包括:
监听微服务架构中微服务应用的各连接的心跳响应消息,其中,所述心跳响应消息包括所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息;
根据所述元数据获取所述微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;
将所述局部应用拓扑描述信息发送给预设节点,以供所述预设节点根据所述局部应用拓扑描述信息生成所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
2.根据权利要求1所述的方法,其特征在于,所述监听微服务架构中微服务应用的各连接的心跳响应消息包括:
监听所述微服务应用与注册中心之间连接的心跳响应消息,以及,
监听所述微服务应用与该微服务应用所依赖服务之间连接的心跳响应消息。
3.根据权利要求1所述的方法,其特征在于,根据所述元数据获取所述微服务应用的局部应用拓扑描述信息包括:
获取所述微服务应用对应的第一信息列表,其中,所述第一信息列表包括微服务应用和连接目标之间的连接关系;
将所述元数据所包括的所述连接目标的地址信息和所述微服务应用的地址信息更新至所述第一信息列表,得到所述微服务应用的局部应用拓扑描述信息。
4.根据权利要求1所述的方法,其特征在于,所述元数据还包括所述连接目标的属性信息、所述连接目标的应用信息。
5.根据权利要求4所述的方法,其特征在于,根据所述元数据获取所述微服务应用的局部应用拓扑描述信息还包括:
获取所述微服务应用对应的第二信息列表,其中,所述第二信息列表包括连接目标的属性信息、连接目标的应用信息;
将所述元数据包括的所述连接目标的属性信息和所述连接目标的应用信息更新至所述第二信息列表,得到所述微服务应用的局部应用拓扑描述信息。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述微服务应用启动的过程中,建立所述各连接的心跳数据。
7.一种应用拓扑的动态感知方法,其特征在于,包括:
获取微服务架构中各微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息由各微服务应用接收到的心跳响应消息确定,所述心跳响应消息中携带有所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;
将各所述微服务应用的局部应用拓扑描述信息聚合,获得所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
8.一种应用拓扑的动态感知装置,其特征在于,包括:
监听模块,用于监听微服务架构中微服务应用的各连接的心跳响应消息,其中,所述心跳响应消息包括所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息;
第一获取模块,用于根据所述元数据获取所述微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;
发送模块,用于将所述局部应用拓扑描述信息发送给预设节点,以供所述预设节点根据所述局部应用拓扑描述信息生成所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
9.一种应用拓扑的动态感知装置,其特征在于,包括:
第二获取模块,用于获取微服务架构中各微服务应用的局部应用拓扑描述信息,其中,所述局部应用拓扑描述信息由各微服务应用接收到的心跳响应消息确定,所述心跳响应消息中携带有所述微服务应用的连接目标的元数据,所述元数据包括所述连接目标的地址信息,所述局部应用拓扑描述信息用于指示所述微服务应用和所述连接目标的连接拓扑关系;
第三获取模块,用于将各所述微服务应用的局部应用拓扑描述信息聚合,获得所述微服务架构的全局应用拓扑,其中,所述全局应用拓扑用于指示所述微服务架构所包括的所有微服务应用和对应的连接目标之间的连接拓扑关系。
10.一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1至7任一项所述的方法步骤。
11.一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1至7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211257142.7A CN115714738A (zh) | 2022-10-14 | 2022-10-14 | 一种应用拓扑的动态感知方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211257142.7A CN115714738A (zh) | 2022-10-14 | 2022-10-14 | 一种应用拓扑的动态感知方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115714738A true CN115714738A (zh) | 2023-02-24 |
Family
ID=85231137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211257142.7A Pending CN115714738A (zh) | 2022-10-14 | 2022-10-14 | 一种应用拓扑的动态感知方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115714738A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118041794A (zh) * | 2024-04-11 | 2024-05-14 | 灵长智能科技(杭州)有限公司 | 应用服务拓扑生成方法 |
-
2022
- 2022-10-14 CN CN202211257142.7A patent/CN115714738A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118041794A (zh) * | 2024-04-11 | 2024-05-14 | 灵长智能科技(杭州)有限公司 | 应用服务拓扑生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7505953B2 (en) | Performance monitoring of method calls and database statements in an application server | |
CN111049854A (zh) | 一种服务请求的传输方法和装置 | |
CN109981349B (zh) | 调用链信息查询方法以及设备 | |
US10795744B2 (en) | Identifying failed customer experience in distributed computer systems | |
EP1769379A2 (en) | Interferring server state in a stateless communication protocol | |
CN103069413A (zh) | 基于另一个用户的用户偏好为一个用户定制显示内容 | |
CN109639782A (zh) | 消息发送平台、方法 | |
CN112350873B (zh) | 应用服务信息处理方法、应用服务调用方法、装置及*** | |
CN102904774B (zh) | 终端、服务器和服务器性能测试方法 | |
US11379446B1 (en) | Session-based data storage for chat-based communication sessions | |
CN112565406B (zh) | 一种灰度发布方法、灰度发布***及电子设备 | |
CN115714738A (zh) | 一种应用拓扑的动态感知方法、装置 | |
CN111352809A (zh) | 一种分布式告警方法、***及计算机可读存储介质 | |
EP3329407A1 (en) | Application centric network experience monitoring | |
CN115951923B (zh) | 订阅事件管理方法、显示***、设备和存储介质 | |
KR20100051645A (ko) | VoIP 네트워크 시스템에서 SIP 단말기에 의해 정보를 공개, 질의 및 구독하는 방법, SIP 단말기, SIP 애플리케이션 서버, SIP 정보 센터 및 VoIP 네트워크 시스템 | |
CN110730428B (zh) | 短信点击数据获取方法、装置、电子设备及存储介质 | |
CN111274032B (zh) | 任务处理***及方法、存储介质 | |
CN112087327A (zh) | 信息状态获取方法和装置、存储介质和电子装置 | |
CN116974948A (zh) | 业务***测试方法、***、设备和介质 | |
US7647401B1 (en) | System and method for managing resources of a network load balancer via use of a presence server | |
CN106230939A (zh) | 一种应用运行监控方法及*** | |
CN114124766B (zh) | 基于模拟数据的测试方法及装置 | |
CN112286778B (zh) | 一种业务链调用解析方法及装置 | |
CN115277816A (zh) | 服务适配方法、设备、***以及计算机可读介质 |
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 |