幂等调用方法、装置和电子设备与流程
未命名
08-15
阅读:71
评论:0

1.本发明涉及数据处理技术领域,尤其是涉及一种幂等调用方法、装置和电子设备。
背景技术:
2.在游戏服务端存在多个功能模块,这些功能模块会调用一些通用接口,比如玩家属性计算、玩家信息推送等,这些接口的调用结果是幂等的,即,多次调用返回的是同样的结果。当一个耗时的幂等操作在短时间内被多次调用时,会造成服务器性能的浪费,例如,在一个玩家登录流程中,因为挂接了多个系统逻辑,可能会多次进行幂等操作,从而反复推送同一份玩家属性数据。
3.相关技术中,通常通过参数来控制在某个调用中是否执行某种幂等操作,但是该方式需要一个冗长的参数传递过程,且每个调用都要考虑这个参数的设置,在新的逻辑加入后,还需要考虑是否有重构的需求,从而增加了判断当前是否执行幂等操作调用的复杂度。
技术实现要素:
4.本发明的目的在于提供一种幂等调用方法、装置和电子设备,以在避免短时间内出现多个幂等调用的同时,降低控制短时间内仅出现一次幂等调用的操作复杂度。
5.第一方面,本发明提供了一种幂等调用方法,该方法包括:接收针对目标幂等调用的调用请求;判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口;其中,时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;在时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。
6.第二方面,本发明提供了一种幂等调用装置,该装置包括:请求接收模块,用于接收针对目标幂等调用的调用请求;窗口建立模块,用于判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口;其中,时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;函数调用模块,用于在时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。
7.第三方面,本发明提供了一种电子设备,改电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述幂等调用方法。
8.第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述幂等调用方法。
9.本发明实施例带来了以下有益效果:
10.本发明提供的一种幂等调用方法、装置和电子设备,首先接收针对目标幂等调用的调用请求;再判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目
标幂等调用对应的时间窗口,该时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;在该时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。该方式中,在首次接收到目标幂等调用时,开启目标幂等调用对应的时间窗口,在该时间窗口内,后续接收的目标幂等调用直接返回,然后在时间窗口达到指定延时时间时,调用一次目标幂等调用所调用的函数,该方式操作简单,同时可以避免短时间内执行多次幂等调用,降低了服务器的性能消耗。
11.本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
12.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
13.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
14.图1为本发明实施例提供的一种幂等调用方法的流程图;
15.图2为本发明实施例提供的另一种幂等调用方法的流程图;
16.图3为本发明实施例提供的一种幂等调用装置的结构示意图;
17.图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
18.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
19.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.在游戏服务端存在多个功能模块,这些功能模块会调用一些通用接口,比如玩家属性计算、玩家信息推送等,这些接口的调用结果是幂等的,即,多次调用返回的是同样的结果。例如,推送玩家的属性,多次推送的是同样的数据。
21.当一个耗时的幂等操作在短时间内被多次调用时,会造成服务器性能的浪费,例如,在一个玩家登录流程中,因为挂接了多个系统逻辑,可能会多次进行幂等操作,从而反复推送同一份玩家属性数据。
22.相关技术中,通常通过参数来控制在某个调用中是否执行某种幂等操作,例如:
23.login_check:
24.check_and_send_sys_1(send_info=false);
25.check_and_send_sys_2(send_info=false);
26.check_and_send_sys_3(send_info=false);
27.check_and_send_sys_4(send_info=true);
28.上述方式需要手动判断是否指定幂等操作,也即是手动保证短时间内只发送调用一次send_info(该send_info是一个布尔值,用来指示在调用函数内部是否需要发送信息)。上述程序中,前面三次调用都传入false,第四次调用则传入true,也即是在第四次调用中发送send_info。但是该方式需要一个冗长的参数传递过程,且每个调用都要考虑这个参数的设置,在新的逻辑加入后,还需要考虑是否有重构的需求,从而增加了判断当前是否执行幂等操作调用的复杂度。
29.基于上述问题,本发明实施例提供了一种幂等调用方法、装置和电子设备,该技术可以应用于函数调用的场景,尤其是幂等函数的调用场景中。
30.为了便于对本发明实施例进行理解,首先对本发明实施例公开的一种幂等调用方法进行详细介绍,如图1所示,该方法包括如下具体步骤:
31.步骤s102,接收针对目标幂等调用的调用请求。
32.在具体实现时,在用户进行账号登录或者数据查询时,可能会多次调用相同的数据,从而进行多次幂等调用。具体地,用户可以通过调用请求来调用幂等调用对应的数据,该调用请求可以是用户通过客户端发送的,也可以是在某一处理流程中,某一系统逻辑发送的。在实际应用中,针对调用的数据是否相同,可以将幂等调用分为多种,同种幂等调用所调用的数据相同,因而,上述目标幂等调用可以是多种幂等调用中的任意一种。
33.步骤s104,判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口;其中,时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理。
34.在具体实现时,在接收到目标幂等的调用请求时,首先需要判断服务端是否存在目标幂等调用对应的时间窗口,如果存在,则不做任何处理,等待下一个调用请求。如果服务端不存在目标幂等调用对应的时间窗口,会在服务端建立目标幂等函数对应的时间窗口,也可以理解为首次接收到针对目标幂等调用的调用请求时,服务端将开启目标幂等调用对应的时间窗口,在该时间窗口开启后,后续再次接收到针对目标幂等调用的调用请求时,直接返回。
35.在实际应用中,目标幂等调用对应的时间窗口用于对目标幂等调用进行延迟处理,从而可以在时间窗口的存在时间达到指定延时时间时,对目标幂等调用进行处理。上述指定延时时间可以根据研发需求设定,例如,该指定延时时间可以是20秒或者1分钟等。
36.步骤s106,在上述时间窗口存在的时间与指定延时时间相同时,关闭该时间窗口,并执行目标幂等调用所调用的函数。
37.当目标幂等调用对应的时间窗口在服务端中存在的时间与指定延时时间相同时,服务端会删除该时间窗口,然后发起对目标幂等调用所调用的函数的真实调用,从而执行所调用的函数,返回调用结果。该方式使用一种合批机制,使得在目标幂等调用对应的时间窗口内,对目标幂等调用所调用的函数只调用1次,即,在时间窗口关闭时,调用1次目标幂等调用所调用的函数,且多个调用者之间没有逻辑耦合。
38.本发明实施例提供的一种幂等调用方法,首先接收针对目标幂等调用的调用请
求;再判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口,该时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;在该时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。该方式中,在首次接收到目标幂等调用时,开启目标幂等调用对应的时间窗口,在该时间窗口内,后续接收的目标幂等调用直接返回,然后在时间窗口达到指定延时时间时,调用一次目标幂等调用所调用的函数,该方式操作简单,同时可以避免短时间内执行多次幂等调用,降低了服务器的性能消耗。
39.本发明实施例还提供了另一种幂等调用方法,该方法在上述实施例的基础上实现,该方法重点描述如果不存在时间窗口,建立目标幂等调用对应的时间窗口的具体过程(通过下述步骤s206-s208实现),以及在时间窗口存在的时间与指定延时时间相同时,关闭该时间窗口,并执行目标幂等调用所调用的函数的具体过程(通过下述步骤s212-s216实现),如图2所示,该方法包括如下具体步骤:
40.步骤s202,接收针对目标幂等调用的调用请求。
41.在实际应用中,在接收针对目标幂等调用的调用请求的步骤之前,需要根据目标幂等调用所调用的函数的函数名称和函数参数,确定目标幂等调用对应的调用识别码;其中,调用识别码用于建立目标幂等调用对应的时间窗口。具体地,研发人员需要预先通过程序,构建每种幂等调用对应的调用识别码,从而通过调用识别码建立相应的幂等调用对应的时间窗口。
42.在具体实现时,可以对目标幂等调用所调用的函数的函数名称和函数参数进行编码,得到字符串,并将该字符串确定为目标幂等调用对应的调用识别码。例如,可以将模块名、目标幂等调用所调用的函数的函数名称、函数参数(该函数参数包括参数类型和参数值)编码成一个字符串,将这个字符串作为目标幂等调用对应的调用id(该调用id相当于上述调用识别码),该调用id的生成代码如下所示:
[0043][0044]
其中,上述string cfile表示模块文件;上述mixed arrparam表示调用参数,该调用参数中包含有函数名称和函数参数;上述sprintf中%s_%s|%o"、cid、type(k)和k分别表示模块名、函数名称、参数类型和参数值,将这些参数进行编码输出,可得到用用于标识
一个幂等调用所有信息的调用识别码cid。
[0045]
步骤s204,判断是否存在目标幂等调用对应的时间窗口;如果不存在,执行步骤s206;否则执行s210。
[0046]
当接收到针对目标幂等调用的调用请求时,首先判断服务端中是否存在目标调用函数对应的时间窗口,如果不存在,会通过目标幂等调用对应的调用识别码开启目标幂等调用对应的时间窗口;如果存在则直接返回,等待接收下一个针对目标幂等调用的调用请求,和等待达到指定延时时间。
[0047]
步骤s206,注册目标定时器;其中,目标定时器用于设定指定延时时间。
[0048]
上述目标定时器主要是会对了为时间窗口在服务端的存在时间进行计时,也即是目标定时器将时间窗口在服务端的存在时间定时为指定延时时间。在具体实现时,每个幂等调用对应的时间窗口的指定延时时间可以相同,也可以不同,具体根据研发需求设定。
[0049]
步骤s208,使用目标定时器,回调预设召回函数并开启目标幂等调用对应的调用识别码的时间窗口,以建立目标幂等调用对应的时间窗口;其中,召回函数用于:在目标定时器达到指定延时时间时,查找目标幂等调用所调用的函数;执行步骤s212。
[0050]
在具体实现时,上述召回函数具体为哪个函数可以根据使用的编程语言决定。具体地,当服务端接收到针对目标幂等调用对应的调用请求时,会通过下述代码判断是否存在目标幂等调用对应的时间窗口,并在不存在目标幂等调用对应的时间窗口时,建立时间窗口:
[0051][0052][0053]
其中,mpcallcache[cid]表示目标幂等调用对应的时间窗口,也可以称为目标幂等调用的调用识别码对应的时间窗口;cid表示目标幂等调用对应的调用识别码;register_timer表示目标定时器,__file__表示模块,real_call表示召回函数,idelay表示指定延时时间。cmn_timer表示实现时间窗口的一种方式,该方式首先注册一个定时器,这个定时器回调__file__模块里的reall_call函数,定时器在idelay时间后触发,触发后以cid为参数调用real_call,以通过real-call函数找到幂等调用所调用的函数,然后指定所调用的函数,得到调用数据。
[0054]
步骤s210,则直接返回,不作任何处理。
[0055]
在具体实现时,需要先判断当前调用是否对应一个已存在的时间窗口,如果存在,则直接退出。
[0056]
步骤s212,在时间窗口存在的时间与指定延时时间相同时,查询目标幂等调用对应的时间窗口是否存在;如果存在,执行步骤s214,否则执行步骤s216。
[0057]
步骤s214,关闭上述时间窗口,通过召回函数调用目标幂等调用所调用的函数,并执行函数,得到执行结果。
[0058]
步骤s216,直接返回。
[0059]
在具体实现时,目标幂等调用所调用的函数,也即是目标幂等调用的调用识别码所对应的函数,也即是通过调用识别码中的函数名称可以找到对应的函数,从而通过调用识别码中的函数参数执行函数,得到执行结果。具体地,通过下述程序可实现,在目标幂等调用对应的时间函数结束时,调用目标幂等调用所调用的函数:
[0060][0061]
其中,在时间窗口结束时(也即是时间窗口到达指定延时时间时),召回函数real_call真正调用目标幂等调用的调用识别码cid所对应的函数调用(也即是目标幂等调用所调用的函数)。具体地,在时间窗口结束时,服务端试图查询目标幂等调用对应的时间窗口是否存在;不存在,直接返回(如果不存在,说明程序出现了漏洞,需要程序员进行修复);如果存在,通过map_delete(mpcallcache,cid)从服务端中删除时间窗口,然后通过call_other(arrwrap[0],arrwrap[1..《1])发起真实的调用,也即是调用目标幂等调用所调用的函数。
[0062]
在实际应用中,玩家属性全计算是很耗时的操作,在登录流程中,会多次触发玩家属性计算。在应用了本发明后,将玩家属性计算次数在指定延时时间内下降到了1次,从而降低了服务端的性能损耗。
[0063]
上述幂等调用方法,使用合批机制,在指定的时间窗口内,对特定的幂等调用只调
用1次,且多个调用者之间没有逻辑耦合,从而降低了服务端针对幂等调用的性能损耗,提高了服务端的性能,也保证了服务端中其他任务的处理速度。
[0064]
针对于上述方法实施例,本发明实施例还提供了一种幂等调用装置,如图3所示,该装置包括:
[0065]
请求接收模块30,用于接收针对目标幂等调用的调用请求。
[0066]
窗口建立模块31,用于判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口;其中,时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理。
[0067]
函数调用模块32,用于在时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。
[0068]
上述幂等调用装置,首先接收针对目标幂等调用的调用请求;再判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口,该时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;在该时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。该方式中,在首次接收到目标幂等调用时,开启目标幂等调用对应的时间窗口,在该时间窗口内,后续接收的目标幂等调用直接返回,然后在时间窗口达到指定延时时间时,调用一次目标幂等调用所调用的函数,该方式操作简单,同时可以避免短时间内执行多次幂等调用,降低了服务器的性能消耗。
[0069]
具体地,上述窗口建立模块31,还用于:如果存在目标幂等调用对应的时间窗口,则直接返回,不作任何处理。
[0070]
在具体实现时,上述装置还包括识别码确定模块,用于:在接收针对目标幂等调用的调用请求之前,根据目标幂等调用所调用的函数的函数名称和函数参数,确定目标幂等调用对应的调用识别码;其中,调用识别码用于建立目标幂等调用对应的时间窗口。
[0071]
进一步地,上述识别码确定模块,还用于:对目标幂等调用所调用的函数的函数名称和函数参数进行编码,得到字符串,将该字符串确定为目标幂等调用对应的调用识别码。
[0072]
在实际应用中,上述窗口建立模块31,还用于:如果不存在时间窗口,注册目标定时器;其中,目标定时器用于设定指定延时时间;使用目标定时器,回调预设召回函数并开启目标幂等调用对应的调用识别码的时间窗口,以建立目标幂等调用对应的时间窗口;其中,召回函数用于:在目标定时器达到指定延时时间时,查找目标幂等调用所调用的函数。
[0073]
进一步地,上述函数调用模块32,还用于:在时间窗口存在的时间与指定延时时间相同时,查询时间窗口是否存在;如果时间窗口存在,关闭该时间窗口,通过召回函数调用目标幂等调用所调用的函数,并执行函数,得到执行结果。如果时间窗口不存在,则直接返回。
[0074]
本发明实施例所提供的幂等调用装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0075]
本发明实施例还提供了一种电子设备,如图4所示,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述幂等调用方法。
circuit,简称asic)、现成可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
[0086]
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述幂等调用方法,具体实现可参见方法实施例,在此不再赘述。
[0087]
具体地,上述幂等调用方法,包括:接收针对目标幂等调用的调用请求;判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口;其中,时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;在时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。
[0088]
上述幂等调用方法中,在首次接收到目标幂等调用时,开启目标幂等调用对应的时间窗口,在该时间窗口内,后续接收的目标幂等调用直接返回,然后在时间窗口达到指定延时时间时,调用一次目标幂等调用所调用的函数,该方式操作简单,同时可以避免短时间内执行多次幂等调用,降低了服务器的性能消耗。
[0089]
在可选实施例中,上述方法还包括:如果存在目标幂等调用对应的时间窗口,则直接返回,不作任何处理。
[0090]
在可选实施例中,上述接收针对目标幂等调用的调用请求的步骤之前,上述方法还包括:根据目标幂等调用所调用的函数的函数名称和函数参数,确定目标幂等调用对应的调用识别码;其中,调用识别码用于建立目标幂等调用对应的时间窗口。
[0091]
在可选实施例中,上述根据目标幂等调用所调用的函数的函数名称和函数参数,确定目标幂等调用对应的调用识别码的步骤,包括:对目标幂等调用所调用的函数的函数名称和函数参数进行编码,得到字符串,将字符串确定为目标幂等调用对应的调用识别码。
[0092]
在可选实施例中,如果不存在时间窗口,建立目标幂等调用对应的时间窗口的步骤,包括:如果不存在时间窗口,注册目标定时器;其中,目标定时器用于设定指定延时时间;使用目标定时器,回调预设召回函数并开启目标幂等调用对应的调用识别码的时间窗口,以建立目标幂等调用对应的时间窗口;其中,召回函数用于:在目标定时器达到指定延时时间时,查找目标幂等调用所调用的函数。
[0093]
在可选实施例中,上述在时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数的步骤,包括:在时间窗口存在的时间与指定延时时间相同时,查询时间窗口是否存在;如果时间窗口存在,关闭时间窗口,通过召回函数调用目标幂等调用所调用的函数,并执行函数,得到执行结果;如果时间窗口不存在,则直接返回。
[0094]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0095]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0096]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
技术特征:
1.一种幂等调用方法,其特征在于,所述方法包括:接收针对目标幂等调用的调用请求;判断是否存在所述目标幂等调用对应的时间窗口;如果不存在所述时间窗口,建立所述目标幂等调用对应的时间窗口;其中,所述时间窗口用于:根据指定延时时间,对所述目标幂等调用进行延迟处理;在所述时间窗口存在的时间与所述指定延时时间相同时,关闭所述时间窗口,并执行所述目标幂等调用所调用的函数。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果存在所述目标幂等调用对应的时间窗口,则直接返回,不作任何处理。3.根据权利要求1所述的方法,其特征在于,所述接收针对目标幂等调用的调用请求的步骤之前,所述方法还包括:根据所述目标幂等调用所调用的函数的函数名称和函数参数,确定所述目标幂等调用对应的调用识别码;其中,所述调用识别码用于建立所述目标幂等调用对应的时间窗口。4.根据权利要求3所述的方法,其特征在于,所述根据所述目标幂等调用所调用的函数的函数名称和函数参数,确定所述目标幂等调用对应的调用识别码的步骤,包括:对所述目标幂等调用所调用的函数的函数名称和函数参数进行编码,得到字符串,将所述字符串确定为所述目标幂等调用对应的调用识别码。5.根据权利要求3所述的方法,其特征在于,所述如果不存在所述时间窗口,建立所述目标幂等调用对应的时间窗口的步骤,包括:如果不存在所述时间窗口,注册目标定时器;其中,所述目标定时器用于设定所述指定延时时间;使用所述目标定时器,回调预设召回函数并开启所述目标幂等调用对应的调用识别码的时间窗口,以建立所述目标幂等调用对应的时间窗口;其中,所述召回函数用于:在所述目标定时器达到所述指定延时时间时,查找所述目标幂等调用所调用的函数。6.根据权利要求5所述的方法,其特征在于,所述在所述时间窗口存在的时间与所述指定延时时间相同时,关闭所述时间窗口,并执行所述目标幂等调用所调用的函数的步骤,包括:在所述时间窗口存在的时间与所述指定延时时间相同时,查询所述时间窗口是否存在;如果所述时间窗口存在,关闭所述时间窗口,通过所述召回函数调用所述目标幂等调用所调用的函数,并执行所述函数,得到执行结果。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:如果所述时间窗口不存在,则直接返回。8.一种幂等调用装置,其特征在于,所述装置包括:请求接收模块,用于接收针对目标幂等调用的调用请求;窗口建立模块,用于判断是否存在所述目标幂等调用对应的时间窗口;如果不存在所述时间窗口,建立所述目标幂等调用对应的时间窗口;其中,所述时间窗口用于:根据指定延时时间,对所述目标幂等调用进行延迟处理;函数调用模块,用于在所述时间窗口存在的时间与所述指定延时时间相同时,关闭所
述时间窗口,并执行所述目标幂等调用所调用的函数。9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至7任一项所述的幂等调用方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1至7任一项所述幂等调用方法。
技术总结
本发明提供了一种幂等调用方法、装置和电子设备,首先接收针对目标幂等调用的调用请求;再判断是否存在目标幂等调用对应的时间窗口;如果不存在时间窗口,建立目标幂等调用对应的时间窗口,该时间窗口用于:根据指定延时时间,对目标幂等调用进行延迟处理;在该时间窗口存在的时间与指定延时时间相同时,关闭时间窗口,并执行目标幂等调用所调用的函数。该方式在首次接收到目标幂等调用时,开启目标幂等调用对应的时间窗口,在该时间窗口内,后续接收的目标幂等调用直接返回,然后在时间窗口达到指定延时时间时,调用一次目标幂等调用所调用的函数,该方式操作简单,同时可以避免短时间内执行多次幂等调用,降低了服务器的性能消耗。消耗。消耗。
技术研发人员:刘振华
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.03.21
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/