服务调用方法及装置转让专利

申请号 : CN201710469894.2

文献号 : CN107181675B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梁云龙

申请人 : 北京奇艺世纪科技有限公司

摘要 :

本发明提供了一种服务调用方法及装置,服务网关接收服务调用请求并将该服务调用请求发送给相应的服务提供端;以及,由服务网关将服务提供端返回的响应结果返回给服务调用端。其中,服务调用请求中包含唯一标示当前调用链路的调用标识,且该调用标识在整个调用链路中的各个服务提供端间传递。每个服务调用请求和调用结果都需要经过服务网关转发,因此,服务网关能够获取所有服务调用对应的调用信息。因此,从该调用信息中查找该调用标识所对应的服务调用链路。该方法只需要在服务网关上设置埋点进行采样即可,不需要在客户端和服务端都设置埋点,因此,大大降低了服务的客户端和服务端的开发、部署成本。

权利要求 :

1.一种服务调用方法,其特征在于,应用于服务网关中,该方法包括:接收服务调用请求,所述服务调用请求包括服务调用端标识、服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;

根据所述服务名称将所述服务调用请求发送给相应的服务提供端;

接收所述服务提供端返回的调用结果,并将所述调用结果发送给服务调用端;

获取所述服务调用请求对应的调用信息,以使调用分析端分析所述调用信息中的服务调用端标识、服务提供端标识和所述调用标识获得与所述调用标识对应的服务调用链路。

2.根据权利要求1所述的方法,其特征在于,所述调用信息还包括调用时间信息,所述调用时间信息包括调用耗时;获取所述调用耗时的过程包括:记录接收到所述服务调用请求的第一时间戳,以及,记录接收到所述调用请求对应的调用结果的第二时间戳;

计算所述第二时间戳与所述第一时间戳的时间差,得到每个服务的调用耗时。

3.根据权利要求1所述的方法,其特征在于,所述接收服务调用请求包括:接收客户端发送的所述服务调用请求;

或者,

接收第一服务提供端发送的调用第二服务提供端的服务调用请求。

4.一种服务调用方法,其特征在于,应用于服务提供端,该方法包括:第一服务提供端接收服务网关转发的第一调用请求,所述第一调用请求包括第一服务调用端标识、第一服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;

所述第一服务提供端解析所述第一调用请求得到所述第一调用请求所需调用的第二服务名称,以及所述调用标识;

所述第一服务提供端根据所述第二服务名称生成第二调用请求,所述第二调用请求包括第二服务调用端标识、第二服务名称和所述调用标识;

所述第一服务提供端将所述第二调用请求发送给所述服务网关,以使所述服务网关将所述第二调用请求转发给第二服务提供端,所述第二服务提供端提供所述第二服务名称对应的服务;以及,使所述服务网关获得调用信息,并由调用分析端根据所述调用信息获得与所述调用标识对应的服务调用链路。

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:所述第一服务提供端通过所述服务网关接收所述第二服务提供端返回的第二调用结果,所述第二调用结果由所述第二服务提供端响应所述第二调用请求得到;

所述第一服务提供端根据所述第二调用结果响应所述第一调用请求,生成第一调用结果,并将所述第一调用结果通过所述服务网关转发给发起所述第一调用请求的第一服务调用端。

6.一种服务调用装置,其特征在于,应用于服务网关中,所述装置包括:第一接收单元,用于接收服务调用请求,所述服务调用请求包括服务调用端标识、服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;

第一发送单元,用于根据所述服务名称将所述服务调用请求发送给相应的服务提供端;

第二接收单元,用于接收所述服务提供端返回的调用结果;

第二发送单元,用于将所述调用结果发送给服务调用端;

获取单元,用于获取所述服务调用请求对应的调用信息,以使调用分析端分析所述调用信息中的服务调用端标识、服务提供端标识和所述调用标识获得与所述调用标识对应的服务调用链路。

7.根据权利要求6所述的装置,其特征在于,所述调用信息还包括调用时间信息,所述调用时间信息包括调用耗时,所述获取单元包括:第一记录子单元,用于记录接收到所述服务调用请求的第一时间戳;

第二记录子单元,用于记录接收到所述调用请求对应的调用结果的第二时间戳;

计算子单元,用于计算所述第二时间戳与所述第一时间戳的时间差,得到每个服务对应的调用耗时。

8.根据权利要求6所述的装置,其特征在于,所述第一接收单元具体用于:接收客户端发送的所述服务调用请求;

或者,

接收第一服务提供端发送的调用第二服务提供端的服务调用请求。

9.一种服务调用装置,其特征在于,应用于服务提供端,该装置包括:第一接收单元,用于使第一服务提供端接收服务网关转发的第一调用请求,所述第一调用请求包括第一服务调用端标识、第一服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;

第一解析单元,用于使所述第一服务提供端解析所述第一调用请求得到所述第一调用请求所需调用的第二服务名称,以及所述调用标识;

请求生成单元,用于使所述第一服务提供端根据所述第二服务名称生成第二调用请求,所述第二调用请求包括第二服务调用端标识、第二服务名称和所述调用标识;

第一发送单元,用于使所述第一服务提供端将所述第二调用请求发送给所述服务网关,以使所述服务网关将所述第二调用请求转发给第二服务提供端,所述第二服务提供端提供所述第二服务名称对应的服务;以及,使所述服务网关获得调用信息,并由调用分析端根据所述调用信息获得与所述调用标识对应的服务调用链路。

10.根据权利要求9所述的装置,其特征在于,还包括:第二接收单元,用于使所述第一服务提供端通过所述服务网关接收所述第二服务提供端返回的第二调用结果,所述第二调用结果由所述第二服务提供端响应所述第二调用请求得到;

响应单元,用于使所述第一服务提供端根据所述第二调用结果响应所述第一调用请求,生成第一调用结果,并将所述第一调用结果通过所述服务网关转发给发起所述第一调用请求的第一服务调用端。

说明书 :

服务调用方法及装置

技术领域

[0001] 本发明属于计算机领域,尤其涉及一种服务调用方法及装置。

背景技术

[0002] 目前,互联网公司的系统通常由大量提供不同功能的子系统采用微服务的架构组成。微服务是指开发多个独立小型、但有完整业务功能的服务,每个服务都有自己的处理和通讯机制,可以部署在单个或多个服务器上。
[0003] 微服务架构中存在大量的微服务,而且,微服务之间存在复杂的调用关系,因此,开发者很难搞清楚整个系统所包含的各个微服务之间的调用关系,而且,当整个调用链出现性能瓶颈时,很难定位出现问题的服务组件。
[0004] 针对上述问题,传统的解决方案是:在每个微服务的客户端和服务端分别进行埋点采样,最后综合所有的采样数据分析得出系统的服务调用链路,但这样的方式会给每个微服务的客户端和服务端带来开发和部署压力,并且不同的微服务提供方难以协调出统一的埋点采样方案。

发明内容

[0005] 有鉴于此,本发明的目的在于提供一种服务调用方法及装置,以解决传统解决方案存在的微服务的客户端和服务端开发和部署难,以及,不同的服务提供方难以统一埋点采样的技术问题。本发明的技术方案如下:
[0006] 第一方面,本申请提供一种服务调用方法,应用于服务网关中,该方法包括:
[0007] 接收服务调用请求,所述服务调用请求包括服务调用端标识、服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;
[0008] 根据所述服务名称将所述服务调用请求发送给相应的服务提供端;
[0009] 接收所述服务提供端返回的调用结果,并将所述调用结果发送给服务调用端;
[0010] 获取所述服务调用请求对应的调用信息,以使调用分析端分析所述调用信息中的服务调用端标识、服务提供端标识和所述调用标识获得与所述调用标识对应的服务调用链路。
[0011] 可选地,所述调用信息还包括调用时间信息,所述调用时间信息包括调用耗时;获取所述调用耗时的过程包括:
[0012] 记录接收到所述服务调用请求的第一时间戳,以及,记录接收到所述调用请求对应的调用结果的第二时间戳;
[0013] 计算所述第二时间戳与所述第一时间戳的时间差,得到每个服务的调用耗时。
[0014] 可选地,所述接收服务调用请求包括:
[0015] 接收客户端发送的所述服务调用请求;
[0016] 或者,
[0017] 接收第一服务提供端发送的调用第二服务提供端的服务调用请求。
[0018] 第二方面,本申请还提供另一种服务调用方法,应用于服务提供端,该方法包括:
[0019] 第一服务提供端接收服务网关转发的第一调用请求,所述第一调用请求包括第一服务调用端标识、第一服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;
[0020] 所述第一服务提供端解析所述第一调用请求得到所述第一调用请求所需调用的第二服务名称,以及所述调用标识;
[0021] 所述第一服务提供端根据所述第二服务名称生成第二调用请求,所述第二调用请求包括第二服务调用端标识、第二服务名称和所述调用标识;
[0022] 所述第一服务提供端将所述第二调用请求发送给所述服务网关,以使所述服务网关将所述第二调用请求转发给第二服务提供端,所述第二服务提供端提供所述第二服务名称对应的服务;以及,使所述服务网关获得调用信息,并由调用分析端根据所述调用信息获得与所述调用标识对应的服务调用链路。
[0023] 可选地,所述方法还包括:
[0024] 所述第一服务提供端通过所述服务网关接收所述第二服务提供端返回的第二调用结果,所述第二调用结果由所述第二服务提供端响应所述第二调用请求得到;
[0025] 所述第一服务提供端根据所述第二调用结果响应所述第一调用请求,生成第一调用结果,并将所述第一调用结果通过所述服务网关转发给发起所述第一调用请求的第一服务调用端。
[0026] 第三方面,本申请提供一种服务调用装置,应用于服务网关中,所述装置包括:
[0027] 第一接收单元,用于接收服务调用请求,所述服务调用请求包括服务调用端标识、服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;
[0028] 第一发送单元,用于根据所述服务名称将所述服务调用请求发送给相应的服务提供端;
[0029] 第二接收单元,用于接收所述服务提供端返回的调用结果;
[0030] 第二发送单元,用于将所述调用结果发送给服务调用端;
[0031] 获取单元,用于获取所述服务调用请求对应的调用信息,以使调用分析端分析所述调用信息中的服务调用端标识、服务提供端标识和所述调用标识获得与所述调用标识对应的服务调用链路。
[0032] 可选地,所述调用信息还包括调用时间信息,所述调用时间信息包括调用耗时,所述获取单元包括:
[0033] 第一记录子单元,用于记录接收到所述服务调用请求的第一时间戳;
[0034] 第二记录子单元,用于记录接收到所述调用请求对应的调用结果的第二时间戳;
[0035] 计算子单元,用于计算所述第二时间戳与所述第一时间戳的时间差,得到每个服务对应的调用耗时。
[0036] 可选地,所述第一接收单元具体用于:
[0037] 接收客户端发送的所述服务调用请求;
[0038] 或者,
[0039] 接收第一服务提供端发送的调用第二服务提供端的服务调用请求。
[0040] 第四方面,本申请提供一种服务调用装置,应用于服务提供端,该装置包括:
[0041] 第一接收单元,用于使第一服务提供端接收服务网关转发的第一调用请求,所述第一调用请求包括第一服务调用端标识、第一服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路;
[0042] 第一解析单元,用于使所述第一服务提供端解析所述第一调用请求得到所述第一调用请求所需调用的第二服务名称,以及所述调用标识;
[0043] 请求生成单元,用于使所述第一服务提供端根据所述第二服务名称生成第二调用请求,所述第二调用请求包括第二服务调用端标识、第二服务名称和所述调用标识;
[0044] 第一发送单元,用于使所述第一服务提供端将所述第二调用请求发送给所述服务网关,以使所述服务网关将所述第二调用请求转发给第二服务提供端,所述第二服务提供端提供所述第二服务名称对应的服务;以及,使所述服务网关获得调用信息,并由调用分析端根据所述调用信息获得与所述调用标识对应的服务调用链路。
[0045] 可选地,所述装置还包括:
[0046] 第二接收单元,用于使所述第一服务提供端通过所述服务网关接收所述第二服务提供端返回的第二调用结果,所述第二调用结果由所述第二服务提供端响应所述第二调用请求得到;
[0047] 响应单元,用于使所述第一服务提供端根据所述第二调用结果响应所述第一调用请求,生成第一调用结果,并将所述第一调用结果通过所述服务网关转发给发起所述第一调用请求的第一服务调用端。
[0048] 本实施例提供的服务调用方法,服务网关接收服务调用请求,服务网关根据服务名称将该服务调用请求发送给相应的服务提供端,服务调用请求中包含唯一标示当前调用链路的调用标识,且该调用标识在整个调用链路中的各个服务提供端间传递;每个服务调用请求和调用结果都需要经过网关进行转发,因此,服务网关能够获取所有服务调用对应的调用信息。调用信息包括服务调用端标识、服务提供端标识、调用标识和调用时间信息,因此,从该调用信息中查找该调用标识所对应的服务调用端标识和服务提供端标识能够获得该调用标识对应的服务调用链路。该方法只需要在服务网关上设置埋点进行采样即可,不需要在客户端和服务端都设置埋点,因此,大大降低了每个服务的客户端和服务端的开发、部署成本。

附图说明

[0049] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050] 图1示出了一种典型的微服务架构的示意图;
[0051] 图2示出了本发明实施例一种服务调用系统的示意图;
[0052] 图3示出了本发明实施例一种服务调用方法的流程图;
[0053] 图4示出了本发明实施例另一种服务调用方法的流程图;
[0054] 图5示出了本申请实施例一种服务调用装置的框图;
[0055] 图6示出了本申请实施例一种获取单元的框图;
[0056] 图7示出了本申请实施例另一种服务调用装置的框图。

具体实施方式

[0057] 在详细介绍本发明的技术方案之前,首先介绍下微服务构架:
[0058] 微服务是指开发多个独立小型但有完整业务功能的服务,每个服务都有自己的处理和通讯机制,可以部署在单个或多个服务器上。微服务架构的思想和理念如下:把系统解耦成更小的单元;每个单元都有自己的职责;每个单元通过应用程序编程接口(Application Programming Interface,API)暴露,外界不需要关心它的具体实现;所有的单元都是独立的,可以独立的进行开发、部署、扩展以及监控;各个单元之间可以通过远程过程调用协议(Remote Procedure Call Protocol,RPC)请示进行交互。
[0059] 在微服务架构中客户端与服务端需要服务网关装置进行交互,服务网关作为系统的入口,它会负责服务请求路由、组合及协议转换等。另外,还需要对接入客户端的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或计费。
[0060] 如图1所示,示出了一种典型的微服务架构,该微服务系统包括六个微服务分别是:A、B、C、D、E和F。例如,该微服务系统中包含3个微服务路由:新用户注册由微服务A,B,C和E实现,其中,微服务之间的调用关系是A调用B,B调用C,C调用E;下订单由微服务A,B,C和D实现;支付由微服务A,B,C,D和F实现。
[0061] 在微服务架构中,微服务之间存在着复杂的调用关系,导致系统的开发者都很难搞清楚整个微服务系统中微服务之间的调用关系,当整个调用链路出现性能瓶颈时,很难定位出问题出在哪个节点上。本申请提供的服务调用方法,在服务网关中设置埋点采样,服务网关负责服务请求路由,每一次服务调用都需要经过服务网关,因此,服务网关能够采样到每个服务调用的调用信息,例如,调用关系、调用耗时等。然后,分析服务网关采集到的调用信息。
[0062] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0063] 请参见图2,示出了本发明实施例一种服务调用系统的示意图,如图2所示,该系统包括服务调用端1、服务网关2、服务提供端3、日志收集器4和调用分析端5。
[0064] 服务调用端1,用于向服务网关发送服务调用请求,并且每次服务调用请求中都包含用于唯一标示当前调用链路的调用标识。
[0065] 服务网关2,用于将服务调用路由到正确的服务提供端,并记录本次调用的调用信息,其中,调用信息包括调用标识、服务调用端标识、服务提供端标识。
[0066] 服务提供端3,用于接收并处理第一服务调用请求,如果服务提供端需要再次发起服务调用,则产生第二服务调用请求,且该第二服务调用请求中携带第一服务调用请求中所包含的调用标识,调用标识依次传递下去,直到本次调用的最后一个服务提供端。
[0067] 日志收集器4,用于收集服务网关采样得到的调用信息,并将调用信息发送给调用分析端5。
[0068] 在本发明的一种可能的实现方式中,日志收集器4可以部署在服务网关所在的设备中;
[0069] 在本发明的另一种可能的实现方式中,日志收集器4可以部署在除服务网关之外的设备中,此种应用场景中,日志收集器4需要知道服务网关的地址,并从服务网关中获得调用信息。
[0070] 调用分析端5,分析日志收集器收集到的调用信息,确定包含同一调用标识的所有调用请求属于同一调用链路,根据各个不同的调用链路得到该服务系统的服务拓扑。以及,获得各个调用请求对应调用耗时,根据调用耗时确定服务系统的性能瓶颈。其中,调用耗时是指从发起服务调用到得到所述服务的响应所需的时间。
[0071] 请参见图3,示出了本发明实施例一种服务调用方法的流程图,该方法应用于服务网关中,如图3所示,该方法可以包括:
[0072] S110,服务网关接收服务调用请求。
[0073] 服务网关接收服务调用端发送的服务调用请求,该服务调用请求包括服务调用端标识、服务名称和调用标识,该调用标识用于唯一标示服务调用请求所对应的调用链路。
[0074] 服务调用端是发起该服务调用请求的一方,服务调用端标识可以是能够唯一标识该服务调用端的标识信息,例如,媒体访问控制(Medium Access Control,MAC)地址。
[0075] 在本发明一种可能的实现方式中,服务调用端可以是客户端,即,客户端向服务网关发起服务调用请求的应用场景;
[0076] 在本发明另一种可能的实现方式中,服务调用端可以是服务提供端,即,该服务提供端实现某个服务时,需要调用其它的服务,因此,需要向其它的服务提供端发送服务调用请求。
[0077] 延用图1所示微服务构架的实例,当客户端发起新用户注册请求时,由客户端向服务网关发送“新用户注册”的服务调用请求,此种应用场景下,服务调用者(即,发送服务调用请求的一方)就是客户端;例如,新用户注册服务由A-B-C-E四个微服务实现,微服务A调用微服务B时,服务调用端就是微服务A的服务提供者。
[0078] 调用标识用于唯一标示当前调用链路的标识,该调用标识由发起该服务调用的客户端产生,在实现该服务的服务调用链路中被不间断地传递下去。
[0079] S120,服务网关根据服务名称将服务调用请求发送给相应的服务提供端。
[0080] 服务网关根据服务调用请求中包含的服务名称,找到提供该服务名称对应服务的服务提供端,并将该服务调用请求发送给该服务提供端。
[0081] S130,服务网关接收服务提供端返回的调用结果,并将调用结果发送给服务调用端。
[0082] 服务提供端接收到服务调用请求后,如果不需要再调用其它服务,则响应该服务调用请求生成调用结果,并将调用结果返回给服务网关,服务网关再将接收到的调用结果返回给服务调用端。
[0083] S140,服务网关获取所述服务调用请求对应的调用信息,以使调用分析端根据所述调用信息获得与所述调用标识对应的服务调用链路,所述调用信息包括所述服务调用端标识、服务提供端标识、所述调用标识和调用时间信息。
[0084] 服务网关内设置埋点对整个服务调用过程进行采样,得到调用信息,该调用信息包括服务调用端标识、服务提供端标识、调用标识和调用时间信息。
[0085] 调用分析端分析服务网关获得的调用信息得到与该调用标识对应的调用数据,并最终得到本次服务调用的整个服务调用链路。
[0086] 可选地,根据调用信息所包含的调用时间信息能够获得当前调用的调用耗时,获取所述调用耗时的过程包括:
[0087] 服务网关记录接收到调用请求的第一时间戳,以及,记录接收到该调用请求对应的调用结果的第二时间戳,计算第二时间戳与所述第一时间戳的时间差,得到每个服务调用的调用耗时。
[0088] 根据当前调用链路中各个调用所对应的调用耗时,计算得到整个调用链路的调用耗时,根据调用耗时能够分析得到服务系统的性能瓶颈。
[0089] 本实施例提供的服务跟踪方法,服务网关接收服务调用请求,服务网关根据服务名称将该服务调用请求发送给相应的服务提供端,服务调用请求中包含唯一标示当前调用链路的调用标识,且该调用标识在整个调用链路中的各个服务提供端间传递;每个服务调用请求和调用结果都需要经过网关进行转发,因此,服务网关能够获取所有服务调用对应的调用信息。调用信息包括服务调用端标识、服务提供端标识、调用标识和调用时间信息,因此,从该调用信息中查找该调用标识所对应的服务调用端标识和服务提供端标识能够获得该调用标识对应的服务调用链路。由上述内容可知,该方法由服务网关采样获得调用信息,最终实现调用链路追踪,这样,只需要在服务网关上设置埋点进行采样即可,不需要在客户端和服务端都设置埋点,因此,大大降低了每个服务的客户端和服务端的开发、部署成本。
[0090] 请参见图4,示出了本发明实施例另一种服务调用方法的流程图,该方法应用于图2所示的系统中,如图4所示,该方法包括以下步骤:
[0091] S210,客户端向服务网关发送第一服务调用请求。
[0092] 该第一服务调用请求中包含客户端标识、第一服务名称信息、调用标识,其中,调用标识用于唯一标示当前调用链路。
[0093] S220,服务网关根据服务名称信息确定相应的第一服务提供端,并将该第一服务调用请求转发给第一服务提供端,以及,记录第一服务调用请求的调用相关信息。
[0094] 在本申请的一个实施例中,所述调用相关信息可以包括:服务调用端标识、服务提供端标识、调用标识和调用时间信息,例如,调用请求接收时间及相应的调用结果接收时间。
[0095] S230,第一服务提供端接收第一服务调用请求,并确定是否需要调用其它服务;如果是,则执行S240~S280;如果否,则执行S290。
[0096] 第一服务提供端接收到第一服务调用请求后,解析该第一服务调用请求,并确定响应该第一服务调用请求是否需要再调用其它服务。
[0097] 如果不需要调用其它服务,则直接响应该第一服务调用请求;如果需要调用其它服务,则继续调用其它服务。
[0098] S240,第一服务提供端生成第二服务调用请求并发送给服务网关。
[0099] 该第二服务调用请求携带第一服务调用请求所包含的调用标识,以及,包括第一服务提供端的信息和第二服务名称信息。
[0100] 如果第一服务提供端响应第一服务调用请求时,需要调用其它服务,则生成调用所述其它服务的第二服务调用请求,生成第二服务调用请求时,将第一服务调用请求所包含的调用标识写入第二服务调用请求中。即,调用标识在服务调用链路中一直传递下去。
[0101] S250,服务网关接收第二服务调用请求,并确定与第二服务名称信息相对应的第二服务提供端,并将第二服务调用请求发送给第二服务提供端,以及记录第二服务调用请求的调用相关信息。
[0102] S260,第二服务提供端响应第二服务调用请求,得到第二调用结果,并将第二调用结果发送给服务网关。
[0103] S270,服务网关将第二调用结果返回给第一服务提供端,并记录第二调用结果的调用相关信息。
[0104] S280,第一服务提供端根据第二调用结果得到第一调用结果,并将第一调用结果发送给服务网关。
[0105] 执行完S240~S280之后,依次执行S2100~S2120。
[0106] S290,第一服务提供端响应第一服务调用请求,生成第一调用结果并发送给服务网关。
[0107] 执行完S290之后,依次执行S2100~S2120;
[0108] S2100,服务网关将第一调用结果返回给客户端,并记录第一调用结果的调用相关信息。
[0109] S2110,日志收集器从服务网关中收集记录的调用相关信息。
[0110] S2120,调用分析端分析日志收集器中的数据,获得与调用标识对应的服务调用链路。
[0111] 调用分析端处理日志收集器中的数据,得到包含同一个调用标识调用请求,并根据服务调用端标识和服务提供端标识确定调用关系,从而得到该调用标识对应的服务调用链路。利用该方法可以得到各个不同的服务调用链路,从而获得整个微服务结构的服务拓扑结构。
[0112] 在获得调用关系的同时,调用分析端根据日志收集器收集到的调用时间信息,确定各个服务之间的调用耗时,即服务网关接收某调用请求的时间与接收该调用请求所对应的调用结果的时间之间的差值。
[0113] 利用服务拓扑结构和各个服务间的调用耗时,能够分析出整个微服务架构中的性能瓶颈。
[0114] 调用分析端可以基于文本检索系统实现,通过输入筛选条件所要查看的调用链路详情,例如,可以输入时间段来筛选所要查看的调用发生的时间段,从日志收集器的日志数据中检索出所有该时间段内的服务调用的相关信息,例如,服务调用端标识、服务提供端标识和调用延迟等。
[0115] 本实施例提供的服务调用方法,在服务网关中设置埋点对微服务架构中的每一次调用都进行采样记录,其中,服务调用请求中包含当前调用链路的调用标识,且该调用标识在整个调用链路中一直传递。日志收集器可以收集服务网关所采集的调用相关信息并提供给调用分析端,由调用分析端分析这些调用相关信息查找该调用标识所对应的服务调用端标识和服务提供端标识能够获得该调用标识对应的服务调用链路。该方法由服务网关采样获得调用信息,最终实现调用链路追踪,这样,只需要在服务网关上设置埋点进行采样即可,不需要在客户端和服务端都设置埋点,因此,大大降低了每个服务的客户端和服务端的开发、部署成本。
[0116] 对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0117] 相应于上述的服务调用方法实施例,本申请还提供了服务调用装置实施例。
[0118] 请参见图5,示出了本申请实施例一种服务调用装置的框图,该装置应用于服务网关中。该装置包括:第一接收单元110、第一发送单元120、第二接收单元130、第二发送单元140和获取单元150;
[0119] 第一接收单元110,用于接收服务调用请求,所述服务调用请求包括服务调用端标识、服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路。
[0120] 服务调用端是发起该服务调用请求的一方,服务调用端标识可以是能够唯一标识该服务调用端的标识信息,例如,MAC地址。
[0121] 在本发明一种可能的实现方式中,服务调用端可以是客户端,即,客户端向服务网关发起服务调用请求的应用场景;
[0122] 在本发明另一种可能的实现方式中,服务调用端可以是服务提供端,即,该服务提供端实现某个服务时,需要调用其它的服务,因此,需要向其它的服务提供端发送服务调用请求。
[0123] 第一发送单元120,用于根据所述服务名称将所述服务调用请求发送给相应的服务提供端。
[0124] 服务网关根据服务调用请求中包含的服务名称,找到提供该服务名称对应服务的服务提供端,并经由第一发送单元将该服务调用请求发送给该服务提供端。
[0125] 第二接收单元130,用于接收所述服务提供端返回的调用结果。
[0126] 服务提供端接收到服务调用请求后,如果不需要再调用其它服务,则响应该服务调用请求生成调用结果,并将调用结果返回给服务网关,服务网关经由第二接收单元接收该调用结果。
[0127] 第二发送单元140,用于将所述调用结果发送给服务调用端。
[0128] 获取单元150,用于获取所述服务调用请求对应的调用信息,以使调用分析端分析所述调用信息获得与所述调用标识对应的服务调用链路。
[0129] 服务网关内设置埋点对整个服务调用过程进行采样,得到调用信息,该调用信息包括服务调用端标识、服务提供端标识、调用标识和调用时间信息。
[0130] 分析服务网关获得的调用信息得到与该调用标识对应的调用数据,并最终得到本次服务调用的整个服务调用链路。
[0131] 可选地,还可以根据调用耗时确定服务系统的性能瓶颈,其中,调用耗时是指从发起服务调用到得到所述服务响应所经历的时间。
[0132] 如图6所示,获取单元150包括第一记录子单元151、第二记录子单元152和计算子单元153。
[0133] 第一记录子单元151,用于记录接收到所述服务调用请求的第一时间戳。
[0134] 第二记录子单元152,用于记录接收到所述调用请求对应的调用结果的第二时间戳。
[0135] 计算子单元153,用于计算所述第二时间戳与所述第一时间戳的时间差,得到每个服务对应的调用耗时。
[0136] 本实施例提供的服务调用装置,服务网关接收服务调用请求,服务网关根据服务名称将该服务调用请求发送给相应的服务提供端,服务调用请求中包含唯一标示当前调用链路的调用标识,且该调用标识在整个调用链路中的各个服务提供端间传递;每个服务调用请求和调用结果都需要经过网关进行转发,因此,服务网关能够获取所有服务调用对应的调用信息。调用信息包括服务调用端标识、服务提供端标识、调用标识和调用时间信息,因此,从该调用信息中查找该调用标识所对应的服务调用端标识和服务提供端标识能够获得该调用标识对应的服务调用链路。该装置只需要在服务网关上设置埋点进行采样即可,不需要在客户端和服务端都设置埋点,因此,大大降低了每个服务的客户端和服务端的开发、部署成本。
[0137] 请参见图7,示出了本申请实施例另一种服务调用装置的框图,该装置应用于服务提供端中,如图7所示,该装置可以包括:第一接收单元210、第一解析单元220、请求生成单元230、第一发送单元240、第二接收单元250和响应单元260。
[0138] 第一接收单元210,用于使第一服务提供端接收服务网关转发的第一调用请求。
[0139] 所述第一调用请求包括第一服务调用端标识、第一服务名称和调用标识,所述调用标识用于唯一标示所述服务调用请求所对应的服务调用链路。
[0140] 第一解析单元220,用于使所述第一服务提供端解析所述第一调用请求得到所述第一调用请求所需调用的第二服务名称,以及所述调用标识。
[0141] 第一服务提供端接收到第一服务调用请求后,解析该第一服务调用请求,并确定响应该第一服务调用请求需要调用的第二服务名称。
[0142] 请求生成单元230,用于使所述第一服务提供端根据所述第二服务名称生成第二调用请求,所述第二调用请求包括第二服务调用端标识、第二服务名称和所述调用标识。
[0143] 第一服务调用端生成的第二调用请求所包含的调用标识与第一调用请求中的调用标识相同。
[0144] 第一发送单元240,用于使所述第一服务提供端将所述第二调用请求发送给所述服务网关;
[0145] 所述服务网关将第二调用请求转发给第二服务提供端,所述第二服务提供端提供第二服务名称对应的服务;以及,使所述服务网关获得调用信息,并由调用分析端根据所述调用信息获得与所述调用标识对应的服务调用链路。
[0146] 第二接收单元250,用于使所述第一服务提供端通过所述服务网关接收所述第二服务提供端返回的第二调用结果,所述第二调用结果由所述第二服务提供端响应所述第二调用请求得到。
[0147] 响应单元260,用于使所述第一服务提供端根据所述第二调用结果响应所述第一调用请求,生成第一调用结果,并将所述第一调用结果通过所述服务网关转发给发起所述第一调用请求的第一服务调用端。
[0148] 调用分析端处理日志收集器中的数据,得到包含同一个调用标识的调用请求,并根据每条调用请求中包含的服务调用端标识和服务提供端标识确定调用关系,从而得到该调用标识对应的服务调用链路。利用该方法可以得到各个不同的服务调用链路,从而获得整个微服务结构的服务拓扑结构。
[0149] 在获得调用关系的同时,调用分析端根据日志收集器收集到的调用时间信息,确定各个服务之间的调用耗时,即服务网关接收某调用请求的时间与接收该调用请求所对应的调用结果的时间之间的差值。
[0150] 利用服务拓扑结构和各个服务间的调用耗时,能够分析出整个微服务架构中的性能瓶颈。
[0151] 调用分析端可以基于文本检索系统实现,通过输入筛选条件所要查看的调用链路详情,例如,可以输入时间段来筛选所要查看的调用发生的时间段,从日志收集器的日志数据中检索出所有该时间段内的服务调用的相关信息,例如,服务调用端标识、服务提供端标识和调用延迟等。
[0152] 本实施例提供的服务调用装置,在服务网关中设置埋点对微服务架构中的每一次调用都进行采样记录,其中,服务调用请求中包含当前调用链路的调用标识,且该调用标识在整个调用链路中一直传递。因此,从服务网关调用信息中查找该调用标识所对应的服务调用端标识和服务提供端标识能够获得该调用标识对应的服务调用链路。该装置只需要在服务网关上设置埋点进行采样即可,不需要在客户端和服务端都设置埋点,因此,大大降低了每个服务的客户端和服务端的开发、部署成本。
[0153] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0154] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0155] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
[0156] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。