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

文档序号:7814099阅读:543来源:国知局
一种分布式系统中的调用请求处理方法及装置制造方法
【专利摘要】本发明公开了一种分布式系统中的调用请求处理方法及装置,用以实现分布式调用链路的追踪,减少分布式系统维护代价,并提高分布式系统的健壮性和可靠性。所述方法,包括:拦截请求方发起的调用请求;获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在整个调用链路中的次序;按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。
【专利说明】一种分布式系统中的调用请求处理方法及装置

【技术领域】
[0001] 本发明涉及分布式系统、数据处理【技术领域】,尤其涉及一种分布式系统中的调用 请求处理方法及装置。

【背景技术】
[0002] 分布式系统是近年来解决海量计算、数据处理的通用系统架构范式,解决了以往 集中式系统的缺点,同时也由于其"去中心化"的特点具有很好的扩展性、容错性和健壮性。
[0003] 分布式系统中,每一业务处理请求可以被划分为若干个子任务进行处理,各子任 务在分布式系统中被处理的过程可以称为分布式调用,一个请求的调用链路就是由处理各 子任务的调用组成。
[0004] 典型的分布式系统通常由不同功能的组件、子系统或者模块构成,各个组件、子系 统或者模块的职责不同,数据处理能力也不同。随着分布式系统的结构愈发复杂、拓扑愈发 分散,为了对分布式系统进行有效监控或管理,避免由于流量超标无法承载服务而造成的 "系统雪崩效应"等,需要对调用链路进行追踪并分析,同时可以根据分析结果对调用链路 或者调用进行优化。
[0005] 现有技术中,为了实现对分布式调用链路的追踪,通常是在实现各个组件、子系统 或者模块的源代码中加入实现调用链路追踪功能的代码,即对各个组件、子系统或者模块 进行源代码级改造(亦可称为对原分布式系统的侵入),即在业务处理逻辑中耦合进调用 链路追踪的处理逻辑,其一方面增加了源代码进行改造升级代价以及后续的系统维护代 价,另一方面,由于现有的调用链路追踪方案需要侵入原分布式系统中,影响了原分布式系 统业务处理的健壮性和可靠性。


【发明内容】

[0006] 本发明实施例提供一种分布式系统中的调用请求处理方法及装置,用以追踪分布 式系统中所执行调用的调用链路,减少分布式系统维护代价,并提高分布式系统的健壮性 和可靠性。
[0007] 本发明实施例提供一种分布式系统中的调用请求处理方法,包括:
[0008] 拦截请求方发起的调用请求;
[0009] 获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至少包括全局唯一 的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于表示一次调用在 整个调用链路中的次序;
[0010] 按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息作为 本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给接收 方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。
[0011] 本发明实施例提供一种分布式系统中的调用请求处理装置,包括:
[0012] 拦截单元,用于拦截请求方发起的调用请求;
[0013] 获取单元,用于获取拦截到的调用请求中的链路追踪信息,所述链路追踪信息至 少包括全局唯一的调用链路标识和在整个调用链路中唯一的序列标识,所述序列标识用于 表示一次调用在整个调用链路中的次序;
[0014] 处理单元,用于按次序修改获取到的链路追踪信息中的序列标识,将修改后的链 路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用 请求发送给接收方,其中,修改后的链路追踪信息供所述接收方在发起下次调用时使用。
[0015] 本发明实施例提供的分布式系统中的调用请求处理方法及装置,在将请求方发起 的调用请求发送给接收方之前拦截该调用,获取其中的链路追踪信息,并按次序修改链路 追踪信息的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业 务逻辑处理,修改后的链路追踪信息供接收方在发起下次调用时使用,接收方作为下次调 用的请求方,发起调用请求时,该调用请求同样被拦截,获取其中的链路追踪信息,并按次 序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给 接收方进行业务逻辑处理等,依次类推,直至整个调用链路结束,根据链路追踪信息中的序 列标识,能够追踪到整条调用链路。另一方面,由于上述过程中,无需对已有的业务处理逻 辑进行修改即可追踪到整条调用链路,从而能够减少分布式系统维护代价,提高了分布式 系统的健壮性和可靠性。
[0016] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。

【专利附图】

【附图说明】
[0017] 此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018] 图1为本发明实施例中,调用请求处理方法的实施流程示意图;
[0019] 图2为本发明实施例中,进行流量控制的实施流程示意图;
[0020] 图3为本发明实施例中,调用请求处理装置的结构示意图。

【具体实施方式】
[0021] 为了提高分布式系统的可靠性和健壮性,同时降低分布式系统维护代价的基础上 实现追踪分布式系统中的调用链路,本发明实施例提供了一种分布式系统中的调用请求处 理方法及装置。
[0022] 以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的 优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发 明中的实施例及实施例中的特征可以相互组合。
[0023] 实施例一
[0024] 如图1所示,为本发明实施例提供的分布式系统中的调用请求处理方法的实施流 程示意图,包括以下步骤:
[0025] S11、拦截请求方发起的调用请求。
[0026] S12、获取拦截到的调用请求中的链路追踪信息。
[0027] 链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一的序 列标识,其中,序列标识用于表示一次调用在整个调用链路中的次序。
[0028] 在拦截到请求方发起的调用请求之后,首先获取调用请求中的链路追踪信息。需 要说明的是,业务处理请求在到达分布式系统中后,首次发起的调用请求中并不包含链路 追踪信息,因此,本发明实施例中,如果拦截的调用请求中不存在链路追踪信息时,则为拦 截到的调用请求创建信的链路追踪信息并初始化,并将创建的链路追踪信息作为本次调用 的链路追踪信息存储在拦截到的调用请求中。具体的,链路追踪信息初始化包括对调用 链路标识和系列标识的初始化,其中,调用链路标识为全局唯一,较佳的,其可以由时间戳 (Unix Timestamp) +机器标识(Machineld)或网卡地址标识(MACId)+随机数,序列标识在 初始化时可以被置为1。并将创建的链路追踪信息存储到本次调用请求中。
[0029] 根据调用类型的不同,获取拦截到的调用请求中的链路追踪信息可以包括以下两 种实施方式:
[0030] 实施方式一、不跨线程或者跨线程调用
[0031] 对于不跨线程调用,则直接从执行本次调用的当前线程中获取链路追踪信息。
[0032] 对于跨线程调用,如果子线程由当前父线程创建,由于子线程集成父线程上下文, 因此,可以直接从执行本次调用的当前子线程上下文中获取链路追踪信息。如果为新线程, 则链路追踪信息被显式绑定到新线程上下文中,因此,可以从执行本次调用的当前新线程 上下文中获取链路追踪信息。
[0033] 实施方式二、跨进程调用
[0034] 如果本次调用为跨进程调用,则链路追踪信息与调用请求一起封装到数据包(即 序列化)中通过TCP (传输控制协议)或者HTTP (超文本传输协议)发送给接收方,在拦截 到发送方发送的调用请求之后,解析发送调用请求的数据包(反序列化)中获取链路数据 信息。
[0035] 根据执行调用的物理节点是否隔离,调用类型还可以划分为本地调用和远程调 用。其中,远程调用一定是跨进程调用,而本地调用可能是不跨进程调用,也可能是跨进程 调用,还可能是跨进程调用。具体可以根据本次调用是否为跨线程调用或者是否为跨进程 调用执行,这里不再赘述。
[0036] S13、按次序修改获取到的链路追踪信息中的序列标识,将修改后的链路追踪信息 作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后的调用请求发送给 接收方。
[0037] 其中,修改后的链路追踪信息供接收方在发起下次调用时使用。
[0038] 具体实施时,在获取到链路追踪信息之后,按照本次调用在整个调用链路中的次 序修改其中的序列标识,以保证链路追踪信息反映调用链路的序列。较佳的,可以将获取的 序列标识加1,得到本次调用的序列标识。
[0039] 实施例一中,通过在拦截的调用请求中植入包含反映调用链路序列的序列标识, 在业务处理结束后,通过收集业务处理过程中每一次调用对应的序列标识即可构成整个调 用链路。由于上述过程中,无需对原有业务处理逻辑进行修改,从而提高了分布式系统的健 壮性和可靠性,降低了分布式系统维护的代价。
[0040] 实施例二
[0041] 具体实施时,由于分布式系统需要处理的业务量大,如果对每次业务处理过程的 调用链路或者调用均进行处理,需要消耗较多的处理资源。因此,实施例二在实施例一的基 础上,在链路追踪信息中增加了采样标识,在获取到链路追踪信息之后,可以根据其中的采 样标识确定是否需要对本次调用进行采样,如果需要,则在接收方执行完成更新后的调用 请求后,记录本次调用的链路追踪信息和调用追踪信息。其中,调用追踪信息包括本次调用 的执行时长和/或本次调用的执行结果。根据采样标识需要对本次调用进行采样时,在接 收方开始执行本次调用时,启动计时器,在调用完成时,停止计时器,从而获得本次调用的 执行时长。
[0042] 具体实施时,可以采用异步存储方式存储链路追踪信息和调用追踪信息。例如,可 以在分布式系统的存储组件或系统中异步存储本次调用的链路追踪信息和调用追踪信息。 其中,存储组件或系统包括但不限于内存、数据库(DB)、文件系统和缓存等。对于链路追踪 信息,可以在创建或者每次被修改之后均进行存储。
[0043] 在业务处理过程中执行首次调用时,在创建了新的链路追踪信息之后,可以根据 预置的采样算法,判断是否需要对本次调用进行采样,如果需要,更新采样标识为需要采 样,如果不需要,则更新采样标识为不需要采样。
[0044] 后续在对每一调用处理的过程中,将修改后的链路追踪信息作为本次调用的链路 追踪信息存储回拦截到的调用请求中之前,可以按照以下方式对采样标识进行更新:根据 获取到的链路追踪信息中的调用链路标识和预设的采样策略修改采样标识。
[0045] 实施例三
[0046] 为了保证分布式系统中各节点的处理性能,避免由于负荷超载出现瓶颈节点,实 施例三在实施例二的基础上,利用记录的调用追踪信息对分布式系统进行流量控制。
[0047] 其中,调用追踪信息包括本次调用的执行时长和/或本次调用的执行结果。具体 实施时,可以在调用开始执行时启动计时器,在调用执行结束后,停止计时器,以统计本次 调用的执行时长。在本次调用结束后,直接获得本次调用的执行结果,即本次调用执行成功 与否的结果。在获得了本次调用的调用追踪信息之后,将其异步存储到分布式系统中。
[0048] 基于存储系统或组件中存储的调用追踪信息,如图2所示,本发明实施例中,可以 按照以下流程进行流量控制:
[0049] S21、根据本次调用之前指定时长内、各次调用的执行时长或者执行结果确定所述 指定时长内的流量控制信息。
[0050] 具体实施时,流量控制信息至少包括以下任一项:指定时长内的调用频率、指定时 长内的平均执行时长、指定时长内的平均调用成功率/失败率,基于存储的调用追踪信息, 可以按照以下方式确定上述各流量控制信息:确定指定时长内执行调用的总次数与指定时 长的比值为指定时长内的调用频率;确定指定时长内每次调用的执行时长之和与指定时长 内执行调用的总次数的比值为指定时长内的平均执行时长;确定指定时长内调用执行结果 为成功/失败的次数与指定时长内执行调用的总次数的比值为指定时长内的平均调用成 功率/失败率。
[0051] S22、确定流量控制信息满足预置的流量控制触发条件时,按照预设的流量控制策 略处理所述调用请求。
[0052] 具体实施时,预置的流量控制触发条件可以包括:指定时长内的调用频率大于等 于预设调用频率阈值;或者指定时长内的平均执行时长大于等于预设执行时长阈值;或者 指定时长内的平均调用成功率不大于预设成功率阈值;或者指定时长内的平均调用失败率 大于等于预设失败率阈值。
[0053] 需要说明的是,在根据指定时长内的流量控制信息判断是否满足流量控制触发条 件时,可以是满足上述任一条件即确定满足流量控制触发条件,也可以是满足以上至少两 个条件的组合才判断满足流量控制触发条件,具体实施时,可以根据需要灵活设定,本发明 对此不做限定。
[0054] 如果满足流量控制触发条件,即判定需要进行流量控制时,可以按照预设的流量 控制策略处理拦截的调用请求。例如,可以丢弃该调用请求,并向请求方反馈执行失败的执 行结果,也可以将该调用请求分流给其他等同节点进行处理。
[0055] 为了更好的理解本发明实施例,以下以微博系统为例对本发明实施例的实施过程 进行说明。
[0056] 假设微博系统由5层不同功能或作用的组件、子系统或模块构成。自顶向下分别 是:(l)HTTP请求反向代理服务层;(2) Web服务层;(3)业务服务层,这一层会根据功能或 业务类型水平划分成若干部分,比如认证/鉴权服务、用户服务、关系服务、内容服务、微博 服务、计数服务等;(4)异步消息处理层,这一层会根据消息类型水平划分成若干部分,t匕 如用户信息、微博内容、评论、转发、赞等;(5)资源层,这一层会根据资源类型水平划分成 若干部分,比如关系型数据库、缓存、非关系型存储等。
[0057] 每一层都是一个逻辑的池,表示由众多节点组成(可以是物理节点,也可以是逻 辑节点)。假设每一层的节点数均为100 (实际应用中可能远大于这个数量),那么这个分 布式系统的总节点数为100+100+100*6+100*5+100*3,超过1500个节点。
[0058] 本发明实施例中,以用户登录微博,并发布一条微博为例:首先,用户通过移动客 户端或者微博网页点击发布微博,该用户的本次请求到达HTTP反向代理服务器池中的某 一节点(此时在分布式系统中的分布式调用开始)这一层验证用户的本次请求来源是否合 法,比如判断请求的用户标识、来源标识等。
[0059] 根据本发明实施例,首先拦截调用请求,从调用请求中获取链路追踪信息,如果 不存在则创建新的链路追踪信息并绑定到请求上下文中,包括生成本次调用的调用链路 标识、初始化新的序列标识,同时根据采样算法计算本次调用是否需要采样并设置标志位 (假设此次调用需要采样)。然后,将调用请求发送给接收方,在接收方开始执行本次调用 请求(即执行原有业务的处理逻辑)时启动计时器,执行完毕后停止计时器,并获得调用执 行结果(成功或者失败);记录调用追踪信息,包括但不限于本次调用执行时长、调用结果、 调用签名、节点标识等。如果本次调用结果为失败(本例中可能是用户标识不合法,比如是 黑名单用户;或者是来源标识不合法,比如是非认证客户端等)则直接丢弃请求,否则继续 调用,由于到Web服务器是跨进程调用,所以将链路追踪信息序列化后通过HTTP协议与原 请求一起发送到接收方。
[0060] 当请求被路由到Web服务器池中的某一节点(这一层会做包括微博内容合法性校 验、获取该用户的个人信息、获取该用户的关注、粉丝关系等),先拦截请求,从请求中获取 链路追踪信息,由于上一次调用处理时已经绑定了链路追踪信息,所以按照调用次序修改 其中的序列标识,将请求发给接收方开始执行原有业务的处理逻辑,并启动计时器。比如首 先获取用户个人信息,假设获取用户个人信息是本地跨线程调用,父线程将链路追踪信息 传递到子线程的上下文中,子线程开始执行时从上下文中获取链路追踪信息,修改其中的 序列标识,启动计时器,通过缓存或关系型数据库查询用户个人信息,之后停止计时器,并 获得调用执行结果,之后记录相关的调用追踪信息(具体实施与上一步中相同,这里不再 赘述)。在获取用户个人信息的同时,父线程还获取用户的关注、粉丝关系等,具体处理方式 可以参照上述获取用户个人信息的处理流程,这里不再赘述。
[0061] 由于其他跨线程或跨进程的调用过程,均类似上述过程,这里不再赘述。整个请求 处理完毕后,假设收集到的链路追踪信息和调用追踪信息如下:
[0062] 调用链路标识(201408182233441000001),序列标识(1),调用执行结果(成功), 调用执行时长(20),调用签名(a. b. c),节点标识(10. 10. 10. 10);
[0063] 调用链路标识(201408182233441000001),序列标识(2),调用执行结果(成功), 调用执行时长(10),调用签名(d. e. f),节点标识(10. 10. 10. 11);
[0064] 调用链路标识(201408182233441000001),序列标识(2-1),调用执行结果(成 功),调用执行时长耗时,调用签名(g. h. i),节点标识(10. 10. 10. 11);
[0065] 调用链路标识(201408182233441000001),序列标识(2-2),调用执行结果(成 功),调用执行时长(20),调用签名(j. k. 1),节点标识(10. 10. 10. 11);
[0066] 调用链路标识(201408182233441000001),序列标识(3),调用执行结果(成功), 调用执行时长(40),调用签名(m. η. 〇),节点标识(10. 10. 10. 12)。
[0067] 由此,实现了对整个调用链路的追踪。
[0068] 基于同一发明构思,本发明实施例中还提供了一种分布式系统中的调用请求处理 装置,由于上述装置解决问题的原理与分布式系统中的调用请求处理方法相似,因此上述 装置的实施可以参见方法的实施,重复之处不再赘述。
[0069] 如图3所示,为本发明实施例提供的分布式系统中的调用请求处理装置的结构示 意图,包括:
[0070] 拦截单元31,可以用于拦截请求方发起的调用请求。
[0071] 获取单元32,可以用于获取拦截到的调用请求中的链路追踪信息。
[0072] 其中,链路追踪信息至少包括全局唯一的调用链路标识和在整个调用链路中唯一 的序列标识,序列标识用于表示一次调用在整个调用链路中的次序。
[0073] 处理单元33,可以用于按次序修改获取到的链路追踪信息中的序列标识,将修改 后的链路追踪信息作为本次调用的链路追踪信息存储回拦截到的调用请求中,并将更新后 的调用请求发送给接收方。
[0074] 其中,修改后的链路追踪信息供接收方在发起下次调用时使用。
[0075] 具体实施时,链路追踪信息中还包括采样标识,采用标识用于表示是否需要采样。 本发明实施例提供的调用请求处理装置,还可以包括:记录单元,用于若根据采样标识确认 需要进行采样,则在接收方执行完成更新后的调用请求后,记录本次调用的链路追踪信息 和调用追踪?目息。
[0076] 具体实施时,处理单元33,还可以用于将修改后的链路追踪信息作为本次调用的 链路追踪信息存储回拦截到的调用请求中之前,根据获取到的链路追踪信息中的调用链路 标识和预设的采样策略修改采样标识。
[0077] 本发明实施例提供的调用处理装置,还可以包括:
[0078] 创建单元,可以用于用于若拦截单元31拦截的调用请求中不存在链路追踪信息, 为拦截到的调用请求创建新的链路追踪信息并初始化.
[0079] 处理单元33,可以用于将创建的链路追踪信息作为本次调用的链路追踪信息存储 在拦截到的调用请求中。
[0080] 较佳的,获取单元32可以用于如果次调用为不跨线程调用或者跨线程调用,则从 执行本次调用的当前线程的上下文中读取所述链路追踪信息;以及如果本次调用为跨进程 调用,则解析调用请求中的链路追踪信息。
[0081] 较佳的,调用追踪信息包括本次调用的执行时长和/或本次调用的执行结果。本 发明实施例提供的调用请求处理装置,还可以包括:
[0082] 第一确定单元,用于根据本次调用之前指定时长内、各次调用的执行时长或者执 行结果确定所述指定时长内的流量控制信息。
[0083] 第二确定单元,用于确定所述流量控制信息满足预置的流量控制触发条件时,按 照预设的流量控制策略处理所述调用请求。
[0084] 较佳的,流量控制信息至少包括以下任一项:指定时长内的调用频率、指定时长内 的平均执行时长、指定时长内的平均调用成功率/失败率;以及流量控制触发条件包括:所 述指定时长内的调用频率大于等于预设调用频率阈值;或者指定时长内的平均执行时长大 于等于预设执行时长阈值;或者指定时长内的平均调用成功率不大于预设成功率阈值;或 者指定时长内的平均调用失败率大于等于预设失败率阈值。第一确定单元,可以用于确定 指定时长内执行调用的总次数与指定时长的比值为指定时长内的调用频率;确定指定时长 内每次调用的执行时长之和与指定时长内执行调用的总次数的比值为指定时长内的平均 执行时长;确定指定时长内调用执行结果为成功/失败的次数与指定时长内执行调用的总 次数的比值为指定时长内的平均调用成功率/失败率。
[0085] 本发明实施例提供的分布式系统中的调用请求处理方法及装置,在将请求方发起 的调用请求发送给接收方之前拦截该调用,获取其中的链路追踪信息,并按次序修改链路 追踪信息的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给接收方进行业 务逻辑处理,修改后的链路追踪信息供接收方在发起下次调用时使用,接收方作为下次调 用的请求方,发起调用请求时,该调用请求同样被拦截,获取其中的链路追踪信息,并按次 序修改链路追踪信息中的序列标识,并将修改后的链路追踪信息存储回调用请求中发送给 接收方进行业务逻辑处理等,依次类推,直至整个调用链路结束,根据链路追踪信息中的序 列标识,能够追踪到整条调用链路。另一方面,由于上述过程中,无需对已有的业务处理逻 辑进行修改即可追踪到整条调用链路,从而能够减少分布式系统维护代价,提高了分布式 系统的健壮性和可靠性。
[0086] 为了描述的方便,以上的各部分按照功能划分为各模块(或单元)分别描述。当 然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。 [0087] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序 产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质(包括但不限于内存存储器、磁盘存储器、光学存储器等)上实施的计算机程 序产品的形式。
[0088] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一 流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算 机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能 的装置。
[0089] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0090] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的步骤。
[0091] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造 性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优 选实施例以及落入本发明范围的所有变更和修改。
[0092] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
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所述的装置,其特征在于,所述调用追踪信息包括本次调用的执行时 长和/或本次调用的执行结果;以及 所述装置,还包括: 第一确定单元,用于根据本次调用之前指定时长内、各次调用的执行时长或者执行结 果确定所述指定时长内的流量控制信息; 第二确定单元,用于确定所述流量控制信息满足预置的流量控制触发条件时,按照预 设的流量控制策略处理所述调用请求。
【文档编号】H04L29/08GK104219316SQ201410462687
【公开日】2014年12月17日 申请日期:2014年9月12日 优先权日:2014年9月12日
【发明者】魏佳 申请人:微梦创科网络科技(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1