一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

业务数据的获取方法、装置及电子设备与流程

2022-11-30 08:57:27 来源:中国专利 TAG:


1.本发明涉及业务处理技术领域,具体而言,涉及一种业务数据的获取方法、装置及电子设备。


背景技术:

2.相关技术中,通常可以通过对调用的接口标注异步执行注解的方式实现对部分代码进行异步操作。然而,对于在前后端分离的系统架构,前端在调用接口后,如果该接口对应的逻辑被设定为异步执行,后端在执行该接口对应的逻辑的过程中实现了异步操作,但前端仍需要等待后端返回异步操作的结果,导致代码执行效率较低,用户请求的响应速度较慢,影响了用户体验。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种业务数据的获取方法、装置及电子设备,以提高对用户通过终端设备发送的请求的响应速度,提高用户体验。
4.第一方面,本发明实施例提供了一种业务数据的获取方法,该方法应用于服务器;服务器与终端设备通信连接;该方法包括:接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。
5.上述接口调用成功消息包括目标数据的标识信息;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令的步骤,包括:基于预设的算法生成目标数据的标识信息;将目标数据的标识信息发送至终端设备,以使终端设备将标识信息确定为查询关键词,基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
6.上述采用异步的方式执行数据获取请求对应的业务操作的步骤,包括:调用与目标业务接口的异步注解对应的预设线程池中的线程执行数据获取请求对应的业务操作。
7.上述目标数据对应于基于预设算法生成的标识信息;目标数据包括非文件数据;异步注解包括第一返回数据参数;第一返回数据参数指示:目标业务接口返回非文件数据;将目标数据保存至目标数据库的步骤,包括:将标识信息确定为非文件数据在目标数据库的查询关键词;将非文件数据及查询关键词保存至目标数据库。
8.上述目标数据对应于基于预设算法生成的标识信息;目标数据包括目标文件;异步注解包括第二返回数据参数;第二返回数据参数指示:目标业务接口返回文件数据;将目标数据保存至目标数据库的步骤,包括:将目标文件保存至预设的文件服务器,获取目标文
件在文件服务器的位置信息;将标识信息确定为位置信息的查询关键词;将位置信息及查询关键词保存至目标数据库。
9.第二方面,本发明实施例提供了一种业务数据的获取方法,该方法应用于终端设备;终端设备与服务器通信连接;该方法包括:向服务器发送的数据获取请求,以使服务器调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;接收服务器返回的接口调用成功消息;基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;目标数据由服务器通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作得到,并保存至目标数据库;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据。
10.上述接口调用成功消息包括目标数据的标识信息;基于接口调用成功消息,向目标数据库发送数据查询指令的步骤,包括:将标识信息确定为查询关键词;基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
11.上述目标数据包括非文件数据;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的步骤,包括:将从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的非文件数据。
12.上述接口调用成功消息包括目标数据的标识信息;目标数据包括目标文件;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的步骤,包括:将从目标数据库查询到的与数据查询指令对应的数据确定为数据获取请求对应的目标文件的位置信息;基于位置信息,从预设的文件服务器获取目标文件。
13.第三方面,本发明实施例提供了一种业务数据的获取装置,该装置设置于服务器;服务器与终端设备通信连接;该装置包括:接口调用模块,用于接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;调用成功消息发送模块,用于向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;业务操作执行模块,用于通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。
14.第四方面,本发明实施例提供了一种业务数据的获取装置,该装置装置设置于终端设备;终端设备与服务器通信连接;该装置包括:数据获取请求发送模块,用于向服务器发送的数据获取请求,以使服务器调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;调用成功消息接收模块,用于接收服务器返回的接口调用成功消息;数据查询模块,用于基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;目标数据由服务器通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库;目标数据确定模块,用于基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据。
15.第五方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述的业务数据的获取方法。
16.第六方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述的业务数据的获取方法。
17.本发明实施例带来了以下有益效果:
18.上述一种业务数据的获取方法、装置及电子设备,服务器接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。该方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
19.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
20.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
21.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1为相关技术中包含异步执行的前端与后端的交互过程的流程图;
23.图2为本发明实施例提供的一种业务数据的获取方法的流程图;
24.图3为本发明实施例提供的另一种业务数据的获取方法的流程图;
25.图4为本发明实施例提供的一种包含异步执行的前端与后端的交互过程的流程图;
26.图5为本发明实施例提供的一种业务数据的获取装置的结构示意图;
27.图6为本发明实施例提供的一种业务数据的获取装置的结构示意图;
28.图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
29.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.异步(async),与同步相对应,是指调用其他线程开始执行一个操作后,当前线程不需要等待该操作的结果,可以继续执行之后的操作,若之后没有其他操作,则当前线程将进入睡眠状态,而中央处理器(central processing unit,简称cpu)将有机会切至其他线程。在异步操作完成后通过回调该操作对应的函数的方式获取通知以及执行结果。
31.由于业务逻辑(也可以称为“业务操作”)具有一定的复杂性,通常在业务逻辑的开发中会遇到一些很耗时的操作。而用户作为这些操作的发起者,一般都希望很快就能看到反馈结果。如果各个操作内部有很耗时的逻辑,比如文件上传或下载、较为耗时的基于结构化查询语言(structured query language,sql)的查询操作、较为耗时的第三方接口等,会让用户等待很长时间,从而影响用户体验。
32.相关技术中,斯普瑞布特(spring boot)、spring cloud等热门的程序框架中设置有成熟的异步注解@async,标注上这个注解的接口可以实现简单的异步执行功能。
33.此外,也可以通过手动编写代码的方式获取异步执行结果。在原有的业务中,通常是针对每一个具体的场景,专门编写异步功能,并获取异步执行的结果,结果存储的地方有可能也不一样,有的存在mysql等关系型数据库中,有的存在redis中。每个场景都需要重新编写一遍异步功能以及获取回调结果的代码。
34.上述调用接口实现异步执行的方式中,热门框架斯普瑞布特中的@async注解是斯普瑞布特自带的异步注解,标注上这个注解的接口可以实现异步执行,其执行过程如图1所示。同时也可以使用future类型接收返回值。这种方法虽然可以实现异步功能并接收返回值,但是由图1中的流程所示,在前后端分离的系统架构中,前端如果调用这个接口,这个接口内部可以在执行时使用注解实现异步执行,但前端仍然需要等这个接口内的异步逻辑执行完之后才能获取到返回值,这对于前端而言等待时间并没有变,仍然会影响用户体验。
35.而对于手动编写代码实现的异步功能,不同的业务场景都有一套不同的实现方式,并且每当业务的新增功能中有耗时任务时都要重新编写一套异步逻辑。这样做的缺点是缺少一套完整的通用异步方案,且每次实现的效率都非常低,还需要花费很多时间重新编写异步代码。
36.基于此,本发明实施例提供的一种业务数据的获取方法、装置及电子设备,该技术可以应用于各种业务数据的获取场景,如医院的业务系统、学校的业务系统等。
37.参见图2,首先对本发明实施例提供的一种业务数据的获取方法进行介绍,该方法应用于服务器;服务器与终端设备通信连接;该方法包括如下步骤:
38.步骤s202,接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行。
39.上述数据获取请求可以为用户通过与终端设备连接的人机交互设备触发,如触摸屏、鼠标、键盘等。例如,用户通过鼠标点击某网页对应的链接,终端设备便生成了该网页对应的业务数据的数据获取请求。
40.该数据获取请求可能对应于多个业务接口,该方法主要考虑到业务接口对应的业务操作需要进行异步执行的情况。当业务操作需要耗费较长时间或耗费较多资源时,需要设置该业务接口为异步执行。
41.具体可以通过对业务接口标注异步注解的方式实现。在java编程环境中,可以通
过@async异步注解实现。在该方法中,可以基于@async异步注解,设置自定义的异步注解。通过自定义的异步注解可以修改业务接口返回的参数以及返回逻辑,例如业务接口实际上应该返回执行的业务操作对应的执行结果或得到的业务数据,而通过异步注解可以使业务接口在被调用后,直接返回调用成功消息,或其他相关参数,而无需等待业务接口完成对应的业务操作的执行。
42.步骤s204,向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据。
43.上述接口调用成功消息可以包括目标业务接口的名称等参数。由于数据获取请求对应的目标数据需要在目标业务接口完成对应的业务操作的执行后才能获得,因此,服务器可以在调用接口成功后,首先生成一个用于查找目标数据的标识信息,并将该标识信息作为接口调用成功消息中的一个参数发送至终端设备。在生成标识信息时,可以采用哈希算法等,生成唯一可以表示目标数据的标识信息,如字符串或数组等。由于服务器在得到目标数据后,需要把目标数据保存至目标数据库,该标识信息可以随同目标数据保存之目标数据库,作为在目标数据库中查找目标数据的关键词。
44.上述目标数据库可以为预设的开放数据库,终端设备和服务器均可以访问该数据库。当业务数据量较小时,也可以在服务器中设置一个存储空间作为目标数据库。但由于业务数据量通常都较大,因此较少采用在服务器中设置目标数据库的方式。
45.终端设备在接收到接口调用成功消息后,可以从中解析到目标数据对应的标识信息,然后按照目标数据库的查询格式,生成对应的数据查询指令;在该指令中,该标识信息作为查询的关键词,然后基于预先获得的目标数据库的地址,以轮询的方式向目标数据库发送数据查询指令,其他时间,终端设备可以执行其他的业务操作,而不必一直等待数据获取请求对应的目标数据。
46.步骤s206,通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。
47.由于目标业务接口已经标注了异步注解,因此目标业务接口对应的业务操作需要采用异步的方式执行。异步执行通常需要当前线程调用其他线程来执行目标业务接口对应的业务操作。当前线程调用的其他线程可以为预先设置的线程池中的。该线程池可以为基于异步注解预先设置的,其线程数量等参数可以根据需求设定。
48.在得到数据获取请求对应的目标数据后,由于终端设备已经开始执行其他的业务操作,服务器不能直接将目标数据发送至终端设备,因此服务器需要对目标数据进行保存。具体可以选择符合需求的数据库保存目标数据,以起到中转数据的作用。由于业务数据通常会占据大量的存储空间,因此可以选择存储空间较大的数据库作为目标数据库。
49.由于形成文件的数据和未形成文件的数据在存储时具有不同的规则。例如,文件可以存储在文件服务器中,可以通过其存储位置获取到该文件。而通用的数据可以存储在数据库中,为其设置关键词作为查找该数据的主要参数。服务器可以针对目标数据为文件或通用数据的情况对目标数据进行不同方式的存储。关键词可以预先设定,而存储位置只能在获取文件并把文件存储在文件服务器后才能获得。因此,针对于不同格式的目标数据,
终端设备也需要采用不同的获取逻辑进行获取处理,该处理方式需要与服务器对目标数据的存储方式相对应。
50.例如,当目标数据为文件时,服务器可以将目标数据的标识信息设置为服务器中的设定存储位置,并将文件的在文件服务器中存储位置保存至该设定存储位置。终端设备可以向服务器请求该设定存储位置的存储内容,从而获得文件的在文件服务器中存储位置,继而从文件服务器中获取到该文件。
51.上述一种业务数据的获取方法,服务器接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。该方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
52.下述实施例提供一向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令的实现方式。
53.通常,服务器在调用与数据获取请求对应的目标业务接口成功后,会预先生成数据获取请求对应的目标数据的标识信息,具体可以采用多种随机算法生成,例如可以基于接收到数据获取请求的时间、发送数据获取请求的终端设备的设备标识等信息随机生成目标数据的标识信息,该标识信息可以为设定长度的字符串,或哈希字符等,该标识信息需要是唯一的,不能与其他业务数据的标识信息重复。
54.具体而言,可以基于预设的算法生成目标数据的标识信息;将目标数据的标识信息发送至终端设备,以使终端设备将标识信息确定为查询关键词,基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。其中,可以将标识信息设置于向终端设备返回的接口调用成功消息中的设定位置,以使终端设备从该设定位置读取目标数据的标识信息。
55.下述实施例提供一通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库的实现方式。
56.通常而言,在设置异步注解时,需要设置异步注解的切面,以添加异步注解的逻辑,如上文中的向终端设备返回目标数据的标识信息。还需要预先设置异步注解对应的线程池。该线程池内的线程数量及缓冲队列大小等参数均可以预先设置。当目标业务接口被标注了异步注解后,在执行该目标业务接口对应的业务逻辑时,可以调用与目标业务接口的异步注解对应的预设线程池中的线程执行数据获取请求对应的业务操作。
57.目标数据可能为非文件数据或文件,也可能二者兼而有之。非文件数据可以为一些占据内存空间较小的业务数据,如某些业务参数;而文件可以文视频文件、文档文件等占据内存空间较大的业务数据。非文件数据和文件在存储上的特点不同,如非文件数据可以存储在一些数据库中,如远程字典服务对应的数据库,而文件通常保存在设定的文件服务器中。文件服务器(file server),又称档案伺服器,是指在计算机网络环境中,所有用户都可访问的文件存储设备,是一种专供其他电脑检索文件和存储的特殊电脑。文件服务器通常比一般的个人电脑拥有更大的存储容量。因此在目标文件为非文件数据或文件时,对目
标数据的保存方式不同。
58.而目标业务接口返回的目标数据为非文件数据还是文件,可以通过异步注解来说明。异步注解包括第一返回数据参数;第一返回数据参数指示:目标业务接口返回非文件数据;异步注解包括第二返回数据参数;第二返回数据参数指示:目标业务接口返回文件数据。
59.当目标数据为非文件数据时,将标识信息确定为非文件数据在目标数据库的查询关键词;将非文件数据及查询关键词保存至目标数据库。当目标数据为目标文件时,将目标文件保存至预设的文件服务器后,获取目标文件在文件服务器的位置信息,该文件信息可以由url或uri表示;并将标识信息确定为位置信息的查询关键词;将位置信息及查询关键词保存至目标数据库。当目标文件既包括非文件数据又包括文件时,可以分为两部分处理,对非文件数据采用将其保存至目标数据库的方式,对文件采用将其保存至文件服务器的方式。
60.本发明实施例还提供了另一种业务数据的获取方法,该方法应用于终端设备;终端设备与服务器通信连接;如图3所示,该方法包括以下步骤:
61.步骤s302,向服务器发送的数据获取请求,以使服务器调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行。
62.上述数据获取请求中可以包括终端设备的标识、用户信息等内容,以使服务器判断该请求是否合法,如果合法再调用与数据获取请求对应的目标业务接口。
63.步骤s304,接收服务器返回的接口调用成功消息。
64.在接收到接口调用成功消息,终端设备可以认为该数据获取请求的可以先跳过,继续执行其他业务操作,提高了对用户的请求的响应效率。
65.步骤s306,基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;目标数据由服务器通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作得到,并保存至目标数据库。
66.上述接口调用成功消息中通常包括服务器生成的用于获取数据获取请求对应的目标数据的标识信息。其中,该目标数据可以为业务数据,也可以为目标业务接口对应的业务操作的执行情况,如成功执行或失败。
67.上述数据查询指令需要与目标数据库对应的查询格式相对应,以使目标数据库响应于该查询指令,在服务器将目标数据存入目标数据库后,将目标数据发送至终端设备。
68.步骤s308,基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据。
69.从目标数据库查询到的与数据查询指令对应的数据可能已经被压缩,或者被编码,可以基于预先约定的数据处理方式,对数据进行处理,从而解析得到数据获取请求对应的目标数据。
70.当目标数据为占用内存空间较大的数据或为文件数据时,服务器可以仅在目标数据库中存储目标数据在其他存储空间的存储位置。终端设备可以基于该存储位置,进一步从目标数据所在的其他存储空间中获取到目标数据。
71.上述一种业务数据的获取方法,服务器接收终端设备发送的数据获取请求,调用
与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。该方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
72.下述实施例提供一基于接口调用成功消息,向目标数据库发送数据查询指令的实现方式。
73.当接收到接口调用成功消息后,由于服务器发送的接口调用成功消息中包括目标数据的标识信息,该标识信息可以作为目标数据在目标数据库中的关键词,该关键词可以为字符串或哈希值等。因此,终端设备可以将标识信息确定为查询关键词,然后基于查询关键词,按照目标数据库的查询格式生成数据查询指令,该查询指令中包括查询关键词,然后向目标数据库发送数据查询指令,以使目标数据库查询与该查询关键词对应的目标数据。如果服务器已经完成了目标业务端口对业务操作的执行,将得到的目标数据保存至目标数据库,则终端设备可以获取到目标数据。
74.下述实施例提供一基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的实现方式。
75.目标数据可以包括非文件数据和文件,由于服务器针对不同的目标数据有不同的保存方式,终端设备需要根据目标数据的保存方式,获取目标数据。
76.当目标数据为非文件数据时,由于服务器直接将目标数据保存之目标数据库,终端设备可以将从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的非文件数据。
77.当目标数据为目标文件时,由于服务器需要将目标文件保存至文件服务器,然后将目标文件在文件服务器中的保存地址保存至目标服务器,则终端设备需要将从目标数据库查询到的与数据查询指令对应的数据确定为数据获取请求对应的目标文件的位置信息,然后基于位置信息,从预设的文件服务器获取目标文件。
78.当目标文件既包括非文件数据又包括文件的时候,从目标数据库查询到的与数据查询指令对应的数据包括非文件数据及文件的位置信息,终端设备需要根据文件的位置信息,再从预设的文件服务器获取到文件。
79.本发明实施例还提供了另一种业务数据的获取方法,该方法在图1所示的方法基础上实现。该方法实现了在各种复杂业务场景下能够简单快速地实现业务逻辑异步执行的功能,能够在不修改原有业务逻辑的前提下实现异步。该方法采用了一个基于java语言实现的通用异步注解,以及这个异步注解详细的实现方式,旨在更简洁地在不改动原有业务代码的条件下实现通用异步功能。
80.如图4所示,采用上述方法时,前端(相当于上述“终端设备”)与后端(相当于上述“服务器”)通过以下方式交互:
81.1、在用户点击前端的相关控件后,前端会生成数据获取请求,发送至后端,从而通过后端的控制层(也称为“control层”)调用业务接口(相当于上述“目标业务接口”)。接口内部中会对耗时逻辑开启异步执行功能,在控制层调用业务层(也称为“service层”)开启
异步执行后,接口会立刻返回成功状态码给前端,前端显示接口执行成功。
82.2、后端的业务层执行异步操作,在开始执行之前会先生成一个随机码作为redis(remote dictionary server,即远程字典服务)的关键词(也称为“key”,相当于上述“标识信息”),将这个key返回给前端。前端在接收到标识信息后,要用这个key来从redis中取数据。然后后端就会开始异步执行耗时操作逻辑,执行完成后把数据存进redis中,如果涉及到文件下载,会把生成的文件存至专门的文件服务器中,文件在文件服务器中的uri(uniformresourceidentifier,统一资源标识符)会存入redis。
83.3、前端收到后端返回的redis的key后会循环请求redis,直到获取到该任务的执行状态。若执行状态为成功,则在获取状态的同时可以获取到任务返回的数据结果,如果返回结果涉及到文件,则前端通过redis的关键词获取到的除了结果数据还有文件的uri,获取到uri之后可以根据uri去文件服务器下载文件;若状态为执行失败,则能够获取到后台天执行实行失败抛出的异常信息。
84.其中,后端通用异步注解主要通过以下方式实现:
85.后端是使用微服务的架构来实现,在整个架构中有个通用模块(也称为“common模块”),其他的所有模块都可以使用通用模块中的工具,因此可以在通用模块中实现一个自定义注解,其他模块的接口标注上这个注解就能够实现前文所说的异步功能。
86.这个自定义注解是使用切面与自定义线程池相结合的方式实现的。
87.首先,在通用模块中添加一个asyncimpl切面。切面的作用是在原业务接口执行前后添加相关逻辑。主要添加的逻辑是生成redis的key,并将原接口的返回结果替换为key。具体而言,在通用模块中添加一个标注了@aspect注解的类,在这个类中实现一个标注了@around注解的方法。
88.然后,需要自定义一个线程池,这个线程池用来存放所有执行异步任务的线程。
89.最后,可以向业务接口添加异步注解asyncqdata。这个注解整合了前两步的切面与线程池,被这个注解标注的接口等同于在接口前后添加了一个asyncqdataimpl切面,正如第三部介绍,切面中的逻辑会使用线程池开启线程来执行接口原来的耗时逻辑,同时把生成的redis的key替换为接口的当前执行结果。这样如果前端调用这个接口,那接口能够立即返回一个redis的key给前端,并使用线程池开启线程在后台完成耗时任务,耗时任务执行的结果会写入redis。
90.下面将详细介绍异步注解的实现过程。主要分三个模块来介绍,分别是自定义线程池、自定义切面和自定义注解。
91.1、自定义线程池。在线程池中可以先配置好线程的基本信息,比如核心线程数、最大线程数、缓冲队列大小等参数,spring boot启动的时候会自动根据这些信息来加载线程池。如果业务中异步逻辑比较多,就需要把线程池的容量配置大一点,即增加核心线程数或缓冲队列的大小或最大线程数。核心线程是当异步逻辑开始执行时就能分配给业务执行的线程数量,缓冲队列的作用是当核心线程都分配完时用来存储待分配的任务,最大线程数是当缓冲队列也填满时还能够额外开启的用来执行异步任务的最大线程数量。
92.2、自定义切面。在整个系统中有很多接口,切面的作用是在执行当前接口前,取出当前接口上标注的所有注解(有些注解可能是用来实现其他功能),并判断是否标注了异步注解,如果标注了异步注解,则对这个接口执行异步逻辑。
93.除此之外,切面中还会生成redis的key和文件uri。切面生成一个redis key后,并把key作为结果返回给前端,前端收到key之后使用这个key来循环请求redis获取任务执行数据结果;如果任务结果会生成文件,切面依然会提前生成好redis key返回给前端,等文件生成好后会把文件存至文件服务器,然后把文件在服务器上的uri作为redis key对应的value存进redis,这时前端在轮询redis时会收到文件的uri,前端从redis中取出uri后就能够根据uri去文件服务器获取文件。以上就是切面的作用。
94.3、自定义注解。自定义注解中可以填写参数值(也成为“value”),参数值有两种形式(即上述“第一返回数据参数”及“第二返回数据参数”)。接口返回纯数据格式或返回文件格式,返回哪种形式的数据是在标记注解时指定的。如果标记了纯数据格式,那切面就会按照纯数据格式的逻辑去处理;如果标记了文件格式,那切面就会按照文件的逻辑,把文件上传至文件服务器并把文件uri存进redis。
95.上述方法可以带来以下有益效果:
96.1、通用性强。上述方法实现的是一个基于java语言的异步注解,原本非异步的接口只要标注上这个注解,不论接口原本返回什么样的数据格式,都能够实现异步功能。
97.2、能够在不入侵原业务代码的条件下实现异步功能。在一个庞大的系统中,如果需要修改业务代码,那么代价可能是非常大的,因为可能由此产生错误而影响系统执行。而本发明是使用注解的方式来实现异步功能,不修改原业务代码就能够实现异步功能。
98.3、维护方便。上述实现的异步注解的核心逻辑是写在微服务架构的通用模块中,如果需要修改通用异步逻辑只要改这个模块中的代码即可。
99.4、与业务代码解耦。编写业务代码的开发者无需关心异步的实现逻辑,如果需要实现异步功能,只需在接口上打上异步注解即可。
100.对于上述方法实施例,参见图5所示的本发明实施例提供了一种业务数据的获取装置,该装置设置于服务器;服务器与终端设备通信连接;该装置包括:
101.接口调用模块502,用于接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;
102.调用成功消息发送模块504,用于向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;
103.业务操作执行模块506,用于通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。
104.上述一种业务数据的获取装置,服务器接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。该方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
105.上述接口调用成功消息包括目标数据的标识信息;上述调用成功消息发送模块还用于:基于预设的算法生成目标数据的标识信息;将目标数据的标识信息发送至终端设备,以使终端设备将标识信息确定为查询关键词,基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
106.上述业务操作执行模块还用于:调用与目标业务接口的异步注解对应的预设线程池中的线程执行数据获取请求对应的业务操作。
107.上述目标数据对应于基于预设算法生成的标识信息;目标数据包括非文件数据;异步注解包括第一返回数据参数;第一返回数据参数指示:目标业务接口返回非文件数据;上述业务操作执行模块还用于:将标识信息确定为非文件数据在目标数据库的查询关键词;将非文件数据及查询关键词保存至目标数据库。
108.上述目标数据对应于基于预设算法生成的标识信息;目标数据包括目标文件;异步注解包括第二返回数据参数;第二返回数据参数指示:目标业务接口返回文件数据;上述业务操作执行模块还用于:将目标文件保存至预设的文件服务器,获取目标文件在文件服务器的位置信息;将标识信息确定为位置信息的查询关键词;将位置信息及查询关键词保存至目标数据库。
109.对于上述方法实施例,参见图6所示的本发明实施例提供了一种业务数据的获取装置,该装置设置于终端设备;终端设备与服务器通信连接;该装置包括:
110.数据获取请求发送模块602,用于向服务器发送的数据获取请求,以使服务器调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;
111.调用成功消息接收模块604,用于接收服务器返回的接口调用成功消息;
112.数据查询模块606,用于基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;目标数据由服务器通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库;
113.目标数据确定模块608,用于基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据。
114.上述一种业务数据的获取装置,服务器接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。该方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
115.上述接口调用成功消息包括目标数据的标识信息;上述数据查询模块还用于:将标识信息确定为查询关键词;基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
116.上述目标数据包括非文件数据;上述目标数据确定模块还用于:将从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的非文件数据。
117.上述接口调用成功消息包括目标数据的标识信息;目标数据包括目标文件;上述目标数据确定模块还用于:将从目标数据库查询到的与数据查询指令对应的数据确定为数据获取请求对应的目标文件的位置信息;基于位置信息,从预设的文件服务器获取目标文件。
118.本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述业务数据的获取方法。当该电子设备作为服务器时,可以执行如下的业务数据的获取方法:
119.接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。
120.上述方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
121.可选的,上述接口调用成功消息包括目标数据的标识信息;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令的步骤,包括:基于预设的算法生成目标数据的标识信息;将目标数据的标识信息发送至终端设备,以使终端设备将标识信息确定为查询关键词,基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
122.可选的,上述采用异步的方式执行数据获取请求对应的业务操作的步骤,包括:调用与目标业务接口的异步注解对应的预设线程池中的线程执行数据获取请求对应的业务操作。
123.可选的,上述目标数据对应于基于预设算法生成的标识信息;目标数据包括非文件数据;异步注解包括第一返回数据参数;第一返回数据参数指示:目标业务接口返回非文件数据;将目标数据保存至目标数据库的步骤,包括:将标识信息确定为非文件数据在目标数据库的查询关键词;将非文件数据及查询关键词保存至目标数据库。
124.可选的,上述目标数据对应于基于预设算法生成的标识信息;目标数据包括目标文件;异步注解包括第二返回数据参数;第二返回数据参数指示:目标业务接口返回文件数据;将目标数据保存至目标数据库的步骤,包括:将目标文件保存至预设的文件服务器,获取目标文件在文件服务器的位置信息;将标识信息确定为位置信息的查询关键词;将位置信息及查询关键词保存至目标数据库。
125.当该电子设备作为终端设备时,可以执行如下的业务数据的获取方法:
126.向服务器发送的数据获取请求,以使服务器调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;接收服务器返回的接口调用成功消息;基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;目标数据由服务器通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作得
到,并保存至目标数据库;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据。
127.上述方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
128.可选的,上述接口调用成功消息包括目标数据的标识信息;基于接口调用成功消息,向目标数据库发送数据查询指令的步骤,包括:将标识信息确定为查询关键词;基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
129.可选的,上述目标数据包括非文件数据;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的步骤,包括:将从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的非文件数据。
130.可选的,上述接口调用成功消息包括目标数据的标识信息;目标数据包括目标文件;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的步骤,包括:将从目标数据库查询到的与数据查询指令对应的数据确定为数据获取请求对应的目标文件的位置信息;基于位置信息,从预设的文件服务器获取目标文件。
131.参见图7所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述业务数据的获取方法。
132.进一步地,图7所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
133.其中,存储器101可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
134.处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。
135.本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指
令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述业务数据的获取方法。
136.本发明实施例所提供的一种业务数据的获取方法、装置以及电子设备,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法。当计算机可读存储介质存储于服务器时,可以执行如下的业务数据的获取方法:
137.接收终端设备发送的数据获取请求,调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作,得到数据获取请求对应的目标数据,将目标数据保存至目标数据库,以使终端设备从目标数据库中查询到数据获取请求对应的目标数据。
138.上述方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
139.可选的,上述接口调用成功消息包括目标数据的标识信息;向终端设备返回接口调用成功消息,以使终端设备基于接口调用成功消息,向目标数据库发送数据查询指令的步骤,包括:基于预设的算法生成目标数据的标识信息;将目标数据的标识信息发送至终端设备,以使终端设备将标识信息确定为查询关键词,基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
140.可选的,上述采用异步的方式执行数据获取请求对应的业务操作的步骤,包括:调用与目标业务接口的异步注解对应的预设线程池中的线程执行数据获取请求对应的业务操作。
141.可选的,上述目标数据对应于基于预设算法生成的标识信息;目标数据包括非文件数据;异步注解包括第一返回数据参数;第一返回数据参数指示:目标业务接口返回非文件数据;将目标数据保存至目标数据库的步骤,包括:将标识信息确定为非文件数据在目标数据库的查询关键词;将非文件数据及查询关键词保存至目标数据库。
142.可选的,上述目标数据对应于基于预设算法生成的标识信息;目标数据包括目标文件;异步注解包括第二返回数据参数;第二返回数据参数指示:目标业务接口返回文件数据;将目标数据保存至目标数据库的步骤,包括:将目标文件保存至预设的文件服务器,获取目标文件在文件服务器的位置信息;将标识信息确定为位置信息的查询关键词;将位置信息及查询关键词保存至目标数据库。
143.当计算机可读存储介质存储于终端设备时,可以执行如下的业务数据的获取方法:
144.向服务器发送的数据获取请求,以使服务器调用与数据获取请求对应的目标业务接口;目标业务接口预先标注有异步注解;异步注解用于指示:目标业务接口对应的业务操作通过异步的方式执行;接收服务器返回的接口调用成功消息;基于接口调用成功消息,向目标数据库发送数据查询指令;数据查询指令用于:查询数据获取请求对应的目标数据;目标数据由服务器通过目标业务接口,采用异步的方式执行数据获取请求对应的业务操作得
到,并保存至目标数据库;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据。
145.上述方式能够快速响应用户通过终端设备发出的数据获取请求,提高了用户体验。
146.可选的,上述接口调用成功消息包括目标数据的标识信息;基于接口调用成功消息,向目标数据库发送数据查询指令的步骤,包括:将标识信息确定为查询关键词;基于查询关键词生成数据查询指令,向目标数据库发送数据查询指令。
147.可选的,上述目标数据包括非文件数据;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的步骤,包括:将从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的非文件数据。
148.可选的,上述接口调用成功消息包括目标数据的标识信息;目标数据包括目标文件;基于从目标数据库查询到的与数据查询指令对应的数据,确定数据获取请求对应的目标数据的步骤,包括:将从目标数据库查询到的与数据查询指令对应的数据确定为数据获取请求对应的目标文件的位置信息;基于位置信息,从预设的文件服务器获取目标文件。
149.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
150.另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
151.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
152.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
153.最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之
内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献