一种分布式系统中的调用请求处理方法及装置制造方法及图纸

技术编号:10789263 阅读:146 留言:0更新日期:2014-12-17 17:38
本发明专利技术公开了一种分布式系统中的调用请求处理方法及装置,用以实现分布式调用链路的追踪,减少分布式系统维护代价,并提高分布式系统的健壮性和可靠性。所述方法,包括:拦截请求方发起的调用请求;获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。

【技术实现步骤摘要】
一种分布式系统中的调用请求处理方法及装置
本专利技术涉及分布式系统、数据处理
,尤其涉及一种分布式系统中的调用请求处理方法及装置。
技术介绍
分布式系统是近年来解决海量计算、数据处理的通用系统架构范式,解决了以往集中式系统的缺点,同时也由于其“去中心化”的特点具有很好的扩展性、容错性和健壮性。分布式系统中,每一业务处理请求可以被划分为若干个子任务进行处理,各子任务在分布式系统中被处理的过程可以称为分布式调用,一个请求的调用链路就是由处理各子任务的调用组成。典型的分布式系统通常由不同功能的组件、子系统或者模块构成,各个组件、子系统或者模块的职责不同,数据处理能力也不同。随着分布式系统的结构愈发复杂、拓扑愈发分散,为了对分布式系统进行有效监控或管理,避免由于流量超标无法承载服务而造成的“系统雪崩效应”等,需要对调用链路进行追踪并分析,同时可以根据分析结果对调用链路或者调用进行优化。现有技术中,为了实现对分布式调用链路的追踪,通常是在实现各个组件、子系统或者模块的源代码中加入实现调用链路追踪功能的代码,即对各个组件、子系统或者模块进行源代码级改造(亦可称为对原分布式系统的侵入),即在业务处理逻辑中耦合进调用链路追踪的处理逻辑,其一方面增加了源代码进行改造升级代价以及后续的系统维护代价,另一方面,由于现有的调用链路追踪方案需要侵入原分布式系统中,影响了原分布式系统业务处理的健壮性和可靠性。
技术实现思路
本专利技术实施例提供一种分布式系统中的调用请求处理方法及装置,用以追踪分布式系统中所执行调用的调用链路,减少分布式系统维护代价,并提高分布式系统的健壮性和可靠性。本专利技术实施例提供一种分布式系统中的调用请求处理方法,包括:拦截请求方发起的调用请求;获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。本专利技术实施例提供一种分布式系统中的调用请求处理装置,包括:拦截单元,用于拦截请求方发起的调用请求;获取单元,用于获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;处理单元,用于按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。本专利技术实施例提供的分布式系统中的调用请求处理方法及装置,在将请求方发起的调用请求发送给接收方之前拦截该调用,获取其中的链路追踪信息,并按次序修改链路追踪信息的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业务逻辑处理,修改后的链路追踪信息供接收方在发起下次调用时使用,接收方作为下次调用的请求方,发起调用请求时,该调用请求同样被拦截,获取其中的链路追踪信息,并按次序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业务逻辑处理等,依次类推,直至整个调用链路结束,根据链路追踪信息中的序列标识,能够追踪到整条调用链路。另一方面,由于上述过程中,无需对已有的业务处理逻辑进行修改即可追踪到整条调用链路,从而能够减少分布式系统维护代价,提高了分布式系统的健壮性和可靠性。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本专利技术的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例中,调用请求处理方法的实施流程示意图;图2为本专利技术实施例中,进行流量控制的实施流程示意图;图3为本专利技术实施例中,调用请求处理装置的结构示意图。具体实施方式为了提高分布式系统的可靠性和健壮性,同时降低分布式系统维护代价的基础上实现追踪分布式系统中的调用链路,本专利技术实施例提供了一种分布式系统中的调用请求处理方法及装置。以下结合说明书附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术,并且在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。实施例一如图1所示,为本专利技术实施例提供的分布式系统中的调用请求处理方法的实施流程示意图,包括以下步骤:S11、拦截请求方发起的调用请求。S12、获取拦截到的调用请求中的链路追踪信息。链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,其中,序列标识用于表示一次调用在整个调用链路中的次序。在拦截到请求方发起的调用请求之后,首先获取调用请求中的链路追踪信息。需要说明的是,业务处理请求在到达分布式系统中后,首次发起的调用请求中并不包含链路追踪信息,因此,本专利技术实施例中,如果拦截的调用请求中不存在链路追踪信息时,则为拦截到的调用请求创建信的链路追踪信息并初始化,并将创建的链路追踪信息作为本次调用的链路追踪信息存储在拦截到的调用请求中。具体的,链路追踪信息初始化包括对调用链路标识和系列标识的初始化,其中,调用链路标识为全局唯一,较佳的,其可以由时间戳(UnixTimestamp)+机器标识(MachineId)或网卡地址标识(MACId)+随机数,序列标识在初始化时可以被置为1。并将创建的链路追踪信息存储到本次调用请求中。根据调用类型的不同,获取拦截到的调用请求中的链路追踪信息可以包括以下两种实施方式:实施方式一、不跨线程或者跨线程调用对于不跨线程调用,则直接从执行本次调用的当前线程中获取链路追踪信息。对于跨线程调用,如果子线程由当前父线程创建,由于子线程集成父线程上下文,因此,可以直接从执行本次调用的当前子线程上下文中获取链路追踪信息。如果为新线程,则链路追踪信息被显式绑定到新线程上下文中,因此,可以从执行本次调用的当前新线程上下文中获取链路追踪信息。实施方式二、跨进程调用如果本次调用为跨进程调用,则链路追踪信息与调用请求一起封装到数据包(即序列化)中通过TCP(传输控制协议)或者HTTP(超文本传输协议)发送给接收方,在拦截到发送方发送的调用请求之后,解析发送调用请求的数据包(反序列化)中获取链路数据信息。根据执行调用的物理节点是否隔离,调用类型还可以划分为本地调用和远程调用。其中,远程调用一定是跨进程调用,而本地调用可能是不跨进程调用,也可能是跨进程调用,还可能是跨进程调用。具体可以根据本次调用是否为跨线程调用或者是否为跨进程调用执行,这里不再赘述。S13、按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请本文档来自技高网...
一种分布式系统中的调用请求处理方法及装置

【技术保护点】
一种分布式系统中的调用请求处理方法,其特征在于,包括:拦截请求方发起的调用请求;获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。

【技术特征摘要】
1.一种分布式系统中的调用请求处理方法,其特征在于,包括:拦截请求方发起的调用请求;获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用,以使所述接收方作为下次调用的请求方,发起下次调用的调用请求时,所述下次调用的调用请求同样被拦截,获取所述下次调用的调用请求中的链路追踪信息,并按次序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给所述下次调用的接收方进行业务逻辑处理,依次类推,直至整个调用链路结束,根据链路追踪信息中的序列标识,追踪到整条调用链路。2.如权利要求1所述的方法,其特征在于,所述链路追踪信息中还包括采样标识,所述采样标识用于表示是否需要采样;以及所述方法还包括:若根据所述采样标识确认需要进行采样,则在接收方执行完成更新后的调用请求后,记录本次调用的链路追踪信息和调用追踪信息。3.如权利要求2所述的方法,其特征在于,还包括:将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中之前,根据获取到的链路追踪信息中的调用链路标识和预设的采样策略修改采样标识。4.如权利要求1或2所述的方法,其特征在于,还包括:若拦截到的调用请求中不存在链路追踪信息,则为所述调用请求创建新的链路追踪信息并初始化;将创建的链路追踪信息作为本次调用的链路追踪信息存储在拦截到的调用请求中。5.如权利要求1所述的方法,其特征在于,所述获取拦截到的调用请求中的链路追踪信息,具体包括:如果本次调用为不跨线程调用或者跨线程调用,则从执行本次调用的当前线程的上下文中读取所述链路追踪信息;如果本次调用为跨进程调用,则解析所述调用请求中的链路追踪信息。6.如权利要求2所述的方法,其特征在于,所述调用追踪信息包括:本次调用的执行时长和/或本次调用的执行结果;以及在拦截请求方发起的调用请求之后,还包括:根据本次调用之前指定时长内、各次调用的执行时长或者执行结果确定所述指定时长内的流量控制信息;确定所述流量控制信息满足预置的流量控制触发条件时,按照预设的流量控制策略处理所述调用请求。7.如权利要求6所述的方法,其特征在于,所述流量控制信息至少包括以下任一项:所述指定时长内的调用频率、所述指定时长内的平均执行时长、所述指定时长内的平均调用成功率/失败率;以及所述流量控制触发条件包括:所述指定时长内的调用频率大于等于预设调用频率阈值;或者所述指定时长...

【专利技术属性】
技术研发人员:魏佳
申请(专利权)人:微梦创科网络科技中国有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1