【专利下载】【专利代理】【商标和版权申请】Tel:18215660330

微服务的异常定位方法、装置、电子设备和程序产品与流程

专利查询10月前  40

【专利下载】【专利代理】【商标和版权申请】Tel:18215660330



1.本公开涉及微服务技术领域或金融科技领域等,更具体地涉及一种微服务的异常定位方法、装置、电子设备和程序产品。


背景技术:

2.随着业务的快速发展,越来越多的应用由单体架构改变为微服务架构。在微服务架构中,一次用户请求往往涉及到多个模块,多个中间件,多台机器的相互协作,以通过一个或多个微服务发出一系列的调用请求来完成。相关技术中,通过在微服务调用过程中采集日志,并首先将日志文件存储至磁盘,然后从磁盘中获取已存储的日志文件来分析微服务架构的性能,或对微服务进行异常定位。
3.在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:
4.在微服务出现异常情况时,将日志文件先落磁盘存储再处理分析的方式,无法在第一时间准确获得日志文件,导致异常定位速度慢,效率较低。


技术实现要素:

5.鉴于上述问题,本公开提供了提高微服务的异常定位效率的微服务的异常定位方法、装置、电子设备和程序产品。
6.本公开实施例的一个方面提供了一种微服务的异常定位方法,包括:基于至少一个微服务发出的调用请求,获取与所述调用请求对应的日志文件,其中,所述日志文件包括所述调用请求的调用信息;基于所述日志文件实时建立索引库;利用所述索引库查询获得所述日志文件,以基于所述调用信息来定位所述至少一个微服务的调用异常。
7.根据本公开的实施例,在所述基于所述日志文件实时建立索引库之前,还包括存储所述日志文件,具体包括:处理所述日志文件以获得对应的日志消息;将所述日志消息存放到消息队列;通过消费所述消息队列中的日志消息,来存储所述日志文件。
8.根据本公开的实施例,所述获取与所述调用请求对应的日志文件包括:拦截所述至少一个微服务发出的调用请求,以生成调用记录号;将所述调用请求的调用信息和所述调用记录号相关联的写入所述日志文件。
9.根据本公开的实施例,所述拦截所述至少一个微服务发出的调用请求包括:基于无侵入代码的方式拦截所述至少一个微服务发出的调用请求。
10.根据本公开的实施例,所述拦截所述至少一个微服务发出的调用请求,以生成调用记录号包括:拦截同一调用链下的至少一个所述调用请求,其中,所述调用链包括所述至少一个微服务响应于用户请求而执行的调用关系;基于所述调用链生成所述调用记录号。
11.根据本公开的实施例,所述调用信息包括以下至少一种:调用方、被调用方、调用时间戳、响应时间戳、服务器地址、接口名称。
12.根据本公开的实施例,在所述获取与所述调用请求对应的日志文件之后,所述方法还包括:基于所述调用时间戳和所述响应时间戳,计算所述接口名称对应的耗时时间;在
所述耗时时间大于或等于预设阈值时,发送提示信息。
13.根据本公开的实施例,所述提示信息包括所述调用记录号,所述利用所述索引库查询获得所述日志文件包括:基于所述调用记录号与所述索引库中的索引信息进行匹配;基于与所述调用记录号匹配成功的索引信息,获取所述日志文件。
14.本公开实施例的另一方面提供了一种微服务的异常定位装置,包括文件获取模块、索引库模块和异常定位模块。文件获取模块用于基于至少一个微服务发出的调用请求,获取与所述调用请求对应的日志文件,其中,所述日志文件包括所述调用请求的调用信息;索引库模块用于基于所述日志文件实时建立索引库;异常定位模块用于利用所述索引库查询获得所述日志文件,以基于所述调用信息来定位所述至少一个微服务的调用异常。
15.本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
16.本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
17.上述一个或多个实施例具有如下优点或有益效果:相对于相关技术中将微服务的日志文件先落磁盘存储再处理分析的方式,本公开实施例基于获取到的日志文件实时建立索引库,从而可以利用索引库提供实时检索所述日志文件的功能,能够减少从落磁盘存储到再处理分析之间所耗费的时间差,以及省略多余的日志处理步骤,能够节省系统资源,提高异常处理效率,可以至少部分地解决微服务的异常定位速度慢,效率较低的问题。
附图说明
18.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
19.图1示意性示出了根据本公开实施例的微服务的异常定位方法的应用场景图;
20.图2示意性示出了根据本公开实施例的微服务的异常定位方法的流程图;
21.图3示意性示出了根据本公开实施例的存储所述日志文件的流程图;
22.图4示意性示出了根据本公开实施例的存储所述日志文件的架构图;
23.图5示意性示出了根据本公开实施例的获取与所述调用请求对应的日志文件的流程图;
24.图6示意性示出了根据本公开实施例的生成调用记录号的流程图;
25.图7示意性示出了根据本公开的另一实施例的微服务的异常定位方法的流程图;
26.图8示意性示出了根据本公开实施例的利用所述索引库检索获得所述日志文件的流程图;
27.图9示意性示出了根据本公开实施例的微服务的异常定位装置的结构框图;
28.图10示意性示出了根据本公开实施例的适于实现微服务的异常定位方法的电子设备的方框图。
具体实施方式
29.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性
的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
30.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
31.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
32.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
33.相关技术中,基于微服务架构采集到的日志文件可能会有较大的数据量。先将日志文件存储至磁盘,再从磁盘取出日志文件进行分析的过程中,一方面,从磁盘取出文件可能会伴随大量的数据读取操作,耗费较多时间。并且,对于在磁盘中无序存储的日志文件按照分类规则进行扫描、寻找关联文件、并分析的过程也会耗费时间,导致用户无法第一时间使用日志文件。另一方面,为了实现从磁盘取出日志文件进行分析的功能,通常会分配对应的线程以调用系统资源进行计算处理,该分配线程并计算处理的操作也会浪费系统资源。
34.本公开的实施例提供了一种微服务的异常定位方法、装置、电子设备和程序产品,该方法包括:基于至少一个微服务发出的调用请求,获取与调用请求对应的日志文件,其中,日志文件包括调用请求的调用信息。基于日志文件实时建立索引库。利用索引库查询获得日志文件,以基于调用信息来定位至少一个微服务的调用异常。
35.相对于相关技术中将微服务的日志文件先落磁盘存储再处理分析的方式,本公开实施例基于获取到的日志文件实时建立索引库,从而可以利用索引库提供实时检索日志文件的功能,能够减少从落磁盘存储到再处理分析之间所耗费的时间差,以及省略多余的日志处理步骤,能够节省系统资源,提高异常处理效率,可以至少部分地解决微服务的异常定位速度慢,效率较低的问题。
36.图1示意性示出了根据本公开实施例的微服务的异常定位方法的应用场景图。
37.如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104、第一服务器105和第二服务器106。其中,第一服务器105可以包括服务器1051、1052
……
105n。网络104用以在终端设备101、102、103和第一服务器105之间提供通信链路的介质。在一些实施例中,第一服务器105和第二服务器106也可以设置网络104,以提供通信链路。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
38.用户可以使用终端设备101、102、103通过网络104与第一服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
39.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
40.第一服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。第二服务器106可以是数据库服务器,以提供建立索引库的功能,并提供实时检索功能。第二服务器106可以与第一服务器105相同。
41.根据本公开的实施例,微服务架构可以设置在第一服务器105中,例如在服务器1051、1052
……
105n分别部署一个或多个微服务,各个微服务之间可以跨服务器调用。用户可以通过终端设备101、102、103向第一服务器105发送用户请求,微服务架构可以响应用户请求发出一个或多个调用请求以满足用户需求。另外,可以获取每个调用请求对应的日志信息,并存储到第二服务器106中,来建立索引库。并且,用户可以通过终端设备101、102、103与第二服务器106进行交互,以基于索引库查询获得目标日志文件。在本公开的一些实施例中,可以不设置第二服务器106,而令第一服务器105包括的任一服务器提供建立索引库的功能,本公开不进行具体限定。
42.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
43.以下将基于图1描述的场景,通过图2~图8对本公开实施例的微服务的异常定位方法进行详细描述。
44.图2示意性示出了根据本公开实施例的微服务的异常定位方法的流程图。
45.如图2所示,该实施例的微服务的异常定位方法包括操作s210~操作s230。
46.在操作s210,基于至少一个微服务发出的调用请求,获取与调用请求对应的日志文件,其中,日志文件包括调用请求的调用信息。
47.参照图1,服务器1051上可能部署有微服务a,服务器1052上可能部署有微服务b、c。在接收到用户请求时,可以首先由微服务a响应用户请求,向微服务b发送调用请求a

b,以调用微服务b执行相关操作。然后,微服务b在进行数据处理时可以向微服务c发送调用请求b

c,最终返回处理后的数据。其中,可以对应于调用请求a

b获得日志文件1,对应于调用请求b

c获得日志文件2,或者将调用请求a

b、调用请求b

c的调用信息写入同一日志文件中。另外,在微服务a调用微服务b的同时,也可能调用服务器1053上的微服务d。上述这一系列调用请求,有些是串行的,有些是并行的,通过调用信息可以确定某个调用请求背后调用了哪些应用、哪些模块,哪些服务器节点及调用的先后顺序。
48.在操作s220,基于日志文件实时建立索引库。
49.实时建立索引库例如包括在实时检测到增量的日志文件时,对日志文件中内容进行分词处理,并建亨分词结果与日志文件的索引,最后将索引存储到索引库中。其中,索引库可以为全文索引库,数据库可以包括mysql数据库、elasticsearch数据库等。
50.在操作s230,利用索引库查询获得日志文件,以基于调用信息来定位至少一个微服务的调用异常。
51.调用异常可以为调用耗时过长、调用失败等异常情况,其可以通过微服务架构无法满足业务需求而返回的响应信息来发现,也可以通过索引库获取日志文件进行数据分析
来发现。查询日志文件可以包括以下步骤:首先,可以接收用户发送的检索内容。然后,基于该检索内容从索引库中确定对应的索引信息。最后,基于索引信息获得对应的源日志文件。
52.根据本公开的实施例,调用信息包括以下至少一种:调用方、被调用方、调用时间戳、响应时间戳、服务器地址、接口名称。调用方可以为发出调用请求的微服务,被调用方可以为接受调用的微服务,调用时间戳可以为发出调用请求的时间,响应时间戳可以为被调用方返回响应数据的时间,服务器地址可以包括调用方和/或被调用方所在服务器ip,接口名称可以为被调用方暴露的接口的名称,该接口用于接收调用请求,以及返回响应数据。以上述调用请求a

b为例,其调用信息可以包括调用方微服务a,被调用方微服务b,服务器1051的地址,服务器1052的地址,发出调用请求a

b的时间,微服务b响应的时间,微服务b暴露的用于与微服务a交互的接口名称。
53.根据本公开的实施例,在获取到服务器ip之后,可以基于加密算法,如rsa加密算法,对服务器ip地址进行加密,然后将密文信息写入到日志文件中,从而可以防止出现服务器ip泄露而导致的安全问题。
54.相对于相关技术中将微服务的日志文件先落磁盘存储再处理分析的方式,本公开实施例基于获取到的日志文件实时建立索引库,从而可以利用索引库提供实时检索日志文件的功能,能够减少从落磁盘存储到再处理分析之间所耗费的时间差,以及省略多余的日志处理步骤,能够节省系统资源,提高异常处理效率,可以至少部分地解决微服务的异常定位速度慢,效率较低的问题。
55.图3示意性示出了根据本公开实施例的存储日志文件的流程图。图4示意性示出了根据本公开实施例的存储日志文件的架构图。
56.如图3所示,在操作s220基于日志文件实时建立索引库之前,还包括存储日志文件,具体可以包括操作s310~操作s330。
57.在操作s310,处理日志文件以获得对应的日志消息。
58.在操作s320,将日志消息存放到消息队列。
59.参照图1和图4,例如将调用请求a

b、调用请求b

c的调用信息写入同一日志文件。其中,该日志文件可以首先分配给日志采集线程池,该日志采集线程池可以在第一服务器105中的任意服务器执行。然后,由日志采集线程池中的线程将日志文件处理为预定格式,以此来获取日志消息。此时,可以将日志采集线程池作为生产者。最后,由该线程将日志消息存放到消息队列中。
60.在操作s330,通过消费消息队列中的日志消息,来存储日志文件。
61.参照图1和图4,可以在生产者与消费者之间设置消息中间件,消息中间件用以提供消息队列功能。其中,消费消息队列中的日志消息可以为第二服务器106从消息队列中取出一条或多条日志消息进行处理,例如将日志消息进行反向格式处理(仅为示例)获得日志文件,然后存储至数据库并实时建立索引。上述实时检测到增量的日志文件可以包括实时检测消息队列中新增的日志消息。此时,第二服务器106可以看作是消费者。
62.在本公开的一些实施例中,生产者与消费者模式中的日志消息包括日志文件中的内容,对日志消息进行格式处理即可获得对应的文件。在本公开的一些实施例中,日志消息可以为日志文件关联消息,例如先将日志文件存储到日志服务器中,第二服务器106通过消费该关联消息,再去日志服务器中去取文件。
63.根据本公开的实施例,通过设置消息中间件以异步的方式存储日志文件,可以降低微服务架构生产日志文件,与数据库存储文件的耦合性。另外,微服务架构中调用请求往往会伴随着高并发的情况,而随之产生的日志文件也具有较大数据量,异步处理的方式可以令数据库不会因数据量超过处理瓶颈而崩溃,以达到稳定存储的效果。
64.图5示意性示出了根据本公开实施例的操作s210中获取与调用请求对应的日志文件的流程图。
65.如图5所示,在操作s210中获取与调用请求对应的日志文件包括操作s510~操作s520。
66.在操作s510,拦截至少一个微服务发出的调用请求,以生成调用记录号。
67.根据本公开的实施例,拦截至少一个微服务发出的调用请求包括:基于无侵入代码的方式拦截至少一个微服务发出的调用请求。
68.微服务架构可以响应用户请求通过一系列的调用请求以满足用户需求。在执行上述一系列的调用请求的基础上,增加拦截调用请求的功能例如是对微服务架构的代码进一步增添代码内容。无侵入代码的方式表现为对微服务架构的代码的低侵入性,降低了业务开发复杂度。例如可以将探针植入微服务架构的代码中,而不对所要监控的代码进行修改。无侵入代码的方式可以由java agent代理、java proxy代理或cglib(code generation library)动态代理实现。在本公开的另一些实施例中,也可以由侵入代码的方式拦截调用请求,以同样实现采集日志文件的目的。
69.在操作s520,将调用请求的调用信息和调用记录号相关联的写入日志文件。
70.根据本公开的实施例,可以采用装饰器模式(如python装饰器函数)将调用信息和调用记录号相关联的写入日志文件。装饰器模式能够让一个现有的函数在不做任何代码变动的前提下动态增加额外功能,从而可以采用无侵入代码的方式打印微服务架构中产生的调用信息。
71.根据本公开的实施例,由于一个微服务可能会发出多个调用请求,而采集的日志文件可能是无序的,甚至会采集到与调用请求无关的无效日志文件。因此,可以通过调用记录号对日志文件进行分析处理。
72.图6示意性示出了根据本公开实施例的操作s510中生成调用记录号的流程图。
73.如图6所示,操作s510中拦截至少一个微服务发出的调用请求,以生成调用记录号可以包括操作s610~操作s620。
74.在操作s610,拦截同一调用链下的至少一个调用请求,其中,调用链包括至少一个微服务响应于用户请求而执行的调用关系。
75.参照图1,例如接收了用户发送的一个用户请求,可能会执行调用请求a

b、调用请求b

c以返回响应数据。响应该用户请求的调用链包括调用请求a

b、调用请求b

c,即包括微服务a调用微服务b,微服务b调用微服务c的调用关系。
76.在操作s620,基于调用链生成调用记录号。
77.具体地,基于调用链生成调用记录号可以包括如下步骤:
78.首先,响应于用户请求,调用微服务a,生成调用记录号。例如该调用记录号可以是采用uuid算法生成的uuid号。
79.其次,微服务a响应于用户请求,发出调用请求a

b。此时,基于cglib动态代理的
方式拦截到该调用请求。另外,将调用请求a

b的调用信息与uuid号相关联的写入日志文件3。其中,调用请求a

b以url的形式由微服务a发送至微服务b暴露的接口。在发送之前,可以将uuid号赋值到上述url中。
80.然后,微服务b接收到调用请求a

b的url,可以获取其中的uuid号,并响应该url向微服务c发送调用请求b

c。同样基于cglib动态代理的方式拦截到该调用请求,并将调用信息和该uuid号写入到日志文件3。并且,将该uuid号赋值到调用请求b

c的url中,传递给微服务c暴露的接口。
81.接着,微服务c接收到调用请求b

c的url,可以获取其中的uuid号,并响应该url处理数据并返回第一响应信息。可以基于uuid号将返回第一响应信息的时间与调用请求b

c相关联的写入日志文件3中。在微服务b基于第一响应信息向微服务a返回第二响应信息时,同样基于uuid号将返回第二响应信息的时间与调用请求a

b相关联的写入日志文件3中。
82.最后,可获得记录该调用链的日志信息的日志文件3。日志文件3中的内容如表1所示(仅为示例)。
83.表1
[0084][0085]
根据本公开的实施例,由于同一个用户请求可能会由位于不同服务器的微服务执行,因此会造成日志文件的发散,导致不易查找。通过基于调用链生成调用记录号,可以基于调用记录号快速定位到一系列调用请求涉及的具体用户请求、业务类型、微服务等信息。
[0086]
图7示意性示出了根据本公开的另一实施例的微服务的异常定位方法的流程图。
[0087]
如图7所示,该实施例的微服务的异常定位方法包括操作s210~操作s230,以及操作s710~操作s720。
[0088]
在操作s210,基于至少一个微服务发出的调用请求,获取与调用请求对应的日志文件,其中,日志文件包括调用请求的调用信息。
[0089]
在操作s220,基于日志文件实时建立索引库。
[0090]
在操作s710,基于调用时间戳和响应时间戳,计算接口名称对应的耗时时间。
[0091]
在操作s720,在耗时时间大于或等于预设阈值时,发送提示信息。
[0092]
参见表1,可以通过uuid号提取属于同一调用链的日志信息。并针对每一条调用信息(如表1中的每一行信息)计算耗时时间。例如接口b1的耗时时间为6秒,若预设阈值为5秒,则接口b1的耗时时间超过了预设阈值,此时可以发送提示信息。从而能够及时发现可能存在性能问题的接口服务,完成耗时接口服务的告警功能。
[0093]
在一些实施例中,可以采用文字形式或语音形式中至少一种提示方式发送提示信息。在采用文字形式时,可以调用邮件服务器或短信服务器,基于预留的邮箱或号码发送邮
件或短信。还可以调用消息推送服务,向工作人员预留的应用进行消息推送。在采用语音形式时,例如可以调用外呼系统向预留的号码进行电话呼叫,在电话接通后自动播放语音内容。还可以自动播放警告声音,如蜂鸣声、滴滴声或长鸣声等。其中,文字内容或语音内容可以是通用的内容,如“发现异常接口”,也可以是详细信息,如“接口b1的耗时时间超过了预设阈值”。应知的是,文字内容或语音内容可以自定义设置,本公开不进行具体限定。
[0094]
在操作s230,利用索引库查询获得日志文件,以基于调用信息来定位至少一个微服务的调用异常。
[0095]
虽然上文以特定的顺序描述了方法的各个操作,然而本公开的实施例不限于此,上述操作可以根据需要以其他顺序执行。例如操作s220可以在步骤s710之后执行。在一些实施例中,可以在计算出耗时时间后再打印出日志文件,然后存储日志文件并实时建立索引库。
[0096]
根据本公开的实施例,参照图1和图4,除了将日志文件存储到elasticsearch数据库中并建立索引库之外,还可以通过可执行脚本从消息队列中消费消息,并按照时间维度将调用记录号提取,在将接口耗时计算出来后用文件的形式落高速缓存磁盘(nas)并定时保存日志快照,来起到备份作用。另外,可以在nas中保存一定日期内的日志文件,对于超期的日志文件,按请求数/存储块大小为单位批量处理数据到非关系型数据库hbase(仅为示例)中,并在nas中删除,来起到进一步的备份作用。
[0097]
图8示意性示出了根据本公开实施例的操作s230中利用索引检索获得日志文件的流程图。
[0098]
如图8所示,操作s230中利用索引检索获得日志文件可以包括操作s810~操作s820。其中,提示信息包括调用记录号。
[0099]
在操作s810,基于调用记录号与索引库中的索引信息进行匹配。
[0100]
在操作s820,基于与调用记录号匹配成功的索引信息,获取日志文件。
[0101]
参照表1,在接口b1的耗时时间超过预设阈值后,可以发出提示信息,该提示信息中包括123x。那么可以将123x作为检索词进行检索。在将检索词123x与索引信息123x匹配成功后,基于索引信息123x获取对应的日志文件3。然后可以基于调用信息定位到微服务a、b和c,并逐一排查问题,从而快速完成异常定位操作。
[0102]
基于上述微服务的异常定位方法,本公开还提供了一种微服务的异常定位装置。以下将结合图9对该装置进行详细描述。
[0103]
图9示意性示出了根据本公开实施例的微服务的异常定位装置的结构框图。
[0104]
如图9所示,该实施例的微服务的异常定位装置900包括文件获取模块910、索引库模块920和异常定位模块930。
[0105]
文件获取模块910例如可以用于执行操作s210,用于基于至少一个微服务发出的调用请求,获取与调用请求对应的日志文件,其中,日志文件包括调用请求的调用信息。
[0106]
索引库模块920例如可以用于执行操作s220,用于基于日志文件实时建立索引库。
[0107]
异常定位模块930例如可以用于执行操作s230,用于利用索引库查询获得日志文件,以基于调用信息来定位至少一个微服务的调用异常。
[0108]
根据本公开的实施例,文件获取模块910、索引库模块920和异常定位模块930中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模
块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,文件获取模块910、索引库模块920和异常定位模块930中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,文件获取模块910、索引库模块920和异常定位模块930中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0109]
图10示意性示出了根据本公开实施例的适于实现微服务的异常定位方法的电子设备的方框图。
[0110]
如图10所示,根据本公开实施例的电子设备1000包括处理器1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0111]
在ram 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器1001、rom 1002以及ram 1003通过总线1004彼此相连。处理器1001通过执行rom 1002和/或ram 1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除rom 1002和ram 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0112]
根据本公开的实施例,电子设备1000还可以包括输入/输出(i/o)接口1005,输入/输出(i/o)接口1005也连接至总线1004。电子设备1000还可以包括连接至i/o接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006。包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007。包括硬盘等的存储部分1008。以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
[0113]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的。也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0114]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的
rom 1002和/或ram 1003和/或rom 1002和ram 1003以外的一个或多个存储器。
[0115]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现根据本公开实施例的方法。
[0116]
在该计算机程序被处理器1001执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0117]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0118]
在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0119]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c++,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0120]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0121]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

技术特征:
1.一种微服务的异常定位方法,包括:基于至少一个微服务发出的调用请求,获取与所述调用请求对应的日志文件,其中,所述日志文件包括所述调用请求的调用信息;基于所述日志文件实时建立索引库;利用所述索引库查询获得所述日志文件,以基于所述调用信息来定位所述至少一个微服务的调用异常。2.根据权利要求1所述的方法,其中,在所述基于所述日志文件实时建立索引库之前,还包括存储所述日志文件,具体包括:处理所述日志文件以获得对应的日志消息;将所述日志消息存放到消息队列;通过消费所述消息队列中的日志消息,来存储所述日志文件。3.根据权利要求2所述的方法,其中,所述获取与所述调用请求对应的日志文件包括:拦截所述至少一个微服务发出的调用请求,以生成调用记录号;将所述调用请求的调用信息和所述调用记录号相关联的写入所述日志文件。4.根据权利要求3所述的方法,其中,所述拦截所述至少一个微服务发出的调用请求包括:基于无侵入代码的方式拦截所述至少一个微服务发出的调用请求。5.根据权利要求3所述的方法,其中,所述拦截所述至少一个微服务发出的调用请求,以生成调用记录号包括:拦截同一调用链下的至少一个所述调用请求,其中,所述调用链包括所述至少一个微服务响应于用户请求而执行的调用关系;基于所述调用链生成所述调用记录号。6.根据权利要求3所述的方法,其中,所述调用信息包括以下至少一种:调用方、被调用方、调用时间戳、响应时间戳、服务器地址、接口名称。7.根据权利要求6所述的方法,其中,在所述获取与所述调用请求对应的日志文件之后,所述方法还包括:基于所述调用时间戳和所述响应时间戳,计算所述接口名称对应的耗时时间;在所述耗时时间大于或等于预设阈值时,发送提示信息。8.根据权利要求7所述的方法,其中,所述提示信息包括所述调用记录号,所述利用所述索引库查询获得所述日志文件包括:基于所述调用记录号与所述索引库中的索引信息进行匹配;基于与所述调用记录号匹配成功的索引信息,获取所述日志文件。9.一种微服务的异常定位装置,包括:文件获取模块,用于基于至少一个微服务发出的调用请求,获取与所述调用请求对应的日志文件,其中,所述日志文件包括所述调用请求的调用信息;索引库模块,用于基于所述日志文件实时建立索引库;异常定位模块,用于利用所述索引库查询获得所述日志文件,以基于所述调用信息来定位所述至少一个微服务的调用异常。10.一种电子设备,包括:
一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~8中任一项所述的方法。11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~8中任一项所述的方法。

技术总结
本公开提供了一种微服务的异常定位方法,该方法包括:基于至少一个微服务发出的调用请求,获取与所述调用请求对应的日志文件,其中,所述日志文件包括所述调用请求的调用信息;基于所述日志文件实时建立索引库;利用所述索引库查询获得所述日志文件,以基于所述调用信息来定位所述至少一个微服务的调用异常。本公开还提供了一种微服务的异常定位装置、电子设备和程序产品。和程序产品。和程序产品。


技术研发人员:周洋 李玉 方航
受保护的技术使用者:中国建设银行股份有限公司
技术研发日:2021.12.08
技术公布日:2022/3/8

最新回复(0)