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

一种业务处理方法及装置、电子设备、存储介质与流程

2022-04-27 07:40:22 来源:中国专利 TAG:


1.本技术涉及互联网领域,特别涉及一种业务处理方法及装置、电子设备、存储介质。


背景技术:

2.住院系统单体运用在集群化部署过程中,服务内部存在定时任务需要调用外部系统的药品数据、药品库存,检查项目等信息,多节点下在同一时间下任务同时执行,会造成院内下的药房数据出现重复的药品目录信息;以及在弱网环境下,在住院医生核对医嘱时出现表单数据重复提交,医嘱下的开的药品,检查项目重复,也会导致需要大量的医务人员成本去删除重复的数据,进而造成人员的效率降低,时间成本增加,系统的不可靠性增加。
3.现有的基于服务集群化部署:普遍的方案是通过token令牌机制,在调用服务接口时,首先去请求后端生成token,将token存放到缓存redis-key中并返回给前端,前端表单提交需在header上携带该token去请求后端接口,这样可能造成用户恶意篡改大量token并发请求后端接口,导致系统负载过大,redis中短时间内存在大量无用key,甚至会造成服务端的不可用。以及现有的基于注解类的方式是通过切面思想,在目标方法进入之前去拦截校验调用方法之前的唯一标识符,亦是造成短时间内大量无效的唯一标识符,无法做到定制化,组件化形式,以及无法快速高效地集成到工程项目当中。


技术实现要素:

4.本技术实施例提供了一种业务处理方法,用于防止恶意大量的无用的重复业务请求,高效地提升系统的高可用、高扩展性、安全性等,使服务系统集群化部署更加安全、简洁、稳定,做到基于配置化,服务无侵入性的快速接入业务系统。
5.本技术实施例提供了一种业务处理方法,包括:
6.获取目标业务请求;
7.确定与所述目标业务请求对应的幂等函数,依据所述幂等函数判断是否获得所述目标业务请求对应的锁;
8.若是,执行目标业务请求对应的业务逻辑;
9.若否,返回异常信息。
10.在一实施例中,所述幂等函数基于mysql乐观锁;
11.所述依据所述幂等函数判断是否获得所述目标业务请求对应的锁,包括:
12.创建包括主键id和lock name的表结构;
13.对所述目标业务请求中的指定业务参数进行md5信息摘要算法计算,得到目标标识;
14.在已创建的锁记录表结构,查找是否存在对应于所述目标标识的锁记录表项;如果是,确定未获得所述目标业务请求对应的锁;
15.如果否,确定获得所述目标业务请求对应的锁,并创建与所述目标标识对应的锁
记录表项。
16.在一实施例中,所述幂等函数基于redission分布式锁;
17.所述依据所述幂等函数,判断是否获得所述目标业务请求对应的锁,包括:
18.对所述目标业务请求中的指定业务参数进行md5信息摘要算法计算,得到目标标识;
19.根据redission中try lock的接口判断是否存在所述目标标识对应的锁;
20.如果是,确定获得所述目标业务请求对应的锁;
21.如果否,确定未获得所述目标业务请求对应的锁。
22.在一实施例中,所述幂等函数基于zookeeper分布式锁;
23.所述依据所述幂等函数,判断是否获得所述目标业务请求对应的锁,包括:
24.对所述目标业务请求中的指定业务参数进行md5信息摘要算法计算,得到目标标识;
25.根据zookeeper中acquire的接口判断是否存在所述目标标识对应的锁;
26.如果是,确定获得所述目标业务请求对应的锁;
27.如果否,确定未获得所述目标业务请求对应的锁。
28.在一实施例中,所述确定与所述目标业务请求对应的幂等函数,包括:
29.根据所述目标业务请求对应的注解配置信息,确定所述幂等函数。
30.在一实施例中,所述注解配置信息包括扩展组件的开关;
31.在所述获取目标业务请求之前,所述方法还包括:
32.通过spring框架对所述扩展组件进行实例化,获得所述幂等函数注解的扩展组件。
33.在一实施例中,在所述通过spring框架对所述扩展组件进行实例化之前,所述方法还包括:
34.从所述spring框架的指定资源路径,加载所述扩展组件的组件资源包;
35.注入与所述扩展组件对应的配置类信息。
36.本技术实施例还提供了一种业务处理装置,包括:
37.请求获取模块,用于获取目标业务请求;
38.判断模块,用于确定与所述目标业务请求对应的幂等函数,依据所述幂等函数判断是否获得所述目标业务请求对应的锁;
39.业务逻辑执行模块,用于若是,执行目标业务请求对应的业务逻辑;
40.异常信息返回模块,用于若否,返回异常信息。
41.本技术实施例还提供了一种电子设备,所述电子设备包括:
42.处理器;
43.用于存储处理器可执行指令的存储器;
44.其中,所述处理器被配置为执行上述业务处理方法。
45.本技术实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述业务处理方法。
46.本技术上述实施例提供的技术方案,通过获取目标业务请求;确定与目标业务请求对应的幂等函数,依据幂等函数判断是否获得目标业务请求对应的锁;若是,执行目标业
务请求对应的业务逻辑;若否,返回异常信息,从而防止恶意大量无用请求,高效地提升系统的高可用、高扩展性、复用性等,使服务系统集群化部署更加安全、简洁、稳定,做到基于配置化,服务无侵入性的快速接入业务系统。
附图说明
47.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍。
48.图1为本技术一实施例提供的电子设备的结构示意图;
49.图2是本技术一实施例提供的业务处理方法的流程示意图;
50.图3是本技术一实施例提供的业务处理方法的流程示意图;
51.图4为本技术一实施例示出的业务处理装置的框图。
具体实施方式
52.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
53.相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
54.本技术中通过获取目标业务请求,确定与目标业务请求对应的幂等函数,依据幂等函数判断是否获得目标业务请求对应的锁,若是,执行目标业务请求对应的业务逻辑;若否,返回异常信息。
55.图1为本技术一实施例提供的电子设备的结构示意图。该电子设备可以用于执行本技术实施例提供的业务处理方法。如图1所示,该电子设备100包括:一个或多个处理器102,一个或多个存储处理器可执行指令的存储器104,其中,所述处理器102被配置为执行本技术下述实施例提供的业务处理方法。
56.所述处理器102可以是网关,也可以为智能终端,或者是包含中央处理单元(cpu)、图像处理单元(gpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元的设备,可以对所述电子设备100中的其它组件的数据进行处理,还可以控制所述电子设备100中的其它组件以执行期望的功能。
57.所述存储器104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的业务处理方法。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
58.在一实施例中,图1所示电子设备100还可以包括输入装置106、输出装置108以及数据采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
59.所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。所述数据采集装置110可以采集对象的图像,并且将所采集的图像存储在所述存储器104中以供其它组件使用。示例性地,该数据采集装置110可以为摄像头。
60.在一实施例中,用于实现本技术实施例的业务处理方法的示例电子设备中的各器件可以集成设置,也可以分散设置,诸如将处理器102、存储器104、输入装置106和输出装置108集成设置于一体,而将数据采集装置110分离设置。
61.在一实施例中,用于实现本技术实施例的业务处理方法的示例电子设备可以被实现为诸如智能手机、平板电脑、智能手表、车载设备等智能终端。
62.图2为本技术一实施例提供的业务处理方法的流程示意图。如图2所示,该方法可以包括以下步骤s210-s240。
63.步骤s210:获取目标业务请求。
64.服务端获取目标业务请求。目标业务如住院系统里开处方的业务,此处不做限定。
65.步骤s220:确定与目标业务请求对应的幂等函数,依据幂等函数判断是否获得目标业务请求对应的锁。若是,则执行步骤s230;若否,则执行步骤s240。
66.服务端获取目标业务请求后,确定与目标业务请求对应的幂等函数,其中,幂等函数包括:mysql、redission和zookeeper相应的幂等实现类。依据幂等函数判断是否获得目标业务请求对应的锁,其中,目标业务请求对应的锁包括:mysql乐观锁、redis分布式锁和zookeeper分布式锁。若是,则执行步骤s230;若否,则执行步骤s240。
67.步骤s230:执行目标业务请求对应的业务逻辑。
68.根据步骤s220中所述,依据幂等函数判断是否获得目标业务请求对应的锁,若是,则获得目标业务请求对应的锁,执行目标业务请求对应的业务逻辑。
69.步骤s240:返回异常信息。
70.根据步骤s220中所述,依据幂等函数判断是否获得目标业务请求对应的锁,若否,则未获得目标业务请求对应的锁,返回异常信息,表示存在重复提交的异常信息,此处不做限定。
71.图3为本技术一实施例提供的业务处理方法的流程示意图。如图3所示,该方法可以包括以下步骤s310-s380。
72.步骤s310:从spring框架的指定资源路径,加载扩展组件的组件资源包。
73.首先定义spring框架扩展类,扩展类为idemconnectorbeaninject,然后通过spring框架的spring.factory文件装配org.springframework.boot.autoconfigure.enableautoconfiguration=xxx(扩展类名),根据spring框架提供的@enableautoconfiguration,以及@enableautoconfiguration提供的spi扩展,通过spring.factory loader抽象类加载资源路径meta_info/spring.factories,其静态方法loadfactories可加载扩展组件的组件资源包。其中,组件资源包为组件jar包,资源路径是组件jar包的存储地址,类似于内路径、相对路径、绝对路径的地址,此处不做限定。
74.步骤s320:注入与扩展组件对应的配置类信息。
75.注入与扩展组件对应的配置类信息。其中,配置类信息包括:扩展组件的创建连接
实体类信息、组件的host主机信息、port端口号、账号、密码等,以及注入相对应扩展组件的管理相关api实现类。其中,api为应用程序接口。
76.步骤s330:通过spring框架对扩展组件进行实例化,获得幂等函数注解的扩展组件。
77.通过对spring框架加入组件开关pre前缀字段xw-idempoent、idempoent为前缀,进而对扩展组件进行实例化,获得幂等函数mysql、redission和zookeeper注解的扩展组件。其中,扩展组件的功能包括:is_print:加入是否打印日志、idempoent-name:加入幂等锁的类型,其中,幂等锁的类型为mysql乐观锁、redis分布式锁和zookeeper分布式锁等。
78.步骤s340:获取目标业务请求。详细参见上述实施例中对步骤s210的描述,此处不做赘述。
79.步骤s350:根据目标业务请求对应的注解配置信息,确定幂等函数。
80.根据目标业务请求对应的注解配置信息,其中,注解配置信息为@interface idempotentlimit(functionname,int second,string des),interface idempotentlimit为注解名;functionname为方法名;int second为某时间内请求次数,例如second=5,则表示5s内只能请求一次,其他的请求会被重复过滤掉;string des为快速响应默认值,表示快速响应重复提交的异常信息。注解配置信息包括扩展组件的开关。根据上述注解配置信息,确定幂等函数,幂等函数包括:mysql、redission和zookeeper相应的幂等实现类。
81.步骤s360:依据幂等函数判断是否获得目标业务请求对应的锁。
82.依据幂等函数判断是否获得目标业务请求对应的锁,其中,目标业务请求对应的锁为mysql乐观锁、redis分布式锁和zookeeper分布式锁。若依据幂等函数判断获得目标业务请求对应的锁,则执行步骤s370;若依据幂等函数判断未获得目标业务请求对应的锁,则执行步骤s380。
83.步骤s370:执行目标业务请求对应的业务逻辑。
84.详细参见上述实施例中对步骤s230的描述,此处不做赘述。
85.步骤s380:返回异常信息。
86.详细参见上述实施例中对步骤s240的描述,此处不做赘述。
87.在一实施例中,幂等函数mysql基于mysql乐观锁;依据幂等函数mysql判断是否获得目标业务请求对应的锁mysql乐观锁,包括:创建包括主键id和lock name的表结构;对目标业务请求中的指定业务参数以及业务方法相结合,进行md5信息摘要算法计算,得到目标标识key;其中,指定业务参数可以为方法名和请求参数名,在已创建的锁记录表结构,通过select*from fu_distribute_lock where lock_name=?for update来查找是否存在对应于目标标识key的锁记录表项,锁记录表项中可以设置有效时间;如果是,确定未获得目标业务请求对应的锁mysql乐观锁;如果否,确定获得目标业务请求对应的锁mysql乐观锁,并创建与目标标识对应的锁记录表项。
88.在一实施例中,幂等函数redission基于redission分布式锁;依据幂等函数redission,判断是否获得目标业务请求对应的锁redission分布式锁,包括:对目标业务请求中的指定业务参数进行md5信息摘要算法计算,其中,指定业务参数可以为方法名和请求参数名,得到目标标识key;根据redission中try lock的接口redisclient.try lock(

key’,timeunit unit),来判断是否存在目标标识key对应的锁;如果是,确定获得目标业
务请求对应的锁redission分布式锁;如果否,确定未获得目标业务请求对应的锁redission分布式锁。
89.在一实施例中,幂等函数zookeeper基于zookeeper分布式锁;依据幂等函数,判断是否获得目标业务请求对应的锁,包括:对目标业务请求中的指定业务参数进行md5信息摘要算法计算,其中,指定业务参数可以为方法名和请求参数名,得到目标标识key;根据zookeeper中acquire的接口zkclient.acquire(

key’,timeunit.seconds)来判断是否存在目标标识key对应的锁;如果是,确定获得所述目标业务请求对应的锁zookeeper分布式锁;如果否,确定未获得所述目标业务请求对应的锁zookeeper分布式锁。
90.下述为本技术装置实施例,可以用于执行本技术上述业务处理方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术业务处理方法实施例。
91.图4为本技术一实施例示出的业务处理装置的框图。如图4所示,该装置包括请求获取模块410,判断模块420,业务逻辑执行模块430,异常信息返回模块440。
92.请求获取模块410,用于获取目标业务请求;
93.判断模块420,用于确定与目标业务请求对应的幂等函数,依据幂等函数判断是否获得目标业务请求对应的锁;
94.业务逻辑执行模块430,用于若是,执行目标业务请求对应的业务逻辑;
95.异常信息返回模块440,用于若否,返回异常信息。
96.上述装置中各个模块的功能和作用的实现过程具体详见上述业务处理方法中对应步骤的实现过程,在此不再赘述。
97.在本技术所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
98.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
99.功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献