CN104219316B - 一种分布式系统中的调用请求处理方法及装置 - Google Patents
一种分布式系统中的调用请求处理方法及装置 Download PDFInfo
- Publication number
- CN104219316B CN104219316B CN201410462687.0A CN201410462687A CN104219316B CN 104219316 B CN104219316 B CN 104219316B CN 201410462687 A CN201410462687 A CN 201410462687A CN 104219316 B CN104219316 B CN 104219316B
- Authority
- CN
- China
- Prior art keywords
- link
- call request
- calling
- tracing information
- link tracing
- 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.)
- Active
Links
Abstract
本发明公开了一种分布式系统中的调用请求处理方法及装置,用以实现分布式调用链路的追踪,减少分布式系统维护代价,并提高分布式系统的健壮性和可靠性。所述方法,包括:拦截请求方发起的调用请求;获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。
Description
技术领域
本发明涉及分布式系统、数据处理技术领域,尤其涉及一种分布式系统中的调用请求处理方法及装置。
背景技术
分布式系统是近年来解决海量计算、数据处理的通用系统架构范式,解决了以往集中式系统的缺点,同时也由于其“去中心化”的特点具有很好的扩展性、容错性和健壮性。
分布式系统中,每一业务处理请求可以被划分为若干个子任务进行处理,各子任务在分布式系统中被处理的过程可以称为分布式调用,一个请求的调用链路就是由处理各子任务的调用组成。
典型的分布式系统通常由不同功能的组件、子系统或者模块构成,各个组件、子系统或者模块的职责不同,数据处理能力也不同。随着分布式系统的结构愈发复杂、拓扑愈发分散,为了对分布式系统进行有效监控或管理,避免由于流量超标无法承载服务而造成的“系统雪崩效应”等,需要对调用链路进行追踪并分析,同时可以根据分析结果对调用链路或者调用进行优化。
现有技术中,为了实现对分布式调用链路的追踪,通常是在实现各个组件、子系统或者模块的源代码中加入实现调用链路追踪功能的代码,即对各个组件、子系统或者模块进行源代码级改造(亦可称为对原分布式系统的侵入),即在业务处理逻辑中耦合进调用链路追踪的处理逻辑,其一方面增加了源代码进行改造升级代价以及后续的系统维护代价,另一方面,由于现有的调用链路追踪方案需要侵入原分布式系统中,影响了原分布式系统业务处理的健壮性和可靠性。
发明内容
本发明实施例提供一种分布式系统中的调用请求处理方法及装置,用以追踪分布式系统中所执行调用的调用链路,减少分布式系统维护代价,并提高分布式系统的健壮性和可靠性。
本发明实施例提供一种分布式系统中的调用请求处理方法,包括:
拦截请求方发起的调用请求;
获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;
按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。
本发明实施例提供一种分布式系统中的调用请求处理装置,包括:
拦截单元,用于拦截请求方发起的调用请求;
获取单元,用于获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;
处理单元,用于按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。
本发明实施例提供的分布式系统中的调用请求处理方法及装置,在将请求方发起的调用请求发送给接收方之前拦截该调用,获取其中的链路追踪信息,并按次序修改链路追踪信息的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业务逻辑处理,修改后的链路追踪信息供接收方在发起下次调用时使用,接收方作为下次调用的请求方,发起调用请求时,该调用请求同样被拦截,获取其中的链路追踪信息,并按次序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业务逻辑处理等,依次类推,直至整个调用链路结束,根据链路追踪信息中的序列标识,能够追踪到整条调用链路。另一方面,由于上述过程中,无需对已有的业务处理逻辑进行修改即可追踪到整条调用链路,从而能够减少分布式系统维护代价,提高了分布式系统的健壮性和可靠性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例中,调用请求处理方法的实施流程示意图;
图2为本发明实施例中,进行流量控制的实施流程示意图;
图3为本发明实施例中,调用请求处理装置的结构示意图。
具体实施方式
为了提高分布式系统的可靠性和健壮性,同时降低分布式系统维护代价的基础上实现追踪分布式系统中的调用链路,本发明实施例提供了一种分布式系统中的调用请求处理方法及装置。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
如图1所示,为本发明实施例提供的分布式系统中的调用请求处理方法的实施流程示意图,包括以下步骤:
S11、拦截请求方发起的调用请求。
S12、获取拦截到的调用请求中的链路追踪信息。
链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,其中,序列标识用于表示一次调用在整个调用链路中的次序。
在拦截到请求方发起的调用请求之后,首先获取调用请求中的链路追踪信息。需要说明的是,业务处理请求在到达分布式系统中后,首次发起的调用请求中并不包含链路追踪信息,因此,本发明实施例中,如果拦截的调用请求中不存在链路追踪信息时,则为拦截到的调用请求创建信的链路追踪信息并初始化,并将创建的链路追踪信息作为本次调用的链路追踪信息存储在拦截到的调用请求中。具体的,链路追踪信息初始化包括对调用链路标识和系列标识的初始化,其中,调用链路标识为全局唯一,较佳的,其可以由时间戳(Unix Timestamp)+机器标识(MachineId)或网卡地址标识(MACId)+随机数,序列标识在初始化时可以被置为1。并将创建的链路追踪信息存储到本次调用请求中。
根据调用类型的不同,获取拦截到的调用请求中的链路追踪信息可以包括以下两种实施方式:
实施方式一、不跨线程或者跨线程调用
对于不跨线程调用,则直接从执行本次调用的当前线程中获取链路追踪信息。
对于跨线程调用,如果子线程由当前父线程创建,由于子线程集成父线程上下文,因此,可以直接从执行本次调用的当前子线程上下文中获取链路追踪信息。如果为新线程,则链路追踪信息被显式绑定到新线程上下文中,因此,可以从执行本次调用的当前新线程上下文中获取链路追踪信息。
实施方式二、跨进程调用
如果本次调用为跨进程调用,则链路追踪信息与调用请求一起封装到数据包(即序列化)中通过TCP(传输控制协议)或者HTTP(超文本传输协议)发送给接收方,在拦截到发送方发送的调用请求之后,解析发送调用请求的数据包(反序列化)中获取链路数据信息。
根据执行调用的物理节点是否隔离,调用类型还可以划分为本地调用和远程调用。其中,远程调用一定是跨进程调用,而本地调用可能是不跨进程调用,也可能是跨进程调用,还可能是跨进程调用。具体可以根据本次调用是否为跨线程调用或者是否为跨进程调用执行,这里不再赘述。
S13、按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方。
其中,修改后的链路追踪信息供接收方在发起下次调用时使用。
具体实施时,在获取到链路追踪信息之后,按照本次调用在整个调用链路中的次序修改其中的序列标识,以保证链路追踪信息反映调用链路的序列。较佳的,可以将获取的序列标识加1,得到本次调用的序列标识。
实施例一中,通过在拦截的调用请求中植入包含反映调用链路序列的序列标识,在业务处理结束后,通过收集业务处理过程中每一次调用对应的序列标识即可构成整个调用链路。由于上述过程中,无需对原有业务处理逻辑进行修改,从而提高了分布式系统的健壮性和可靠性,降低了分布式系统维护的代价。
实施例二
具体实施时,由于分布式系统需要处理的业务量大,如果对每次业务处理过程的调用链路或者调用均进行处理,需要消耗较多的处理资源。因此,实施例二在实施例一的基础上,在链路追踪信息中增加了采样标识,在获取到链路追踪信息之后,可以根据其中的采样标识确定是否需要对本次调用进行采样,如果需要,则在接收方执行完成更新后的调用请求后,记录本次调用的链路追踪信息和调用追踪信息。其中,调用追踪信息包括本次调用的执行时长和/或本次调用的执行结果。根据采样标识需要对本次调用进行采样时,在接收方开始执行本次调用时,启动计时器,在调用完成时,停止计时器,从而获得本次调用的执行时长。
具体实施时,可以采用异步存储方式存储链路追踪信息和调用追踪信息。例如,可以在分布式系统的存储组件或系统中异步存储本次调用的链路追踪信息和调用追踪信息。其中,存储组件或系统包括但不限于内存、数据库(DB)、文件系统和缓存等。对于链路追踪信息,可以在创建或者每次被修改之后均进行存储。
在业务处理过程中执行首次调用时,在创建了新的链路追踪信息之后,可以根据预置的采样算法,判断是否需要对本次调用进行采样,如果需要,更新采样标识为需要采样,如果不需要,则更新采样标识为不需要采样。
后续在对每一调用处理的过程中,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中之前,可以按照以下方式对采样标识进行更新:根据获取到的链路追踪信息中的调用链路标识和预设的采样策略修改采样标识。
实施例三
为了保证分布式系统中各节点的处理性能,避免由于负荷超载出现瓶颈节点,实施例三在实施例二的基础上,利用记录的调用追踪信息对分布式系统进行流量控制。
其中,调用追踪信息包括本次调用的执行时长和/或本次调用的执行结果。具体实施时,可以在调用开始执行时启动计时器,在调用执行结束后,停止计时器,以统计本次调用的执行时长。在本次调用结束后,直接获得本次调用的执行结果,即本次调用执行成功与否的结果。在获得了本次调用的调用追踪信息之后,将其异步存储到分布式系统中。
基于存储系统或组件中存储的调用追踪信息,如图2所示,本发明实施例中,可以按照以下流程进行流量控制:
S21、根据本次调用之前指定时长内、各次调用的执行时长或者执行结果确定所述指定时长内的流量控制信息。
具体实施时,流量控制信息至少包括以下任一项:指定时长内的调用频率、指定时长内的平均执行时长、指定时长内的平均调用成功率/失败率,基于存储的调用追踪信息,可以按照以下方式确定上述各流量控制信息:确定指定时长内执行调用的总次数与指定时长的比值为指定时长内的调用频率;确定指定时长内每次调用的执行时长之和与指定时长内执行调用的总次数的比值为指定时长内的平均执行时长;确定指定时长内调用执行结果为成功/失败的次数与指定时长内执行调用的总次数的比值为指定时长内的平均调用成功率/失败率。
S22、确定流量控制信息满足预置的流量控制触发条件时,按照预设的流量控制策略处理所述调用请求。
具体实施时,预置的流量控制触发条件可以包括:指定时长内的调用频率大于等于预设调用频率阈值;或者指定时长内的平均执行时长大于等于预设执行时长阈值;或者指定时长内的平均调用成功率不大于预设成功率阈值;或者指定时长内的平均调用失败率大于等于预设失败率阈值。
需要说明的是,在根据指定时长内的流量控制信息判断是否满足流量控制触发条件时,可以是满足上述任一条件即确定满足流量控制触发条件,也可以是满足以上至少两个条件的组合才判断满足流量控制触发条件,具体实施时,可以根据需要灵活设定,本发明对此不做限定。
如果满足流量控制触发条件,即判定需要进行流量控制时,可以按照预设的流量控制策略处理拦截的调用请求。例如,可以丢弃该调用请求,并向请求方反馈执行失败的执行结果,也可以将该调用请求分流给其他等同节点进行处理。
为了更好的理解本发明实施例,以下以微博系统为例对本发明实施例的实施过程进行说明。
假设微博系统由5层不同功能或作用的组件、子系统或模块构成。自顶向下分别是:(1)HTTP请求反向代理服务层;(2)Web服务层;(3)业务服务层,这一层会根据功能或业务类型水平划分成若干部分,比如认证/鉴权服务、用户服务、关系服务、内容服务、微博服务、计数服务等;(4)异步消息处理层,这一层会根据消息类型水平划分成若干部分,比如用户信息、微博内容、评论、转发、赞等;(5)资源层,这一层会根据资源类型水平划分成若干部分,比如关系型数据库、缓存、非关系型存储等。
每一层都是一个逻辑的池,表示由众多节点组成(可以是物理节点,也可以是逻辑节点)。假设每一层的节点数均为100(实际应用中可能远大于这个数量),那么这个分布式系统的总节点数为100+100+100*6+100*5+100*3,超过1500个节点。
本发明实施例中,以用户登录微博,并发布一条微博为例:首先,用户通过移动客户端或者微博网页点击发布微博,该用户的本次请求到达HTTP反向代理服务器池中的某一节点(此时在分布式系统中的分布式调用开始)这一层验证用户的本次请求来源是否合法,比如判断请求的用户标识、来源标识等。
根据本发明实施例,首先拦截调用请求,从调用请求中获取链路追踪信息,如果不存在则创建新的链路追踪信息并绑定到请求上下文中,包括生成本次调用的调用链路标识、初始化新的序列标识,同时根据采样算法计算本次调用是否需要采样并设置标志位(假设此次调用需要采样)。然后,将调用请求发送给接收方,在接收方开始执行本次调用请求(即执行原有业务的处理逻辑)时启动计时器,执行完毕后停止计时器,并获得调用执行结果(成功或者失败);记录调用追踪信息,包括但不限于本次调用执行时长、调用结果、调用签名、节点标识等。如果本次调用结果为失败(本例中可能是用户标识不合法,比如是黑名单用户;或者是来源标识不合法,比如是非认证客户端等)则直接丢弃请求,否则继续调用,由于到Web服务器是跨进程调用,所以将链路追踪信息序列化后通过HTTP协议与原请求一起发送到接收方。
当请求被路由到Web服务器池中的某一节点(这一层会做包括微博内容合法性校验、获取该用户的个人信息、获取该用户的关注、粉丝关系等),先拦截请求,从请求中获取链路追踪信息,由于上一次调用处理时已经绑定了链路追踪信息,所以按照调用次序修改其中的序列标识,将请求发给接收方开始执行原有业务的处理逻辑,并启动计时器。比如首先获取用户个人信息,假设获取用户个人信息是本地跨线程调用,父线程将链路追踪信息传递到子线程的上下文中,子线程开始执行时从上下文中获取链路追踪信息,修改其中的序列标识,启动计时器,通过缓存或关系型数据库查询用户个人信息,之后停止计时器,并获得调用执行结果,之后记录相关的调用追踪信息(具体实施与上一步中相同,这里不再赘述)。在获取用户个人信息的同时,父线程还获取用户的关注、粉丝关系等,具体处理方式可以参照上述获取用户个人信息的处理流程,这里不再赘述。
由于其他跨线程或跨进程的调用过程,均类似上述过程,这里不再赘述。整个请求处理完毕后,假设收集到的链路追踪信息和调用追踪信息如下:
调用链路标识(201408182233441000001),序列标识(1),调用执行结果(成功),调用执行时长(20),调用签名(a.b.c),节点标识(10.10.10.10);
调用链路标识(201408182233441000001),序列标识(2),调用执行结果(成功),调用执行时长(10),调用签名(d.e.f),节点标识(10.10.10.11);
调用链路标识(201408182233441000001),序列标识(2-1),调用执行结果(成功),调用执行时长耗时,调用签名(g.h.i),节点标识(10.10.10.11);
调用链路标识(201408182233441000001),序列标识(2-2),调用执行结果(成功),调用执行时长(20),调用签名(j.k.l),节点标识(10.10.10.11);
调用链路标识(201408182233441000001),序列标识(3),调用执行结果(成功),调用执行时长(40),调用签名(m.n.o),节点标识(10.10.10.12)。
由此,实现了对整个调用链路的追踪。
基于同一发明构思,本发明实施例中还提供了一种分布式系统中的调用请求处理装置,由于上述装置解决问题的原理与分布式系统中的调用请求处理方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图3所示,为本发明实施例提供的分布式系统中的调用请求处理装置的结构示意图,包括:
拦截单元31,可以用于拦截请求方发起的调用请求。
获取单元32,可以用于获取拦截到的调用请求中的链路追踪信息。
其中,链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,序列标识用于表示一次调用在整个调用链路中的次序。
处理单元33,可以用于按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方。
其中,修改后的链路追踪信息供接收方在发起下次调用时使用。
具体实施时,链路追踪信息中还包括采样标识,采用标识用于表示是否需要采样。本发明实施例提供的调用请求处理装置,还可以包括:记录单元,用于若根据采样标识确认需要进行采样,则在接收方执行完成更新后的调用请求后,记录本次调用的链路追踪信息和调用追踪信息。
具体实施时,处理单元33,还可以用于将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中之前,根据获取到的链路追踪信息中的调用链路标识和预设的采样策略修改采样标识。
本发明实施例提供的调用处理装置,还可以包括:
创建单元,可以用于用于若拦截单元31拦截的调用请求中不存在链路追踪信息,为拦截到的调用请求创建新的链路追踪信息并初始化.
处理单元33,可以用于将创建的链路追踪信息作为本次调用的链路追踪信息存储在拦截到的调用请求中。
较佳的,获取单元32可以用于如果次调用为不跨线程调用或者跨线程调用,则从执行本次调用的当前线程的上下文中读取所述链路追踪信息;以及如果本次调用为跨进程调用,则解析调用请求中的链路追踪信息。
较佳的,调用追踪信息包括本次调用的执行时长和/或本次调用的执行结果。本发明实施例提供的调用请求处理装置,还可以包括:
第一确定单元,用于根据本次调用之前指定时长内、各次调用的执行时长或者执行结果确定所述指定时长内的流量控制信息。
第二确定单元,用于确定所述流量控制信息满足预置的流量控制触发条件时,按照预设的流量控制策略处理所述调用请求。
较佳的,流量控制信息至少包括以下任一项:指定时长内的调用频率、指定时长内的平均执行时长、指定时长内的平均调用成功率/失败率;以及流量控制触发条件包括:所述指定时长内的调用频率大于等于预设调用频率阈值;或者指定时长内的平均执行时长大于等于预设执行时长阈值;或者指定时长内的平均调用成功率不大于预设成功率阈值;或者指定时长内的平均调用失败率大于等于预设失败率阈值。第一确定单元,可以用于确定指定时长内执行调用的总次数与指定时长的比值为指定时长内的调用频率;确定指定时长内每次调用的执行时长之和与指定时长内执行调用的总次数的比值为指定时长内的平均执行时长;确定指定时长内调用执行结果为成功/失败的次数与指定时长内执行调用的总次数的比值为指定时长内的平均调用成功率/失败率。
本发明实施例提供的分布式系统中的调用请求处理方法及装置,在将请求方发起的调用请求发送给接收方之前拦截该调用,获取其中的链路追踪信息,并按次序修改链路追踪信息的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业务逻辑处理,修改后的链路追踪信息供接收方在发起下次调用时使用,接收方作为下次调用的请求方,发起调用请求时,该调用请求同样被拦截,获取其中的链路追踪信息,并按次序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业务逻辑处理等,依次类推,直至整个调用链路结束,根据链路追踪信息中的序列标识,能够追踪到整条调用链路。另一方面,由于上述过程中,无需对已有的业务处理逻辑进行修改即可追踪到整条调用链路,从而能够减少分布式系统维护代价,提高了分布式系统的健壮性和可靠性。
为了描述的方便,以上的各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于内存存储器、磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种分布式系统中的调用请求处理方法,其特征在于,包括:
拦截请求方发起的调用请求;
获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;
按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用,以使所述接收方作为下次调用的请求方,发起下次调用的调用请求时,所述下次调用的调用请求同样被拦截,获取所述下次调用的调用请求中的链路追踪信息,并按次序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给所述下次调用的接收方进行业务逻辑处理,依次类推,直至整个调用链路结束,根据链路追踪信息中的序列标识,追踪到整条调用链路。
2.如权利要求1所述的方法,其特征在于,所述链路追踪信息中还包括采样标识,所述采样标识用于表示是否需要采样;以及所述方法还包括:
若根据所述采样标识确认需要进行采样,则在接收方执行完成更新后的调用请求后,记录本次调用的链路追踪信息和调用追踪信息。
3.如权利要求2所述的方法,其特征在于,还包括:
将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中之前,根据获取到的链路追踪信息中的调用链路标识和预设的采样策略修改采样标识。
4.如权利要求1或2所述的方法,其特征在于,还包括:
若拦截到的调用请求中不存在链路追踪信息,则为所述调用请求创建新的链路追踪信息并初始化;
将创建的链路追踪信息作为本次调用的链路追踪信息存储在拦截到的调用请求中。
5.如权利要求1所述的方法,其特征在于,所述获取拦截到的调用请求中的链路追踪信息,具体包括:
如果本次调用为不跨线程调用或者跨线程调用,则从执行本次调用的当前线程的上下文中读取所述链路追踪信息;
如果本次调用为跨进程调用,则解析所述调用请求中的链路追踪信息。
6.如权利要求2所述的方法,其特征在于,所述调用追踪信息包括:本次调用的执行时长和/或本次调用的执行结果;以及
在拦截请求方发起的调用请求之后,还包括:
根据本次调用之前指定时长内、各次调用的执行时长或者执行结果确定所述指定时长内的流量控制信息;
确定所述流量控制信息满足预置的流量控制触发条件时,按照预设的流量控制策略处理所述调用请求。
7.如权利要求6所述的方法,其特征在于,所述流量控制信息至少包括以下任一项:所述指定时长内的调用频率、所述指定时长内的平均执行时长、所述指定时长内的平均调用成功率/失败率;以及
所述流量控制触发条件包括:所述指定时长内的调用频率大于等于预设调用频率阈值;或者所述指定时长内的平均执行时长大于等于预设执行时长阈值;或者所述指定时长内的平均调用成功率不大于预设成功率阈值;或者所述指定时长内的平均调用失败率大于等于预设失败率阈值。
8.一种调用请求处理装置,其特征在于,包括:
拦截单元,用于拦截请求方发起的调用请求;
获取单元,用于获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;
处理单元,用于按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用,以使所述接收方作为下次调用的请求方,发起下次调用的调用请求时,所述下次调用的调用请求同样被拦截,获取所述下次调用的调用请求中的链路追踪信息,并按次序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给所述下次调用的接收方进行业务逻辑处理,依次类推,直至整个调用链路结束,根据链路追踪信息中的序列标识,追踪到整条调用链路。
9.如权利要求8所述的装置,其特征在于,所述链路追踪信息中还包括采样标识,所述采样标识用于表示是否需要采样;以及
所述装置,还包括:
记录单元,用于若根据所述采样标识确认需要进行采样,则在接收方执行完成更新后的调用请求后,记录本次调用的链路追踪信息和调用追踪信息。
10.如权利要求9所述的装置,其特征在于,
所述处理单元,还用于将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中之前,根据获取到的链路追踪信息中的调用链路标识和预设的采样策略修改采样标识。
11.如权利要求8或9所述的装置,其特征在于,还包括创建单元,其中:
所述创建单元,用于若所述拦截单元拦截的调用请求中不存在链路追踪信息,为拦截到的调用请求创建新的链路追踪信息并初始化;
所述处理单元,还用于将创建的链路追踪信息作为本次调用的链路追踪信息存储在拦截到的调用请求中。
12.如权利要求8所述的装置,其特征在于,
所述获取单元,具体用于如果本次调用为不跨线程调用或者跨线程调用,则从执行本次调用的当前线程的上下文中读取所述链路追踪信息;以及如果本次调用为跨进程调用,则解析所述调用请求中的链路追踪信息。
13.如权利要求9所述的装置,其特征在于,所述调用追踪信息包括本次调用的执行时长和/或本次调用的执行结果;以及
所述装置,还包括:
第一确定单元,用于根据本次调用之前指定时长内、各次调用的执行时长或者执行结果确定所述指定时长内的流量控制信息;
第二确定单元,用于确定所述流量控制信息满足预置的流量控制触发条件时,按照预设的流量控制策略处理所述调用请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410462687.0A CN104219316B (zh) | 2014-09-12 | 2014-09-12 | 一种分布式系统中的调用请求处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410462687.0A CN104219316B (zh) | 2014-09-12 | 2014-09-12 | 一种分布式系统中的调用请求处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104219316A CN104219316A (zh) | 2014-12-17 |
CN104219316B true CN104219316B (zh) | 2018-03-23 |
Family
ID=52100441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410462687.0A Active CN104219316B (zh) | 2014-09-12 | 2014-09-12 | 一种分布式系统中的调用请求处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104219316B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159667B (zh) * | 2015-08-07 | 2018-05-01 | 北京思特奇信息技术股份有限公司 | 一种web service接口调用参数转换方法及系统 |
CN105141505A (zh) * | 2015-08-25 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 即时通信系统中的消息传递跟踪方法和设备 |
CN106528362B (zh) * | 2015-09-10 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 一种流量隔离方法及装置 |
CN106886449B (zh) * | 2015-12-16 | 2021-07-23 | 菜鸟智能物流控股有限公司 | 系统运行的监控方法及装置 |
CN111258867B (zh) * | 2015-12-30 | 2022-04-22 | 华为技术有限公司 | 一种公有云的拨测方法和装置 |
CN113138869A (zh) * | 2016-01-15 | 2021-07-20 | 创新先进技术有限公司 | 远程调用方法及装置 |
CN107483221B (zh) * | 2016-06-08 | 2021-04-27 | 阿里巴巴集团控股有限公司 | 一种跨应用问题排查方法、装置及系统 |
CN106326017A (zh) * | 2016-08-17 | 2017-01-11 | 广东亿迅科技有限公司 | 基于Annotation使用的调用链的实现系统 |
CN106375458B (zh) * | 2016-09-08 | 2019-12-13 | 上海银赛计算机科技有限公司 | 服务调用系统、方法及装置 |
CN106502874B (zh) * | 2016-10-26 | 2019-05-10 | 南京途牛科技有限公司 | 一种调用链跟踪方法 |
CN106487596B (zh) * | 2016-10-26 | 2019-12-13 | 宜人恒业科技发展(北京)有限公司 | 分布式服务跟踪实现方法 |
CN106603270A (zh) * | 2016-11-10 | 2017-04-26 | 广州酷狗计算机科技有限公司 | 分布式系统中调用链路的追踪方法及装置 |
CN106933724B (zh) * | 2017-03-16 | 2020-06-05 | 北京搜狐新媒体信息技术有限公司 | 一种分布式信息追踪系统、信息处理方法及装置 |
CN109726016A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种用于分布式系统的链路追踪方法、装置和系统 |
CN109992465B (zh) * | 2017-12-29 | 2023-05-16 | 中国电信股份有限公司 | 服务追踪方法、装置和计算机可读存储介质 |
CN108289038A (zh) * | 2017-12-30 | 2018-07-17 | 金蝶软件(中国)有限公司 | 请求追踪方法、装置、计算机设备和存储介质 |
CN109062706B (zh) * | 2018-06-29 | 2021-03-05 | Oppo(重庆)智能科技有限公司 | 电子装置及其限制进程间通信的方法、存储介质 |
CN109150977B (zh) * | 2018-07-24 | 2021-05-14 | 中信百信银行股份有限公司 | 基于交易链路自动生成全局流水号的方法 |
CN108900640A (zh) * | 2018-08-13 | 2018-11-27 | 平安普惠企业管理有限公司 | 节点调用链路生成方法、装置、计算机设备及存储介质 |
CN111221659B (zh) * | 2018-11-23 | 2023-10-03 | 北京图森智途科技有限公司 | 一种多机器人操作系统环境的订阅性能追踪系统 |
CN113169900B (zh) * | 2018-11-29 | 2022-12-27 | 华为技术有限公司 | 分布式系统中追踪业务执行过程的方法和装置 |
CN110399178B (zh) * | 2019-06-14 | 2022-09-27 | 五八有限公司 | 一种第三方服务的调用方法、装置、电子设备和存储介质 |
CN110380985B (zh) * | 2019-08-02 | 2023-05-09 | 中国工商银行股份有限公司 | 基于交易链路的流量控制方法、装置、设备及存储介质 |
CN112448969A (zh) * | 2019-08-29 | 2021-03-05 | 北京京东尚科信息技术有限公司 | 链路追踪方法、装置、系统、设备及可读存储介质 |
CN110708212B (zh) * | 2019-09-10 | 2022-04-29 | 中国平安财产保险股份有限公司 | 分布式系统中调用链路的追踪方法及装置 |
CN113132438A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 服务通讯、服务处理方法、及对应装置、及服务通讯系统 |
CN111478806B (zh) * | 2020-04-02 | 2022-10-14 | 聚好看科技股份有限公司 | 一种链路追踪采样方法及系统 |
CN113114533B (zh) * | 2021-04-08 | 2023-04-07 | 中国工商银行股份有限公司 | 分布式服务调用的网络耗时展示方法及装置 |
CN116266145A (zh) * | 2021-12-17 | 2023-06-20 | 华为技术有限公司 | 一种处理调用的方法、系统和设备 |
CN114301988A (zh) * | 2021-12-22 | 2022-04-08 | 中国电信股份有限公司 | 分布式调用方法、装置、存储介质及电子设备 |
CN114003472B (zh) * | 2022-01-04 | 2022-04-12 | 连连(杭州)信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN116225880B (zh) * | 2023-05-05 | 2023-09-08 | 支付宝(杭州)信息技术有限公司 | 用于链路追踪的方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062539B2 (en) * | 2001-03-14 | 2006-06-13 | Microsoft Corporation | Using state information in a distributed environment |
CN102355505A (zh) * | 2011-10-17 | 2012-02-15 | 苏州迈科网络安全技术股份有限公司 | 异步分布式列对象请求代理系统应用方法 |
CN102710663A (zh) * | 2012-06-21 | 2012-10-03 | 奇智软件(北京)有限公司 | 获取云服务的方法及装置 |
CN102938788A (zh) * | 2012-11-15 | 2013-02-20 | 易程科技股份有限公司 | 事件的处理方法和装置 |
CN103179009A (zh) * | 2013-04-22 | 2013-06-26 | 烽火通信科技股份有限公司 | 一种分布式管理系统的动态自适应调用方法 |
-
2014
- 2014-09-12 CN CN201410462687.0A patent/CN104219316B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062539B2 (en) * | 2001-03-14 | 2006-06-13 | Microsoft Corporation | Using state information in a distributed environment |
CN102355505A (zh) * | 2011-10-17 | 2012-02-15 | 苏州迈科网络安全技术股份有限公司 | 异步分布式列对象请求代理系统应用方法 |
CN102710663A (zh) * | 2012-06-21 | 2012-10-03 | 奇智软件(北京)有限公司 | 获取云服务的方法及装置 |
CN102938788A (zh) * | 2012-11-15 | 2013-02-20 | 易程科技股份有限公司 | 事件的处理方法和装置 |
CN103179009A (zh) * | 2013-04-22 | 2013-06-26 | 烽火通信科技股份有限公司 | 一种分布式管理系统的动态自适应调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104219316A (zh) | 2014-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104219316B (zh) | 一种分布式系统中的调用请求处理方法及装置 | |
US11122067B2 (en) | Methods for detecting and mitigating malicious network behavior and devices thereof | |
US11381629B2 (en) | Passive detection of forged web browsers | |
KR101662685B1 (ko) | 심층 패킷 검사 방법 및 기기, 그리고 코프로세서 | |
CN103023906B (zh) | 针对远程过程调用协议进行状态跟踪的方法及系统 | |
US20160087939A1 (en) | Hierarchical rule development and binding for web application server firewall | |
US8051207B2 (en) | Inferring server state in s stateless communication protocol | |
CN107070880A (zh) | 一种单点登录的方法及系统、一种认证中心服务器 | |
CN103607385A (zh) | 基于浏览器进行安全检测的方法和装置 | |
US10764311B2 (en) | Unsupervised classification of web traffic users | |
US8661456B2 (en) | Extendable event processing through services | |
CN106155812A (zh) | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 | |
US20150326486A1 (en) | Application identification in records of network flows | |
CN106656920B (zh) | Http服务的处理方法、装置、存储介质及处理器 | |
CN109688153A (zh) | 使用主机应用/程序到用户代理的映射的零日威胁检测 | |
US11106824B2 (en) | System and method for dynamic management of private data | |
CN110381047A (zh) | 一种网络攻击面追踪的方法、服务器和系统 | |
CN106874371A (zh) | 一种数据处理方法及装置 | |
CN115941224A (zh) | 一种网络访问信息管理方法、装置和计算机可读存储介质 | |
CN108924159A (zh) | 一种报文特征识别库的验证方法与装置 | |
EP4104051A1 (en) | Multi-tenant java agent instrumentation system | |
CN108512889A (zh) | 一种基于http的应用响应推送方法及代理服务器 | |
CN114465741A (zh) | 一种异常检测方法、装置、计算机设备及存储介质 | |
Wang et al. | Performance comparison and evaluation of websocket frameworks: Netty, undertow, vert. x, grizzly and jetty | |
CN109361712B (zh) | 一种信息处理方法及信息处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |