本发明涉及通信,尤其是指一种微服务链路追踪的处理方法、协调设备及服务网关。
背景技术:
1、在微服务场景下,一个传统的应用将会由多个微服务组成,微服务之间相互调用。当应用出现问题的时候,很难从错综复杂的微服务调用网络中找到问题的根源。
2、链路追踪就是为了解决这个问题,通过记录服务间调用的层次关系、调用顺序和时间戳等信息,把多个服务串起来。具体来说包含有以下几点:
3、1.traceid:标识本次请求调用的所有服务,在微服务调用开始时由消费端产生并插入到请求消息中。
4、2.spanid:标识被调用服务的先后顺序。
5、3.parentid:标识调用的层级关系。
6、4.timestamp:标识发起/接收调用时的时间戳和返回/接收调用时的时间戳。常用的有以下几种时间戳:
7、a)client sent(简称cs),指客户端发起调用请求到服务端。
8、b)server received(简称sr),指服务端接收到了客户端的调用请求。
9、c)server sent(简称ss),指服务端完成了处理,准备将信息返给客户端。
10、d)client received(简称cr),指客户端接收到了服务端的返回信息。
11、上述链路追踪方案在微服务组(或微服务集群,指在同一个网关(或入口)后的微服务的组合)的网关处分配并向请求消息中插入traceid,用以标识服务链路的唯一性。但是现有链路追踪方案,在有多个微服务组的情况下,会出现traceid不唯一的问题。例如,可能的场景如下:
12、1、微服务组之间存在微服务调用,每个微服务组的网关会检查请求消息中是否含有traceid。如果没有则分配一个traceid并插入请求消息中,如果有则不再分配新的traceid。每个入口独立分配traceid,可能会造成整个系统中traceid的不唯一现象。
13、2、微服务组之间不存在微服务调用,则每个微服务组入口独立分配traceid,可能会造成整个系统中traceid的不唯一现象。
技术实现思路
1、本发明实施例的目的在于提供一种微服务链路追踪的处理方法、协调设备及服务网关,以解决现有技术中包括多个微服务组的微服务系统中出现traceid不唯一的问题。
2、为了解决上述问题,本发明实施例提供一种微服务链路追踪的处理方法,由协调设备执行,包括:
3、接收服务网关发送的第一请求消息,所述第一请求消息用于请求所述协调设备分配跟踪id;
4、根据所述第一请求消息,从可分配的跟踪id中为所述服务网关分配跟踪id,以使微服务系统中各个服务请求的跟踪id具有唯一性。
5、其中,所述接收服务网关发送的第一请求消息,包括:
6、接收所述服务网关上线或预分配的跟踪id分配完的情况下发送的所述第一请求消息。
7、其中,根据所述第一请求消息,从可分配的跟踪id中为所述服务网关分配跟踪id,包括:
8、根据所述可分配的跟踪id以及预配置分配算法,选择目标数量的跟踪id返回至所述服务网关。
9、其中,所述接收服务网关发送的第一请求消息,包括:
10、接收所述服务网关在接收到的服务请求消息中不包括跟踪id的情况下发送的所述第一请求消息。
11、其中,根据所述第一请求消息,从可分配的跟踪id中为所述服务网关分配跟踪id,包括:
12、根据所述可分配的跟踪id以及预配置分配算法,选择一个跟踪id返回至所述服务网关。
13、其中,所述预配置分配算法包括:
14、按照可分配的跟踪id的存储顺序进行跟踪id分配;
15、或者,
16、从预先分配给各个服务网关的跟踪id范围中按序或随机进行跟踪id分配。
17、本发明实施例还提供一种微服务链路追踪的处理方法,由服务网关执行,包括:
18、向协调设备发送第一请求消息,所述第一请求消息用于请求所述协调设备分配跟踪id;
19、接收所述协调设备分配的跟踪id,其中,所述协调设备分配的跟踪id能够使得微服务系统中各个服务请求的跟踪id具有唯一性。
20、其中,向协调设备发送第一请求消息,包括:
21、在所述服务网关上线或预分配的跟踪id分配完的情况下,向所述协调设备发送所述第一请求消息;
22、或者,
23、在所述服务网关接收到的服务请求消息中不包括跟踪id的情况下,向所述协调设备发送所述第一请求消息。
24、其中,所述方法还包括:
25、判断接收到的服务请求消息中是否包括跟踪id;
26、在接收到的服务请求消息中不包括跟踪id的情况下,从所述协调设备分配的跟踪id中选择一个跟踪id插入所述服务请求消息中并发送给对应的微服务。
27、本发明实施例还提供一种协调设备,包括:
28、第一接收单元,用于接收服务网关发送的第一请求消息,所述第一请求消息用于请求所述协调设备分配跟踪id;
29、处理单元,用于根据所述第一请求消息,从可分配的跟踪id中为所述服务网关分配跟踪id,以使微服务系统中各个服务请求的跟踪id具有唯一性。
30、本发明实施例还提供一种协调设备,包括处理器和收发器,所述收发器在处理器的控制下接收和发送数据,所述处理器用于执行以下操作:
31、接收服务网关发送的第一请求消息,所述第一请求消息用于请求所述协调设备分配跟踪id;
32、根据所述第一请求消息,从可分配的跟踪id中为所述服务网关分配跟踪id,以使微服务系统中各个服务请求的跟踪id具有唯一性。
33、其中,所述处理器还用于执行以下操作:
34、接收所述服务网关上线或预分配的跟踪id分配完的情况下发送的所述第一请求消息。
35、其中,所述处理器还用于执行以下操作:
36、根据所述可分配的跟踪id以及预配置分配算法,选择目标数量的跟踪id返回至所述服务网关。
37、其中,所述处理器还用于执行以下操作:
38、接收所述服务网关在接收到的服务请求消息中不包括跟踪id的情况下发送的所述第一请求消息。
39、其中,所述处理器还用于执行以下操作:
40、根据所述可分配的跟踪id以及预配置分配算法,选择一个跟踪id返回至所述服务网关。
41、其中,所述预配置分配算法包括:
42、按照可分配的跟踪id的存储顺序进行跟踪id分配;
43、或者,
44、从预先分配给各个服务网关的跟踪id范围中按序或随机进行跟踪id分配。
45、本发明实施例还提供一种服务网关,包括:
46、第一发送单元,向协调设备发送第一请求消息,所述第一请求消息用于请求所述协调设备分配跟踪id;
47、第二接收单元,用于接收所述协调设备分配的跟踪id,其中,所述协调设备分配的跟踪id能够使得微服务系统中各个服务请求的跟踪id具有唯一性。
48、本发明实施例还提供一种服务网关,包括处理器和收发器,所述收发器在处理器的控制下接收和发送数据,所述处理器用于执行以下操作:
49、向协调设备发送第一请求消息,所述第一请求消息用于请求所述协调设备分配跟踪id;
50、接收所述协调设备分配的跟踪id,其中,所述协调设备分配的跟踪id能够使得微服务系统中各个服务请求的跟踪id具有唯一性。
51、其中,所述处理器还用于执行以下操作:
52、在所述服务网关上线或预分配的跟踪id分配完的情况下,向所述协调设备发送所述第一请求消息;
53、或者,
54、在所述服务网关接收到的服务请求消息中不包括跟踪id的情况下,向所述协调设备发送所述第一请求消息。
55、其中,所述处理器还用于执行以下操作:
56、判断接收到的服务请求消息中是否包括跟踪id;
57、在接收到的服务请求消息中不包括跟踪id的情况下,从所述协调设备分配的跟踪id中选择一个跟踪id插入所述服务请求消息中并发送给对应的微服务。
58、本发明实施例还提供一种通信设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如上所述的微服务链路追踪的处理方法。
59、本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的微服务链路追踪的处理方法中的步骤。
60、本发明的上述技术方案至少具有如下有益效果:
61、本发明实施例的微服务链路追踪的处理方法、协调设备及服务网关中,在包括多微服务组的微服务系统中,通过引入协调设备,负责协调多个微服务组的入口服务网关间的跟踪id分配,保证微服务系统中跟踪id的唯一性。