一种追踪日志的方法及电子设备与流程

文档序号:30790613发布日期:2022-07-16 09:54阅读:139来源:国知局
一种追踪日志的方法及电子设备与流程

1.本技术涉及计算机技术领域,尤其涉及一种追踪日志的方法及电子设备。


背景技术:

2.随着计算机网络技术的快速发展,分布式部署应用服务已广泛应用于各个业务处理领域。由于分布式应用服务的存在会导致大量的应用服务日志文件杂乱分布,以致于运维人员后期无法根据应用服务日志快速地排查业务请求处理错误进而影响业务请求处理效率。
3.因此,如何提高运维人员排查业务请求处理错误的效率是当前急需解决的问题。


技术实现要素:

4.本技术提供了一种追踪日志的方法及电子设备,能够提高运维人员排查业务请求处理错误的效率。
5.第一方面,提供了一种追踪日志的方法,包括:第一应用服务器获取业务请求的业务标识,其中,所述业务标识用于标识所述业务请求;所述第一应用服务器将所述业务标识和第一应用服务器名称进行绑定,生成第一标识信息;当所述第一应用服务器发起业务转发请求时,所述第一应用服务器输出包含所述第一标识信息的第一应用服务日志,并且,所述第一应用服务器将所述第一标识信息发送至第二应用服务器,所述第一标识信息用于所述第二应用服务器生成第二应用服务日志,所述第一应用服务日志为所述第一应用服务器处理所述业务请求的过程中生成的应用服务日志,所述第二应用服务日志为所述第二应用服务器处理所述业务请求的关联业务的过程中生成的应用服务日志,所述第二应用服务日志包含所述业务标识。
6.上述第一应用服务器和第二应用服务器用于处理同一业务请求的不同子业务;在不同子业务的处理过程中,第一应用服务器和第二应用服务器均根据包含同一业务标识的第一标识信息输出各自子业务处理过程中记录的应用服务日志,以便于后期运维人员根据同一业务标识快速定位到同一业务请求处理过程中输出的各种应用服务日志。例如,业务请求a的处理过程需要第一应用服务器和第二应用服务器参与,第一应用服务器在处理业务请求a时生成包含第一标识信息(包含业务请求a的业务标识)的第一应用服务日志,第二应用服务器在处理业务请求a时生成包含第二标识信息(包含业务请求a的业务标识)的第二应用服务日志,这样,运维人员就能根据业务请求a的业务标识从多个应用服务器生成的大量应用服务日志中查找到业务请求a的相关应用服务日志,从而提高了运维人员排查业务请求处理错误的效率。
7.可选地,所述第一应用服务器获取业务请求的业务标识之前,还包括:所述第一应用服务器拦截所述业务请求,并确定所述业务请求是否携带所述业务标识;当所述业务请求携带所述业务标识时,所述第一应用服务器从所述业务请求中获取所述业务标识;当所述业务请求未携带所述业务标识时,所述第一应用服务器生成所述业务标识。
8.在本实施例中,第一应用服务器在生成业务标识之前,会先拦截接收的业务请求,并判断该业务请求是否含有业务标识;若不含有,则第一应用服务器才生成业务标识;若含有,则会直接利用业务请求中包含的业务标识而无需再次生成业务标识;由此可见,第一应用服务器只有判断出业务请求自身不含业务标识时,才会为该业务请求生成业务标识,这样可以减小第一应用服务器的处理负担。
9.可选地,所述当所述业务请求未携带所述业务标识时,所述第一应用服务器生成所述业务标识,包括:当所述业务请求未携带所述业务标识时,所述第一应用服务器获取第一应用服务器的ip地址、mac地址和当前时间戳;所述第一应用服务器根据所述第一应用服务器的ip地址、所述mac地址和所述当前时间戳生成所述业务标识。
10.在本实施例中,第一应用服务器根据第一应用服务器的ip地址、mac地址和当前时间戳生成业务标识,能够有效地区分用户发起的不同业务请求。
11.可选地,所述第一应用服务器获取n位随机数,所述n位正整数;所述第一应用服务器根据所述第一应用服务器的ip地址、所述mac地址和所述当前时间戳生成所述业务标识,包括:所述第一应用服务器根据所述第一应用服务器的ip地址、所述mac地址、所述当前时间戳和所述n位随机数生成所述业务标识。
12.在本实施例中,第一应用服务器根据第一应用服务器的ip地址、mac地址、当前时间戳和n位随机数生成业务标识,能够进一步有效地区分出用户发起的不同业务请求。
13.可选地,所述根据所述第一应用服务器的ip地址、所述mac地址、所述当前时间戳和所述n位随机数生成所述业务标识,包括:根据所述第一应用服务器的ip地址、所述mac地址、所述当前时间戳和所述n位随机数生成初始标识;对所述初始标识进行哈希计算,生成所述业务标识。
14.在本实施例中,第一应用服务器对生成的初始标识进行哈希计算,不仅能够降低不同业务请求重复的概率,还能够得到固定长度的业务标识。
15.可选地,所述第一应用服务器删除本地存储的所述第一标识信息。
16.在本实施例中,第一应用服务器处理完业务请求的相关业务后会删除业务处理过程中存储的数据,比如,第一标识信息,以节省第一应用服务器的存储资源。
17.第二方面,提供了一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述电子设备执行第一方面中任一项所述的方法。
18.第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行第一方面中任一项所述的方法。
19.在本技术的第二方面和第三方面的有益效果参见第一方面的有益效果。
附图说明
20.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1为本发明实施例中追踪日志的方法的应用场景示意图;
22.图2为本发明实施例中追踪日志的方法的流程示意图;
23.图3为本发明实施例中追踪日志的方法的流程步骤示意图;
24.图4为本发明实施例中一种服务器的结构示意图。
具体实施方式
25.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
26.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
27.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
28.另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
29.在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。因此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
30.下面结合附图和具体实施例对本技术做进一步详细说明。
31.图1示出了一种追踪日志的方法的应用场景,本应用场景仅用于说明该日志追踪的方法,不能理解为对本方法的限定。随着业务逻辑的复杂化,同一个业务请求需要处理的业务通常可划分为多个子业务,而这些子业务通常不在同一个应用服务器上执行。比如,在图1所示的应用场景中,用户发起的业务请求需要经过两层子业务处理,其中,两层子业务处理中第一子业务处理需要在第一应用服务器中完成,而两层子业务处理中第二子业务处理需要在第二应用服务器中完成。例如,用户向第一应用服务器发起业务请求;第一应用服务器接收到该业务请求后,进行第一子业务处理并输出第一子业务处理过程中生成的第一应用服务日志;此外,第一应用服务器将第一子业务处理的结果封装成数据包;第一应用服务器发起业务转发请求,并将该数据包发送给第二应用服务器;第二应用服务器根据接收到第一应用服务器发送的业务转发请求以及数据包处理第二子业务并输出第二子业务处理过程中生成的第二应用服务日志。当业务请求的处理结果出现问题时,运维人员需要从第一应用服务器和第二应用服务器上查找不同子业务请求对应的应用服务日志(如第一应用服务日志和第二应用服务日志),以便于定位错误位置。
32.图1所示的应用场景为一个简单的示意性场景,随着业务逻辑的复杂化,一个业务请求的处理需要划分为大量子业务处理,而不同的子业务处理需要部署在不同应用服务器
上的应用服务软件进行处理。部署在不同应用服务器上的应用服务软件(即分布式部署应用服务)在处理业务请求时输出的应用服务日志杂乱分散。一旦某个子业务处理过程出现了问题,运维人员无法快速地定位到该业务请求处理过程产生的各种应用服务日志,也就无法快速地排查该业务请求处理过程中出现的错误,从而影响了业务请求的处理效率。
33.下面介绍本技术提供的解决上述问题的方法。
34.图2是本技术提出的一种追踪日志的方法的流程示意图,该方法包括:
35.s201,第一应用服务器获取业务请求的业务标识,其中,业务标识用于标识业务请求。
36.示例性地,上述第一应用服务器是服务器集群中的一个服务器,该第一应用服务器用于接收和处理用户发起的业务请求。上述业务标识用于标识业务请求,以使得不同业务请求之间区分开。该业务标识具有唯一性。比如,业务标识x1为第一应用服务器的ip地址、第一应用服务器的mac地址和当前时间戳构成的一个标识;业务标识x1也可以为第一应用服务器的ip地址和当前时间戳构成的一个标识;业务标识x1还可以为第一应用服务器的ip地址、当前时间戳和多位随机数构成的一个标识;业务标识x1还可以为第一应用服务器的ip地址、当前时间戳和应用服务名称组合成的一个标识;业务标识也可以为第一应用服务器的ip地址、当前时间戳和业务请求名称组合成的一个标识;业务标识还可以为第一应用服务器的ip地址、第一应用服务器的mac地址、当前时间戳、应用服务名称x1和业务请求名称y1组合成的一个标识。总之,本技术对业务标识的构成方式不作任何限定,只要能够用于标识不同业务请求的业务标识均在本技术的保护范围之内。
37.s202,第一应用服务器将业务标识和第一应用服务器名称进行绑定,生成第一标识信息。
38.示例性地,上述第一应用服务器是指部署在服务器集群上的一个节点;该第一应用服务器用于处理用户发送的业务请求;上述第一应用服务器名称是指第一应用服务器的名称。第一应用服务器获取业务请求的业务标识,并将该业务标识与第一应用服务器名称进行绑定并生成第一标识信息,其中,第一标识信息包含业务请求的业务标识。由于第一标识信息包含第一应用服务器名称,因此,该第一标识信息可用于标识用户发送的业务请求经过第一应用服务器的处理。
39.第一应用服务器对用户发送的业务请求进行业务处理,并输出业务处理过程中产生的第一应用服务日志;由于第一应用服务器将业务标识和第一应用服务器名称进行绑定,因此,第一应用服务器在输出第一应用服务日志时会将第一标识信息写入第一应用服务日志中并连同第一应用服务日志输出,其中,该第一应用服务日志包含该业务请求的业务标识。
40.s203,当第一应用服务器发起业务转发请求时,第一应用服务器输出包含第一标识信息的第一应用服务日志,并且,第一应用服务器将第一标识信息发送至第二应用服务器,第一标识信息用于第二应用服务器生成第二应用服务日志,第一应用服务日志为第一应用服务器处理业务请求的过程中生成的应用服务日志,第二应用服务日志为第二应用服务器处理业务请求的关联业务的过程中生成的应用服务日志,第二应用服务日志包含业务标识。
41.示例性地,上述业务请求的关联业务是指一个业务请求需要处理的业务可分为多
个子业务,这多个子业务之间互相关联,并且,这多个子业务在不同的应用服务器上进行处理。比如,第一应用服务器上先处理业务请求中需要处理的第一子业务,第二应用服务器在第一应用服务器处理完第一子业务后再处理业务请求中需要处理的第二子业务,其中,第一子业务和第二子业务属于关联业务。上述业务转发请求包括:不同子业务的转发请求,比如,第一子业务转发请求,第二子业务转发请求等;上述业务转发请求用于请求下一级服务器对当前服务器处理当前子业务的处理结果继续进行下一步处理。由于第一标识信息用于第二应用服务器生成第二应用服务日志,而第一标识信息包含业务请求的业务标识,因此,第二应用服务器生成的第二应用服务日志包含该业务请求的业务标识。
42.例如,第一应用服务器获取用户发起的业务请求x的业务标识为k1,并且,用户发起的业务请求x需要经过两层子业务处理才能完成对该业务请求x的处理,该两层子业务处理包括第一子业务处理和第二子业务处理,其中,第一子业务处理需要在第一应用服务器上完成,第二子业务处理需要在第二应用服务器上完成。处理过程如下:第一应用服务器先处理用户发起的业务请求x中需要处理的第一子业务,并输出第一子业务处理过程中产生的第一应用服务日志;第一应用服务器在输出第一应用服务日志时会将第一标识信息(包含业务请求x的业务标识k1)写入第一应用服务日志中并将包含该第一标识信息的第一应用服务日志输出;当第一应用服务器处理完第一子业务时,会将第一子业务的处理结果发送给第二应用服务器继续进行处理(即进行第二子业务的处理)。在第一应用服务器处理完第一子业务后,第一应用服务器会发起第一子业务转发请求,此时,第一应用服务器会将第一标识信息以及第一应用服务器处理第一子业务生成的处理结果封装成第一业务数据包,并向第二应用服务器发送该第一业务数据包以及第一子业务转发请求。
43.当第二应用服务器接收到第一子业务转发请求和第一业务数据包后,第二应用服务器会先拦截该第一子业务转发请求并判断该第一子业务转发请求是否包含业务标识k1(即业务请求x的业务标识k1);第二应用服务器会根据该第一子业务转发请求是否包含业务标识k1来判断由第一应用服务器发来的第一子业务转发请求是否被其他应用服务器(即第一应用服务器)处理过;当第二应用服务器判断该第一子业务转发请求不包含业务标识k1时,说明第一子业务转发请求未经过第一应用服务器处理,此时,第二应用服务器会采用类似第一应用服务器为业务请求x生成第一标识信息的方式给第一子业务转发请求生成第二标识信息,并继续向下一级服务器传递;第二应用服务器在判断出第一子业务转发请求不含业务标识k1时,处理方式与第一应用服务器类似,此处不再赘述。当第二应用服务器判断该第一子业务转发请求包含业务标识k1时,第二应用服务器根据第一子业务转发请求解析该第一业务数据包,并从该第一业务数据包中解析出第一标识信息;第二应用服务器将第一标识信息(包含业务请求x的业务标识k1)与第二应用服务器名称(即第二应用服务器的名称)进行绑定并生成第二标识信息,其中,第二标识信息包含业务请求x的业务标识k1;第二应用服务器根据第一子业务转发请求和第一业务数据包对第二子业务进行处理;第二应用服务器在对第二子业务进行处理的过程中会生成第二应用服务日志;第二应用服务器在输出第二应用服务日志时会将第二标识信息(包含业务请求x的业务标识k1)写入第二应用服务日志中并将包含第二标识信息的第二应用服务日志输出。
44.当用户发起的业务请求出现问题时,运维人员可以根据第一标识信息和第二标识信息中均存在的同一个业务标识快速定位到第一子业务处理过程输出的第一应用服务日
志以及第二子业务处理过程中输出的第二应用服务日志,并根据第一应用服务日志和第二应用服务日志快速定位到错误所在,从而提高了运维人员排查错误的效率。
45.再比如,第一应用服务器获取用户发起的业务请求y的业务标识为k2,并且,用户发起的业务请求y需要经过三层子业务处理才能完成对该业务请求y的处理,该三层子业务处理包括第一子业务处理、第二子业务处理和第三子业务处理其中,第一子业务处理需要在第一应用服务器上完成,第二子业务处理需要在第二应用服务器上完成,第三子业务处理需要在第三应用服务器上完成。处理过程如下:第一应用服务器处理第一子业务的过程以及第二应用服务器处理第二子业务的过程与前述举例相同,在此不再赘述。第三应用服务器处理第三子业务的过程如下:当第二应用服务器处理完第二子业务时,会将第二子业务的处理结果发送给第三应用服务器继续进行处理(即进行第三子业务的处理)。在第二应用服务器处理完第二子业务后,第二应用服务器会发起第二子业务转发请求,此时,第二应用服务器会将第二标识信息(包含业务请求y的业务标识k2)以及第二应用服务器处理第二子业务生成的处理结果封装成第二业务数据包,并向第三应用服务器发送该第二业务数据包以及第二子业务转发请求。当第三应用服务器接收到第二子业务转发请求和第二业务数据包后,第三应用服务器同样会判断第二子业务转发请求是否包含业务标识k2(即业务请求y的业务标识k2),处理过程同第二应用服务器,此处不再赘述。第三应用服务器判断第二子业务转发请求包含业务标识k2时,第三应用服务器会根据第二子业务转发请求解析该第二业务数据包,并从该第二业务数据包中解析出第二标识信息(包含业务请求y的业务标识k2);第三应用服务器将第二标识信息(包含业务请求y的业务标识k2)与第三应用服务器名称(即第三应用服务器的名称)进行绑定并生成第三标识信息,其中,该第三标识信息包含业务请求y的业务标识k2;第三应用服务器根据第二子业务转发请求和第二业务数据包对第三子业务进行处理;第三应用服务器在对第三子业务进行处理的过程中会生成第三应用服务日志;第三应用服务器在输出第三应用服务日志时会将第三标识信息(包含业务请求y的业务标识k2)写入第三应用服务日志中并将包含第三标识信息的第三应用服务日志输出。
46.特此说明,对于用户发起的业务请求需要经过三层以上子业务处理的情况,不同子业务处理过程中输出包含同一业务标识的应用服务日志的方式与上述输出包含同一业务标识的第一应用服务日志、第二应用服务日志和第三应用服务日志的方式类似,在此不再赘述。
47.由此可见,当用户发起的业务请求出现问题时,运维人员可以根据多个标识信息中均存在的同一个业务标识快速定位到多个子业务处理过程中输出的多个应用服务日志,并根据多个应用服务日志快速定位到错误所在,从而提高了运维人员排查错误的效率。
48.示例性地,第一应用服务器获取业务请求的业务标识之前,还包括:第一应用服务器拦截业务请求,并确定业务请求是否携带业务标识;当业务请求携带业务标识时,第一应用服务器从业务请求中获取业务标识;当业务请求未携带业务标识时,第一应用服务器生成业务标识。
49.上述第一应用服务器在获取业务请求的业务标识之前,会对接收到的业务请求进行拦截;第一应用服务器会判断业务请求是否携带业务标识,以确定该业务请求之前是否经过其他服务器的处理。当第一应用服务器判断业务请求包含业务标识时,第一应用服务
器会直接从业务请求中获取该业务标识;当第一应用服务器判断业务请求不包含业务标识时,第一应用服务器会为该业务请求生成业务标识。
50.比如,第一应用服务器获取用户发起的业务请求w的业务标识为k3,并且,用户发起的业务请求w需要经过两层子业务处理才能完成对该业务请求w的处理,该两层子业务处理包括第一子业务处理和第二子业务处理,其中,第一子业务处理需要在第一应用服务器上完成,第二子业务处理需要在第二应用服务器上完成。当第一应用服务器接收到用户发起的业务请求w时,第一应用服务器会拦截该业务请求w,并解析该业务请求w中是否含有业务标识k3;若该业务请求w中包含业务标识k3,则第一应用服务器获取该业务标识k3;若该业务请求w中不包含业务标识k3,则第一应用服务器会为该业务请求w生成业务标识k3。第一应用服务器将业务标识k3与第一应用服务器名称绑定并生成第一标识信息(即第一标识信息包含业务请求w的业务标识k3);第一应用服务器将第一子业务转发请求和包含有第一标识信息的第一业务数据包一起发送给第二应用服务器;第二应用服务器接收到第一子业务转发请求后,会拦截该第一子业务转发请求并分析第一子业务转发请求携带的第一业务数据包中是否包含业务标识k3(即包含业务请求w的业务标识k3);若该第一子业务转发请求中包含业务标识k3(即包含业务请求w的业务标识k3),则第一应用服务器获取该业务标识k3;若该第一子业务转发请求中不包含业务标识k3,则第一应用服务器会为该第一子业务转发请求生成业务标识k3。
51.在本实施例中,第一应用服务器在生成业务标识之前,会先拦截接收到的业务请求,并判断该业务请求是否含有业务标识;若不含有,则第一应用服务器才会为业务请求生成业务标识;若含有,则会直接利用业务请求中包含的业务标识而无需再次生成业务标识;由此可见,第一应用服务器只有判断出业务请求自身不含业务标识时,才会为该业务请求生成业务标识,这样可以减小第一应用服务器的处理负担。
52.示例性地,当业务请求未携带业务标识时,第一应用服务器生成业务标识,包括:当业务请求未携带业务标识时,第一应用服务器获取第一应用服务器的互联网协议地址(即internet protocol address,ip地址)、物理地址(即media access control address,mac地址)和当前时间戳;第一应用服务器根据第一应用服务器的ip地址、mac地址和当前时间戳生成业务标识。
53.当上述第一应用服务器判断出业务请求未携带业务标识时,第一应用服务器会通过获取第一应用服务器的ip地址、第一应用服务器的mac地址和当前时间戳为业务请求生成业务标识。比如,第一应用服务器的ip地址为x1.x2.x3.x4,第一应用服务器的mac地址为a1-a2-a3-a4-a5-a6,当前时间戳1646378582317ms,第一应用服务器将ip地址、mac地址和当前时间戳进行组合生成上述业务请求的业务标识,比如,业务标识为x1.x2.x3.x4+a1-a2-a3-a4-a5-a6+1646378582317。
54.在本实施例中,第一应用服务器根据第一应用服务器的ip地址、mac地址和当前时间戳生成业务标识,能够有效地区分用户发起的不同业务请求。
55.示例性地,上述方法还包括:第一应用服务器获取n位随机数,n位正整数;第一应用服务器根据第一应用服务器的ip地址、mac地址和当前时间戳生成业务标识,包括:第一应用服务器根据第一应用服务器的ip地址、mac地址、当前时间戳和n位随机数生成业务标识。
56.比如,当上述第一应用服务器判断出业务请求未携带业务标识时,第一应用服务器会通过获取n位随机数、第一应用服务器的ip地址、第一应用服务器的mac地址和当前时间戳为业务请求生成业务标识。比如,n=8,8位随机数为38268640,第一应用服务器的ip地址为y1.y2.y3.y4,第一应用服务器的mac地址为b1-b2-b3-b4-b5-b6,当前时间戳1546388582377ms,第一应用服务器将8位随机数、ip地址、mac地址和当前时间戳进行组合生成上述业务请求的业务标识,比如,业务标识为y1.y2.y3.y4+b1-b2-b3-b4-b5-b6+1546388582377+38268640。
57.在本实施例中,第一应用服务器根据第一应用服务器的ip地址、mac地址、当前时间戳和n位随机数生成业务标识,能够进一步有效地区分出用户发起的不同业务请求。
58.示例性地,根据第一应用服务器的ip地址、mac地址、当前时间戳和n位随机数生成业务标识,包括:根据第一应用服务器的ip地址、mac地址、当前时间戳和n位随机数生成初始标识;对初始标识进行哈希计算,生成业务标识。
59.当第一应用服务器根据第一应用服务器的ip地址、mac地址、当前时间戳和n位随机数为业务请求生成业务标识时,第一应用服务器先根据ip地址、mac地址、当前时间戳和n位随机数生成初始标识;再利用哈希算法对初始标识进行哈希计算;上述哈希算法包括但不限于消息摘要算法(message-digest algorithm,md)、安全哈希算法(secure hash algorithm,sha)。利用哈希算法对初始标识进行哈希计算主要是为了生成固定长度的业务标识。
60.比如,n=4,4位随机数为3826,第一应用服务器的ip地址为z1.z2.z3.z4,第一应用服务器的mac地址为c1-c2-c3-c4-c5-c6,当前时间戳1543358521341ms,第一应用服务器将4位随机数、ip地址、mac地址和当前时间戳进行组合生成初始标识,比如,初始标识为z1.z2.z3.z4+c1-c2-c3-c4-c5-c6+1543358521341+3826,第一应用服务器利用md5对初始标识进行哈希计算,生成固定长度为32位的业务标识w。
61.在本实施例中,第一应用服务器对生成的初始标识进行哈希计算,不仅能够降低不同业务请求重复的概率,还能够得到固定长度的业务标识。
62.示例性地,第一应用服务器删除本地存储的第一标识信息。
63.上述第一应用服务器在处理完业务请求后,会将处理该业务请求相关的数据以及第一标识信息删除,以释放存储空间。比如,第一应用服务器将业务请求的第一子业务的处理结果和第一标识信息封装成第一业务数据包,并将第一业务数据包发送给第二应用服务器;当第一应用服务器将第一业务数据包发送给第二应用服务器后,第一应用服务器会删除第一业务数据包和第一标识信息,以释放存储空间。在本实施例中,第一应用服务器处理完业务请求的相关业务后会删除业务处理过程中存储的数据,比如,第一标识信息,以节省第一应用服务器的存储资源。
64.综上所述,上述第一应用服务器和第二应用服务器用于处理同一业务请求的不同子业务;在不同子业务的处理过程中,第一应用服务器和第二应用服务器均根据包含同一业务标识的第一标识信息输出各自子业务处理过程中记录的应用服务日志,以便于后期运维人员根据同一业务标识快速定位到同一业务请求处理过程中输出的各种应用服务日志。例如,业务请求a的处理过程需要第一应用服务器和第二应用服务器参与,第一应用服务器在处理业务请求a时生成包含第一标识信息(包含业务请求a的业务标识)的第一应用服务
日志,第二应用服务器在处理业务请求a时生成包含第二标识信息(包含业务请求a的业务标识)的第二应用服务日志,这样,运维人员就能根据业务请求a的业务标识从多个应用服务器生成的大量应用服务日志中查找到业务请求a的相关应用服务日志,从而提高了运维人员排查业务请求处理错误的效率。
65.为了便于理解,下面结合图3对本技术提供的追踪日志的方法的整体流程步骤进行示例性说明。图3中服务器集群a包括多个服务器,分别为服务器a1,
……
,服务器an;服务器集群b包括多个服务器,分别为服务器b1,
……
,服务器bm,其中,n、m均为大于1的整数。以第一应用服务器为服务器a1和第二应用服务器为服务器b1为例,由图3可知,第一应用服务器和第二应用服务器位于不同的服务器集群;上述第一应用服务器和第二应用服务器均包括前置拦截器和后置拦截器,其中,前置拦截器用于拦截业务请求,并将业务请求与业务标识进行绑定;前置拦截器还用于分析业务请求中是否包含有业务标识;后置拦截器用于处理不同子业务的转发请求(即将不用子业务的业务处理请求转发给下一级服务器),还用于删除本地存储的与业务处理相关的数据信息。比如,第一应用服务器会触发自身前置拦截器将用户发起的业务请求进行拦截,随后,该前置拦截器会将业务请求与业务标识进行绑定,生成第一标识信息。再比如,第二应用服务器会触发自身前置拦截器将第一应用服务器转发的第一子业务转发请求进行拦截,随后,前置拦截器会将第一子业务转发请求与第二应用服务器名称进行绑定,生成第二标识信息。
66.(1)用户发起业务请求,该业务请求到达服务器集群a中的服务器a1,服务器a1中的前置拦截器会将用户发起的业务请求进行拦截。
67.(2)服务器a1中的前置拦截器会分析业务请求中是否携带业务标识,其中,该服务器a1中的前置拦截器利用面向切面编程(aspect oriented programming,aop)技术实现。
68.(3)当服务器a1中的前置拦截器分析业务请求携带业务标识时,服务器a1中的前置拦截器会直接获取该业务标识;当服务器a1中的前置拦截器分析业务请求未携带业务标识时,会通过获取服务器a1的ip、服务器a1的mac地址、当前时间戳(比如,1646378582317ms)+n位随机数生成初始标识;再利用md5对初始标识进行哈希计算,生成32位业务标识。
69.(4)服务器a1中的前置拦截器将该32位业务标识与服务器a1的名称进行绑定,生成第一标识信息;由于服务器a1在处理业务请求时会给该业务请求分配一个线程x,因此,服务器a1会将第一标识信息写入本地线程资源池中,并将该第一标识信息向下一级应用服务器传递。
70.(5)服务器a1先处理用户发起的业务请求中需要处理的第一子业务,并输出第一子业务处理过程中产生的日志文件1(即第一应用服务日志);第一应用服务器在输出日志文件1时会将第一标识信息写入日志文件1中并将包含该第一标识信息的日志文件1输出。
71.(6)当服务器a1中的线程x发起业务请求转发指令(即当服务器a1监听到业务请求转发指令)时,服务器a1中的后置拦截器获取本地线程资源池中的第一标识信息,并将该第一标识信息与业务数据封装成第一业务数据包。
72.(7)服务器a1的后置拦截器将第一业务数据包和第一子业务转发请求发送给服务器b1;当服务器a1的后置拦截器将第一业务数据包和转发业务请求发送给服务器b1后,服务器a1会删除本地线程资源池中存储的第一业务数据包和转发业务请求,以释放存储空
间。
73.(8)当服务器b1(即第二应用服务器)接收到服务器a1发送的第一业务数据包和第一子业务转发请求时,服务器b1的前置拦截器会拦截第一子业务转发请求并判断第一子业务转发请求是否包含业务标识;其中,服务器b1的前置拦截器判断第一子业务转发请求是否包含业务标识与服务器a1的前置拦截器判断业务请求是否携带业务标识的处理方式类似,此处不再赘述。
74.(9)当服务器b1中的前置拦截器判断第一子业务转发请求包含业务标识时,将第一业务数据包中的第一标识信息与服务器b1的名称进行绑定,生成第二标识信息。
75.(10)服务器b1在处理业务请求的第二子业务时,会输出第二子业务处理过程中产生的日志文件2(即第二应用服务日志);服务器b1在输出日志文件2时会将第二标识信息写入日志文件2中并将包含该第二标识信息的日志文件2输出。
76.(11)直到服务器b1处理完第二子业务时,上述整个业务请求才算被处理完毕;由于整个业务请求已处理完毕,此时,服务器b1不会监听到业务请求转发指令;服务器b1中的后置拦截器会删除本地(即服务器b1)线程资源池中存储的第二标识信息和处理第二子业务时生成的相关数据,以释放存储空间。
77.图4示出了本技术提供了一种电子设备的结构示意图。图4中的虚线表示该单元或该模块为可选的。电子设备400(比如,第一应用服务器或者第二应用服务器)可用于实现上述方法实施例中描述的方法。电子设备400可以是服务器或芯片。
78.电子设备400包括一个或多个处理器401,该一个或多个处理器401可支持电子设备400实现图2所对应方法实施例中的方法。处理器401可以是通用处理器或者专用处理器。例如,处理器401可以是中央处理器(central processing unit,cpu)。cpu可以用于对电子设备400进行控制,执行软件程序,处理软件程序的数据。电子设备400还可以包括通信单元405,用以实现信号的输入(接收)和输出(发送)。
79.例如,电子设备400可以是芯片,通信单元405可以是该芯片的输入和/或输出电路,或者,通信单元405可以是该芯片的通信接口,该芯片可以作为电子设备的组成部分。
80.又例如,通信单元405可以是该电子设备400的收发器,或者,通信单元405可以是该电子设备400的收发电路。
81.电子设备400中可以包括一个或多个存储器402,其上存有程序404,程序404可被处理器401运行,生成指令403,使得处理器401根据指令403执行上述方法实施例中描述的方法。可选地,存储器402中还可以存储有数据。可选地,处理器401还可以读取存储器402中存储的数据,该数据可以与程序404存储在相同的存储地址,该数据也可以与程序404存储在不同的存储地址。
82.处理器401和存储器402可以单独设置,也可以集成在一起,例如,集成在电子设备的系统级芯片(system on chip,soc)上。
83.处理器401执行追踪日志的方法的具体方式可以参见方法实施例中的相关描述。
84.应理解,上述方法实施例的各步骤可以通过处理器401中的硬件形式的逻辑电路或者软件形式的指令完成。处理器401可以是cpu、数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件,例如,分立门、晶体管逻辑器件或分立硬件组件。
85.本技术还提供了一种计算机程序产品,该计算机程序产品被处理器401执行时实现本技术中任一方法实施例所述的方法。
86.该计算机程序产品可以存储在存储器402中,例如是程序404,程序404经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器401执行的可执行目标文件。
87.本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本技术中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
88.该计算机可读存储介质例如是存储器402。存储器402可以是易失性存储器或非易失性存储器,或者,存储器402可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。
89.本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
90.在本技术所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它方式实现。例如,以上描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
91.以上所述实施例仅用以说明本技术的技术方案,而非对其限制。尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1