一种请求数据处理方法和装置
文献发布时间:2023-06-19 11:39:06
技术领域
本发明涉及数据处理技术领域,具体涉及一种用于合并相同数据请求的请求数据处理方法和装置。
背景技术
当前的分布式系统中,上游系统请求下游系统后,把请求的结果缓存起来,当上游系统再次请求下游系统的时候,直接从缓存里面拿结果,是一种减少下游系统压力的常见方案。但这种方案有一个漏洞,就是当上游系统缓存不存在的时候,如果在高并发环境中,同时上游系统有大量的向下游的请求,会带来下游压力的陡增,从而引发故障。
发明内容
有鉴于此,本发明实施例提供一种请求数据处理方法和装置,以实现在上游系统向下游系统发送大量请求时,降低下游系统的处理压力。
为实现上述目的,本发明实施例提供如下技术方案:
一种请求数据处理方法,包括:
获取上游系统向下游系统发送的请求的目标参数;
采用预设算法对所述目标参数进行处理,得到与所述请求相匹配的请求ID;
基于请求ID相同的原则,对预设时间段内上游系统向下游系统发送的请求进行分组;
由每组请求中调取一个请求,发送至所述下游系统;
获取下游系统对所述请求的响应结果;
将各个请求的相应结果作为与其匹配的各组请求中的各个请求的响应结果。
可选的,上述请求数据处理方法中,获取上游系统向下游系统发送的请求的目标参数,包括:
判断上游系统是否存在缓存,当缓存不存在时,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
可选的,上述请求数据处理方法中,所述采用预设算法对所述目标参数进行处理,包括:
采用MD5算法对所述目标参数进行处理。
可选的,上述请求数据处理方法中,判定缓存不存在之后,对上游系统向下游系统发送的请求进行解析之前,还包括:
判断预设时间段内上游系统向下游系统发送的请求的数量是否大于预设值,如果是,继续执行。
可选的,上述请求数据处理方法中,当所述上游系统存在缓存时,判断缓存是否小于预设值,如果是,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
一种请求数据处理装置,包括:
请求处理单元,用于获取上游系统向下游系统发送的请求的目标参数;
ID解析单元,用于采用预设算法对所述目标参数进行处理,得到与所述请求相匹配的请求ID;
分组单元,用于基于请求ID相同的原则,对预设时间段内上游系统向下游系统发送的请求进行分组;
请求发送单元,用于由每组请求中调取一个请求,发送至所述下游系统;
响应结果处理单元,用于获取下游系统对所述请求的响应结果;将各个请求的相应结果作为与其匹配的各组请求中的各个请求的响应结果。
可选的,上述请求数据处理装置中,所述请求处理单元在获取上游系统向下游系统发送的请求的目标参数时,具体用于:
判断上游系统是否存在缓存,当缓存不存在时,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
可选的,上述请求数据处理装置中,所述ID解析单元在采用预设算法对所述目标参数进行处理时,包括:
采用MD5算法对所述目标参数进行处理。
可选的,上述请求数据处理装置中,所述请求处理单元还用于在判定缓存不存在之后,对上游系统向下游系统发送的请求进行解析之前,还包括:
判断预设时间段内上游系统向下游系统发送的请求的数量是否大于预设值,如果是,继续执行。
可选的,上述请求数据处理装置中,所述请求处理单元还用于:
当所述上游系统存在缓存时,判断缓存是否小于预设值,如果是,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
基于上述技术方案,本发明实施例提供的上述方案中,当上游系统向下游系统发送大量的请求时,先计算上游系统向下游系统下发的各个请求的请求ID,基于ID相同的原则对预设时间段内获取到的上游系统向下游系统下发的请求进行分组处理,将具有相同请求ID的请求划分为同一组,由每组请求中调取一个请求发送至所述下游系统中,下游系统只需针对每组请求反馈一个响应请求即可,由此,降低了下游系统的压力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的请求数据处理方法的流程示意图;
图2为本申请实施例提供的请求数据处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了防止上位系统有大量的向下游的请求时,会带来下游压力的陡增,从而引发故障的问题,本申请公开了一种请求数据处理方法,该方法可以应用于上游系统或下游系统中,方法包括:
步骤S101:获取上游系统向下游系统发送的请求的目标参数;
在本申请实施例公开的技术方案中,当监测到上游系统向下游系统发送的请求时,基于预设处理手段对所述上游系统向下游系统发送的请求进行处理,得到所述请求中所包含的目标参数。
步骤S102:采用预设算法对所述目标参数进行处理,得到与所述请求相匹配的请求ID;
在本方案中,当获取到所述目标参数以后,对所述目标参数进行处理后可以得到所述请求的标识数据,该标识数据用于表征所述请求的请求ID,在本方案中,每个请求均具有一个请求ID,且相同的请求的请求ID相同。例如在本方案中可以通过MD5算法对所述目标参数进行处理,计算得到与所述目标参数相匹配的Hash值,将该Hash值作为该请求对应的请求ID,当然,也可以采用其他处理方法或者是映射关系对所述请求进行处理,以确定该请求对应的请求ID。
在本方案中如果两个或两个以上的请求对应的目标参数相同,则这些请求对应的请求ID也就相同,基于此原理,可以反向推导两个请求是否是相同。
步骤S103:基于请求ID相同的原则,对预设时间段内上游系统向下游系统发送的请求进行分组;
由于相同请求的请求ID相同,在本步骤中,获取到预设时间段内的所有的请求的请求ID以后,基于请求ID相同的原则,对所述预设时间段内获取到的请求进行分类处理,划分为同一组的请求的请求ID相同。
在本方案中,所述预设时间段的时长可以基于用户需求自行设置,例如,其可以为300ms或其他。
步骤S104:由每组请求中调取一个请求,发送至所述下游系统;
需知的是,相同的请求对应的响应结果相同,在本方案中,当对所述请求进行分组以后,可以由每组请求中选择一个请求,发送至所述下游系统,而其他的每组请求中的其他请求无需发送至所述下游系统中,此时,降低了所述下游系统所需处理的请求的数量,降低了下游系统的压力。
步骤S105:获取下游系统对所述请求的响应结果;
在本方案中,下游系统在获取到步骤S104调取的请求以后,根据请求的参数决定用于处理该请求的业务逻辑,并生成对应的响应结果,在该过程中,所述下游系统仅对每组请求中的一个请求产生响应结果,例如,某组请求中有A、B、C、D四个请求,在步骤S104中选择将请求A发送至所述下游系统,此时,下游系统仅需生成与所述请求A对应的响应结果即可,无需处理所述B、C、D三个请求。
步骤S106:将各个请求的相应结果作为与其匹配的各组请求中的各个请求的响应结果;
在得到步骤S105中针对每组请求的响应结果以后,将该响应请求分配给每组请求内的各个请求,并将与各个请求对应的响应结果反馈给上游系统。
由上述技术方案可见,在本方案中,当上游系统向下游系统发送大量的请求时,先计算上游系统向下游系统下发的各个请求的请求ID,基于ID相同的原则对预设时间段内获取到的上游系统向下游系统下发的请求进行分组处理,将具有相同请求ID的请求划分为同一组,由每组请求中调取一个请求发送至所述下游系统中,下游系统只需针对每组请求反馈一个响应请求即可,由此,降低了下游系统的压力,避免故障。减少了网络流量,节约带宽成本。减少跨系统的调用次数,加快上游系统的返回效率。
在本申请另一实施例公开的技术方案中,如果所述上游系统具有缓存,则可以采用现有技术手段对上游系统向下游系统发送的请求进行处理,当上游系统存在缓存时,采用本申请实施例公开的技术方案对请求进行处理,即,获取上游系统向下游系统发送的请求的目标参数,具体包括:
判断上游系统是否存在缓存,当上游系统不存在缓存时,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
在本申请另一实施例公开的技术方案中,当上游系统向下游系统发送的请求的数量较少时,可以直接将请求发送至所述下游系统,而无需采用本申请实施例公开的上述方案对请求进行分析和处理,即,上述方案中,在判定缓存不存在之后,对上游系统向下游系统发送的请求进行解析之前,还包括:对上游系统向下游系统发送的请求的量进行统计,当判定预设时间段内上游系统向下游系统发送的请求的数量大于预设值时,如果是,继续执行动作对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数,以及后续动作,当所述预设时间段内上游系统向下游系统发送的请求的数量不大于预设值时,采用现有手段处理上游系统向下游系统发送的请求。
本实施例中,对应于上述方法,本申请公开了一种请求数据处理装置,装置中的各个单元的具体工作内容,请参见上述方法实施例的内容,下面对本发明实施例提供的请求数据处理装置进行描述,下文描述的请求数据处理装置与上文描述的请求数据处理方法可相互对应参照。参见图2,本申请实施例公开的请求数据处理装置,可以包括:
请求处理单元100,用于获取上游系统向下游系统发送的请求的目标参数;
ID解析单元200,用于采用预设算法对所述目标参数进行处理,得到与所述请求相匹配的请求ID;
分组单元300,用于基于请求ID相同的原则,对预设时间段内上游系统向下游系统发送的请求进行分组;
请求发送单元400,用于由每组请求中调取一个请求,发送至所述下游系统;
响应结果处理单元500,用于获取下游系统对所述请求的响应结果;将各个请求的相应结果作为与其匹配的各组请求中的各个请求的响应结果。
与上述方法相对应,所述请求处理单元在获取上游系统向下游系统发送的请求的目标参数时,具体用于:
判断上游系统是否存在缓存,当缓存不存在时,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
与上述方法相对应,所述ID解析单元在采用预设算法对所述目标参数进行处理时,包括:
采用MD5算法对所述目标参数进行处理。
与上述方法相对应,所述请求处理单元还用于在判定缓存不存在之后,对上游系统向下游系统发送的请求进行解析之前,还包括:
判断预设时间段内上游系统向下游系统发送的请求的数量是否大于预设值,如果是,继续执行。
与上述方法相对应,所述请求处理单元还用于:
当所述上游系统存在缓存时,判断缓存是否小于预设值,如果是,对上游系统向下游系统发送的请求进行解析,得到所述上游系统向下游系统发送的请求的目标参数。
为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 一种请求数据处理方法和装置
- 一种前端请求数据的处理方法及相关装置