一种支持微服务架构的程序跟踪方法及设备、介质与流程

文档序号:22890512发布日期:2020-11-10 18:15阅读:137来源:国知局
本申请涉及互联网
技术领域
:,尤其涉及一种支持微服务架构的程序跟踪方法及设备、介质。
背景技术
::在微服务架构下,各个微服务节点可能部署在不同的网络位置上,一次完整的业务功能请求往往跨越多个微服务节点上的多个不同组件。在传统的运维和开发中,通过查看应用的运行日志来确定其运行情况。但是,在微服务架构模式下,由于微服务节点数量众多,查看运行日志确定微服务节点运行状态的方式不再适用,在业务功能出现问题时,也难以通过日志定位出现问题的微服务节点。技术实现要素:本申请实施例提供支持微服务架构的程序跟踪方法及设备、介质,用以解决现有技术中的如下技术问题:在微服务架构模式下,通过查看运行日志的方式难以定位出现问题的微服务节点。本申请实施例采用下述技术方案:一种支持微服务架构的程序跟踪方法,包括:第一微服务节点获取预先配置的程序跟踪参数;根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据;若所述第一微服务节点调用第二微服务节点,则指示所述第二微服务节点继续进行程序跟踪,以生成所述第二微服务节点的程序跟踪数据。可选地,所述方法还包括:将所述第一微服务节点的程序跟踪数据发送给预设的程序跟踪中心,以便所述程序跟踪中心将所述第一微服务节点的程序跟踪数据,以及所述第二微服务节点的程序跟踪数据进行汇总。可选地,所述方法还包括:根据所述第一微服务节点的程序跟踪数据,以及所述第二微服务节点的程序跟踪数据,生成所述第一微服务节点与所述第二微服务节点的节点内以及节点间的组件调用关系树。可选地,第一微服务节点获取预先配置的程序跟踪参数,包括:接收用户请求;响应于所述用户请求,在预先针对不同用户配置的程序跟踪参数中,获取为所述用户请求对应的用户配置的程序跟踪参数。可选地,生成所述第一微服务节点的程序跟踪数据前,所述方法还包括:获取所述用户请求携带的用于指示是否要进行程序跟踪的特定标识;确定所述特定标识指示了要进行程序跟踪。可选地,根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据,包括:根据所述程序跟踪参数,生成第一程序跟踪上下文;根据所述第一程序跟踪上下文,生成所述第一微服务节点的程序跟踪数据。可选地,指示所述第二微服务节点继续进行程序跟踪,包括:根据所述第一程序跟踪上下文,生成第二程序跟踪上下文;根据所述第二程序跟踪上下文,指示所述第二微服务节点继续进行程序跟踪,其中,所述第二程序跟踪上下文用于关联所述第一微服务节点的程序跟踪数据与所述第二微服务节点的程序跟踪数据。可选地,所述第一程序跟踪上下文、第二程序跟踪上下文包括以下至少一种标识:第一跟踪标识,用于标记属于同一颗组件调用关系树的程序跟踪数据;第二跟踪标识,用于标记上一次调用对应生成的程序跟踪数据。一种支持微服务架构的程序跟踪设备,搭载有第一微服务节点,所述设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:所述第一微服务节点获取预先配置的程序跟踪参数;根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据;若所述第一微服务节点调用第二微服务节点,则指示所述第二微服务节点继续进行程序跟踪,以生成所述第二微服务节点的程序跟踪数据。一种支持微服务架构的程序跟踪介质,所述介质包括非易失性计算机存储介质,存储有计算机可执行指令,应用于第一微服务节点,所述计算机可执行指令设置为:所述第一微服务节点获取预先配置的程序跟踪参数;根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据;若所述第一微服务节点调用第二微服务节点,则指示所述第二微服务节点继续进行程序跟踪,以生成所述第二微服务节点的程序跟踪数据。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:不仅能够在当前工作的微服务节点进行程序跟踪,若发生微服务节点之间的调用时,还能够由当前工作的微服务节点指示所调用的微服务节点继续进行程序跟踪,从而能够记录到整个调用链路上连续性和完整性符合需求的程序跟踪数据,便于定位业务功能问题。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请的一些实施例提供的一种支持微服务架构的程序跟踪方法的流程示意图;图2为本申请的一些实施例提供的一种应用场景下,图1的方法的一种详细流程示意图;图3为本申请的一些实施例提供的一种应用场景下,图1的方法的涉及的多个主体之间的一种交互流程示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为本申请的一些实施例提供的一种支持微服务架构的程序跟踪方法的流程示意图。该流程的执行主体为某微服务节点,为了便于描述,将该微服务节点称为第一微服务节点,将该第一微服务节点以外的某其他微服务节点称为第二微服务节点。第一微服务节点、第二微服务节点可以位于同一设备,也可以位于不同设备。图1的方法包括如下步骤:s100:第一微服务节点获取预先配置的程序跟踪参数。在本申请的一些实施例中,程序跟踪参数是一组描述本次程序跟踪范围的参数,比如包括程序跟踪用户、跟踪时长、启用跟踪的组件、各组件记录跟踪信息的粒度等信息。在本申请的一些实施例中,程序跟踪参数可以是根据针对不同用户差异化配置的,如此,便于满足不同用户差异化的需求;进一步地,对于同一用户,每次为该用户进行程序跟踪时所使用的程序跟踪参数也可以是差异化的;可以由用户自主配置所要使用的程序跟踪参数。s102:根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据。在本申请的一些实施例中,根据程序跟踪参数,可以对第一微服务节点上运行的指定程序进行跟踪,比如,针对响应某用户请求而运行的某程序,跟踪由于该程序运行而导致的第一微服务节点内组件之间的调用情况。s104:若所述第一微服务节点调用第二微服务节点,则指示所述第二微服务节点继续进行程序跟踪,以生成所述第二微服务节点的程序跟踪数据。在本申请的一些实施例中,业务处理过程可能会跨不同的微服务节点进行,相应地,在这些微服务节点上均需要进行程序跟踪,以获得更完整的程序跟踪数据。基于此,由作为调用者的微服务节点,来指示作为被调用者的第二微服务节点仅需进行程序跟踪,在指示中携带相应的关联数据,以便于后续汇总参与本次业务处理过程的各微服务节点分别生成的程序跟踪数据。通过图1的方法,能够在当前工作的微服务节点进行程序跟踪,若发生微服务节点之间的调用时,还能够由当前工作的微服务节点指示所调用的微服务节点继续进行程序跟踪,从而能够记录到整个调用链路上连续性和完整性符合需求的程序跟踪数据,便于定位业务功能问题。本申请还提供了图1的方法的一些更具体的实施方案以及扩展方法,下面继续说明。在本申请的一些实施例中,预设了一个额外的模块,称之为程序跟踪中心,程序跟踪中心可以设置在单独的服务器上,也可以与某些微服务节点设置在同一设备上。程序跟踪中心能够与多个微服务节点通讯,用于汇总这些微服务节点的程序跟踪数据,从而有助于减轻微服务节点的工作负担,更好地进一步地利用程序跟踪数据。基于此,程序跟踪中心可以将第一微服务节点的程序跟踪数据,以及第二微服务节点的程序跟踪数据进行汇总,并可以对汇总后的程序跟踪数据进行分析处理,以便定位业务功能问题。当然,程序跟踪中心还可以提供更多的公共服务,比如,保存预先配置的程序跟踪参数,并提供相应的访问接口,则当微服务节点需要使用时,可以通过该访问接口从程序跟踪中心获取程序跟踪参数。在本申请的一些实施例中,一次业务处理过程往往由某个用户请求触发,则相应的程序跟踪过程也可以由该用户请求触发,如此,便于基于用户的操作反馈来确定一定范围的程序跟踪数据,进而高效地定位业务功能问题。基于此,假定用户发送的用户请求先到达第一微服务节点,则第一微服务节点接收用户请求,并响应于用户请求,触发相应的服务程序提供服务,在预先针对不同用户配置的程序跟踪参数中,获取为该用户请求对应的用户配置的程序跟踪参数,进而根据程序跟踪参数,对其所指定的程序(比如,该服务程序)进行跟踪。进一步地,在实际应用中,若针对对于所有用户请求或者某个用户的所有用户请求都进行程序跟踪,则会耗费大量的处理资源,也会生成大量的程序跟踪数据,占据大量的存储空间。为了减少其中不必要的浪费,可以更有针对性地进行程序跟踪,由用户指定或者由预定规则自动指定是否要针对本次的用户请求进行程序跟踪,假定以特定标识进行指定,将特定标识携带在用户请求中,第一微服务节点在接收到用户请求后,判断用户请求携带的该特定标识是否指示了要进行程序跟踪,若是,则进行程序跟踪,否则,可以不进行程序跟踪。在实际应用中,cookie一种已经应用普及的能够关联用户身份的文件,技术较为成熟,则可以以cookie的形式表示该特定标识,如此,兼容性和通用性较好,实施成本小,可靠性高。在本申请的一些实施例中,对于第一微服务节点,根据程序跟踪参数,生成第一程序跟踪上下文,根据第一程序跟踪上下文,生成第一微服务节点的程序跟踪数据。程序跟踪参数是本次跟踪全局适用的笼统的参数,而在具体的每个微服务节点进行跟踪时,需要生成适应于当前微服务节点的环境参数,以更好地指导在当前微服务节点的程序跟踪,将这些环境参数称为程序跟踪上下文。基于此,对于第一微服务节点,会根据程序跟踪参数,生成第一程序跟踪上下文,根据第一程序跟踪上下文,生成第一微服务节点的程序跟踪数据。在跨节点调用时,第一微服务节点还可以根据第一程序跟踪上下文,生成跨节点跟踪上下文,称为第二程序跟踪上下文,记录环境切换相关的环境参数,进而根据第二程序跟踪上下文,指示第二微服务节点继续进行程序跟踪;当然,若有需要(比如,第二微服务节点很可靠,基本不会出业务功能问题),跨节点跟踪上下文也可以指示第二微服务节点不再继续进行程序跟踪,从而有助于减少程序跟踪数据的总数量,提高问题定位效率。第二程序跟踪上下文能够用于关联第一微服务节点的程序跟踪数据与第二微服务节点的程序跟踪数据,便于后续汇总程序跟踪数据。第二微服务节点可以根据第二程序跟踪上下文,生成本节点的程序跟踪上下文,用于指导在本节点的程序跟踪。在本申请的一些实施例中,第一程序跟踪上下文、第二程序跟踪上下文包括以下至少一种标识:第一跟踪标识,用于标记属于同一颗组件调用关系树的程序跟踪数据;第二跟踪标识,用于标记上一次调用对应生成的程序跟踪数据。第一跟踪标识比如包括跟踪id、跟踪数据id,第二跟踪标识比如包括父跟踪数据id,为了便于理解,后面会举例具体说明。第一程序跟踪上下文比如包括跟踪id、跟踪数据id,第二程序跟踪上下文比如包括跟踪id、父跟踪数据id。在本申请的一些实施例中,前面提到了组件调用关系树,组件调用关系树示出了微服务节点内和/或微服务节点间的组件(比如,方法、http请求处理、数据库访问等)相互之间的调用关系,采用树形结构表示的优点在于信息简洁,直观性好,对于调用方和被调用方、调用链路经过的跳数等信息一目了然。在对程序跟踪数据汇总后,可以提取出完整的组件调用关系树,以便高效地定位业务功能问题。程序跟踪数据会记录上述的调用关系。程序跟踪数据是具有一定结构的数据集合,其比如包含跟踪id、父跟踪数据id、跟踪数据id、开始时间、结束时间、用户、组件名称、组件调用是否成功,异常信息等;并且针对每种组件还可以包含具有适应于该组件的信息,比如,针对http组件的url、method、headers,针对数据库组件的dbtype、sql、params等。在每个组件调用的开始处创建程序跟踪数据,记录基础信息,比如,开始时间、组件信息、当前用户等,在组件运行中记录其他的补充数据,在组件运行结束后记录组件调用结果,从而,记录的这些信息构成程序跟踪数据。在本申请的一些实施例中,程序跟踪中心汇总得到程序跟踪数据后,可以根据跟踪id和跟踪数据id构造组件调用关系树,还支持接收不完整的程序跟踪数据,并根据新增的程序跟踪数据更新已有的组件调用关系树。为了便于业务人员使用,程序跟踪中心可以提供相应的查询接口,用于查询组件调用关系树的全部或者指定部分,以及对应的程序跟踪数据,若有需要,在预先关联了日志数据的情况下,还可以根据组件调用关系树或者程序跟踪数据索引得到对应的日志数据,以便于高效地定位业务功能问题。根据上面的说明,本申请的一些实施例提供了一种应用场景下,图1的方法的一种详细流程示意图,如图2所述。在该应用场景下,预设有程序跟踪中心。图2中的流程包括以下步骤:用户配置程序跟踪参数,所配置的程序跟踪参数保存于程序跟踪中心;第一微服务节点接收到用户的用户请求,则从程序跟踪中心获取该用户对应的程序跟踪参数,进而生成第一程序跟踪上下文;第一微服务节点内组件调用时,根据第一程序跟踪上下文,生成程序跟踪数据,将该程序跟踪数据发送给程序跟踪中心;若第一微服务节点调用第二微服务节点,则创建第二程序跟踪上下文并发送给第二微服务节点;第二微服务节点根据第二程序跟踪上下文,生成适用于自身的程序跟踪上下文,类似于第一微服务节点的处理,第二微服务节点内组件调用时,根据其自身适用的程序跟踪上下文,生成程序跟踪数据,将该程序跟踪数据发送给程序跟踪中心,第二微服务节点也可以进一步地调用其他的微服务节点。更直观地,本申请的一些实施例还提供了一种应用场景下,图1的方法的涉及的多个主体之间的一种交互流程示意图,如图3所示。这多个主体包括浏览器、两个微服务节点(节点a、节点b)和程序跟踪中心。用户a在浏览器上进行业务功能操作,浏览器响应于用户的操作发送用户请求,以调用节点a完成某项业务功能,假定这次用户请求对应的业务处理过程中,节点a内发生一次sql调用,节点a还调用了节点b的某个功能,浏览器和节点a之间采用http协议通讯,节点a和节点b之间也采用http协议通讯。预先配置程序跟踪参数。比如,用户a为自己配置跟踪时长10分钟,按照该配置,10分钟后系统将自动停止程序跟踪,配置完成后自动保存到程序跟踪中心,则在程序跟踪时间内,用户a发送的用户请求都会自动携带特定标识的cookie,如cookie:trace=1,该取值表示要进行程序跟踪。用户a向节点a发起用户请求后,由于用户请求中包含cookie:trace=1,则节点a从程序跟踪中心获取用户a的程序跟踪参数,并生成一个对应于该用户请求的程序跟踪上下文,如{“enabled”:true,“traceid”:”ti01”,“spanid”:null},以上参数表示本次请求开启了程序跟踪,且本次请求的跟踪id为ti01,当前尚不存在程序跟踪数据。节点a响应于用户a的用户请求,生成一个跟踪数据1,该跟踪数据如:含义为该跟踪数据不存在父跟踪数据id(因为该跟踪数据为第一条)、跟踪数据id为1、类型为http请求、http请求的方法为get、收到该请求的时间戳为1591856949939,该请求的结束时间为null(因为该请求尚未结束),该请求的响应码为null(因为该请求尚未结束),该跟踪数据创建后,程序跟踪上下文中跟踪数据id变为1。前面提到,节点a内会进行一次sql调用。在sql调用前会生成一个跟踪数据2,该跟踪数据如:该跟踪数据中父跟踪id为1(因为该跟踪数据创建时http请求尚未完成,所以因http请求而生成的跟踪数据为该跟踪数据的父级)、类型为sql调用、使用的sql语句为select*fromtablea、开始时间戳为1591856949959、结束时间戳为null(因为该sql调用尚未完成)。该跟踪数据创建后,程序跟踪上下文中跟踪数据id变为2。sql调用完成后,会补充跟踪数据中的结束时间,之后因sql调用的跟踪数据为:此时本条跟踪数据已经完成,该跟踪数据将会发送到程序跟踪中心,且程序跟踪上下文中的跟踪数据id被置为1。前面已经提到,节点a还会调用节点b中的功能,此时节点a中与该请求对应的程序跟踪上下文为{“enabled”:true,“traceid”:”ti01”,“spanid”:1},那么节点a将其转化为跨节点的程序跟踪上下文,并将其附加在调用节点b的请求中,附加方式依照请求类型可以有多种,针对http请求比如采用header的方式附加,如:trace-header:ti01:1:1,其含义表示当前跟踪id为ti01、跟踪数据id为1、本次请求的跟踪状态为开启。节点b收到请求后,从请求中提取出跨节点的程序跟踪上下文,并据此创建自身的程序跟踪上下文,如{“enabled”:true,“traceid”:”ti01”,“spanid”:1}。因当前追踪状态为开启,节点b将针对收到的http请求生成一个跟踪数据3,如:生成后,节点b中与该请求关联的程序跟踪上下文中的跟踪数据id变更为3。请求完成后,将会补充未完成的信息,最后该条跟踪数据的完整形式为:该跟踪数据将会发送到程序跟踪中心,且程序跟踪上下文会被自动销毁。节点a收到节点b的响应信息后,且功能处理完成后,节点a返回请求结果,在请求完成时,补充未完成跟踪数据1,其最终为该跟踪数据将会发送到程序跟踪中心,且程序跟踪上下文会被自动销毁。程序跟踪中心在收到一系列的跟踪数据后,会自行构造该跟踪的组件调用关系树,如:基于同样的思路,本申请的一些实施例还提供了上述系统对应的设备、介质。本申请的一些实施例提供的一种支持微服务架构的程序跟踪设备,搭载有第一微服务节点,所述设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:所述第一微服务节点获取预先配置的程序跟踪参数;根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据;若所述第一微服务节点调用第二微服务节点,则指示所述第二微服务节点继续进行程序跟踪,以生成所述第二微服务节点的程序跟踪数据。本申请的一些实施例提供的一种支持微服务架构的程序跟踪介质,所述介质包括非易失性计算机存储介质,存储有计算机可执行指令,应用于第一微服务节点,所述计算机可执行指令设置为:所述第一微服务节点获取预先配置的程序跟踪参数;根据所述程序跟踪参数,生成所述第一微服务节点的程序跟踪数据;若所述第一微服务节点调用第二微服务节点,则指示所述第二微服务节点继续进行程序跟踪,以生成所述第二微服务节点的程序跟踪数据。本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本申请实施例提供的设备、介质与方法是对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果。本领域内的技术人员应明白,本发明的实施例可提供为系统、设备、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1