掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置及系统

文献发布时间:2023-06-19 11:19:16


数据处理方法、装置及系统

技术领域

本申请实施例涉及计算机应用技术领域,尤其涉及一种数据处理方法、装置及系统。

背景技术

随着互联网技术的发展,用户访问服务器,以获取数据的情况越来越多。系统需要处理的请求数量也在增加。在实际应用中,会存在大量用户同时访问服务器的情况,此时,系统需要处理大量请求,可能会超过系统处理请求的能力,从而影响系统稳定。

目前,为了保护系统稳定,在处理大量请求时,通常会采用限流的方法,例如可以为系统设置最大请求数量,当请求数量超过该最大请求数量时,拒绝对超出的请求进行处理,该方法无法有效进行请求处理,影响用户体验。

发明内容

本申请实施例提供一种数据处理方法、装置及系统,实现了对访问请求的有效处理。

第一方面,本申请实施例中提供了一种数据处理方法,包括:

接收多个访问请求;

判断所述多个访问请求的数量是否超过阈值;

若否,调用第一数量个线程处理所述多个访问请求;

若是,调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中;

调用第三数量个线程定时从所述至少一个队列中获取并处理所述剩余访问请求。

第二方面,本申请实施例中提供了一种数据处理装置,包括:

接收模块,用于接收多个访问请求;

判断模块,用于判断所述多个访问请求的数量是否超过阈值;

第一处理模块,若判断模块结果为否,用于调用第一数量个线程处理所述多个访问请求;

第二处理模块,若判断模块结果为是,用于调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中;

第三处理模块,用于调用第三数量个线程定时从所述至少一个队列中获取并处理所述剩余访问请求。

第三方面,本申请实施例中提供了一种数据处理系统,包括存储组件及处理组件;

所述存储组件存储一条或多条计算机程序指令;所述一条或多条计算机程序指令以供所述处理组件调用并执行;

所述处理组件用于:

接收多个访问请求;

判断所述多个访问请求的数量是否超过阈值;

若否,调用第一数量个线程处理所述多个访问请求;

若是,调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中;

调用第三数量个线程定时从所述至少一个队列中获取并处理所述剩余访问请求。

本申请实施例中,通过对访问请求的数量设置阈值,并判断接收到的多个访问请求是否超过该阈值,当超过阈值时,对于阈值数量个访问请求进行处理,并将未处理的剩余访问请求保存至至少一个队列中,以调用第三数量个线程定时从该至少一个队列中获取并处理访问请求,实现了对访问请求的处理,避免出现拒绝处理访问请求的情况,提高了用户体验。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本申请实施例或传统方案中的技术方案,下面将对实施例或传统方案描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请提供的一种数据处理方法一个实施例的流程图;

图2示出了本申请提供的一种数据处理装置一个实施例的结构示意图;

图3示出了本申请提供的一种数据处理系统一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

本申请实施例的技术方案可以应用于服务器处理访问请求的场景。随着用户访问服务器的情况越来越多。系统需要处理的请求数量也在增加。在实际应用中,会存在大量用户同时访问服务器的情况,此时,系统需要处理大量请求,可能会超过系统处理请求的能力,从而影响系统稳定。

目前,为了保护系统稳定,在处理大量请求时,通常会采用限流的方法,例如可以为系统设置最大请求数量,当请求数量超过该最大请求数量时,拒绝对超出的请求进行处理,该方法无法有效进行请求处理,影响用户体验。

因此,发明人经过一系列研究提出了本申请的技术方案,本申请实施例提供了一种数据处理方法,包括接收多个访问请求;判断所述多个访问请求的数量是否超过阈值;若否,调用第一数量个线程处理所述多个访问请求;若是,调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中;调用第三数量个线程定时从所述至少一个队列中获取并处理所述剩余访问请求。

通过对访问请求的数量设置阈值,并判断接收到的多个访问请求是否超过该阈值,当超过阈值时,对于阈值数量个访问请求进行处理,并将未处理的剩余访问请求保存至至少一个队列中,以调用第三数量个线程定时从该至少一个队列中获取并处理访问请求,实现了对访问请求的处理,避免出现拒绝处理访问请求的情况,提高了用户体验。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如图1所示,为本申请提供的一种数据处理方法一个实施例的流程图,该方法可以包括以下几个步骤:

101:接收多个访问请求。

本申请实施例中,该访问请求可以是由客户端发起,针对服务器端进行访问的请求,例如可以包括获取数据的请求等。其中,客户端可以配置在用户设备中,如手机、平板电脑、计算机设备等智能终端设备,例如可以是用户智能终端设备中的应用程序(Application,简称APP)等。

服务器端接收多个访问请求可以是,接收短时间内由多个客户端发起的访问请求。其中,该时间范围可以根据实际情况进行设置,例如可以是1秒钟内。

102:判断多个访问请求的数量是否超过阈值。

由于服务器端处理访问请求的能力受服务器的性能影响,为了确保服务器的性能稳定,可以预先为该服务器设置处理访问请求的数量阈值。例如,该阈值可以设置为十万,则可以表明服务器可以在1秒钟内最多处理十万个访问请求。

接收到多个访问请求之后,服务器端即可以确定该多个访问请求的数量。则在对该多个访问请求进行处理之前,服务器端可以对该多个访问请求的数量及阈值进行比较,从而判断该多个访问请求的数量是否超过阈值。

若该多个访问请求的数量没有超过阈值,以阈值是十万为例,该多个访问请求的数量例如可以是八万,则表明对该多个访问请求进行处理位于服务器的处理能力范围内,不会影响服务器性能的稳定性,可以执行步骤103的处理操作;若该多个访问请求的数量超过阈值,例如该多个访问请求的数量可以是二十万,则表明对该多个访问请求进行处理超出了服务器的处理能力范围,会影响服务器性能的稳定性,可以执行步骤104的操作。

103:若否,调用第一数量个线程处理多个访问请求。

若判断该多个访问请求的数量没有超过阈值,则表明对该多个访问请求的处理位于服务器的处理能力范围内,可以直接对该多个访问请求进行处理。

其中,服务器可以调用线程处理访问请求。具体地,为了提高访问请求的处理速度,可以调用多个线程进行处理。该多个线程的数量可以根据实际情况进行设置,为了便于描述,可以将该多个线程的数量称为第一数量。该第一数量例如可以是固定数值,或者还可以与访问请求的数量相同,由此可以调用第一数量个线程对该多个访问请求进行同步处理,提高处理效率。

104:若是,调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中。

若判断该多个访问请求的数量超过阈值,则表明对该多个访问请求的处理超出了服务器的处理能力范围,无法直接对全部的访问请求进行处理。此时,服务器可以优先处理阈值数量个访问请求,并将剩余访问请求放入至少一个队列中,以等待处理。

具体地,服务器在对阈值数量个访问请求进行处理也可以是调用多个线程进行处理。为了与前面描述的多个线程进行区分,可以将此处调用多个线程的数量称为第二数量。其中,第二数量也可以根据实际情况进行设置,该线程的数量可以与前面步骤中线程的数量一致,也可以不一致。例如,该第二数量与第一数量可以一致,也可以不一致,第二数量可以是固定数值,也可以与访问请求的数量相同,也即是与阈值数量相同等。

105:调用第三数量个线程定时从至少一个队列中获取并处理剩余访问请求。

其中,对于放入至少一个队列中的剩余访问请求进行处理时,可以是调用多个线程进行处理。为了与前面描述的多个线程进行区分,可以将此处调用多个线程的数量称为第三数量,该第三数量也可以根据实际情况进行设置。

由于该剩余访问请求的数量可以是较大的数值,则该第三数量可以小于该剩余访问请求的数量。因此,可以调用第三数量个线程对剩余访问请求进行定时处理,也即是定时从该至少一个队列中获取并处理剩余访问请求。例如可以是每隔0.1秒从至少一个队列中获取并处理剩余访问请求。

在实际应用中,为了提高调用多个线程对访问请求进行处理的处理效率,还可以采用调用线程池的方式来实现。其中,线程池可以包括多个线程,在执行处理任务时,可以从中选择一个空闲线程来执行处理任务,且在执行完成后,该线程可以返回线程池中成为空闲状态,等待执行下一个任务,避免持续创建和关闭线程,造成资源消耗。例如,可以调用线程池定时从至少一个队列中获取并处理剩余访问请求等。其中,对访问请求的处理过程将在后面部分进行详细说明。

本实施例中,通过对访问请求的数量设置阈值,并判断接收到的多个访问请求是否超过该阈值,当超过阈值时,对于阈值数量个访问请求进行处理,并将未处理的剩余访问请求保存至至少一个队列中,以调用第三数量个线程定时从该至少一个队列中获取并处理访问请求,实现了对访问请求的处理,避免出现拒绝处理访问请求的情况,提高了用户体验。

在实际应用中,由于服务器端接收到的访问请求数量较多,且需要将该多个访问请求的数量与阈值进行比较,则在某些实施例中,该方法还可以包括:

按照多个访问请求的发起顺序,利用计数器对多个访问请求进行计数。

由于各访问请求的发起顺序并不相同,则可以按照对应的发起顺序,利用计数器对多个访问请求进行计数。具体地,接收到下一个访问请求时,可以将计数器中的计数结果加1。其中,该计数结果可以保存在计数器中,该计数结果还可以用于确定接收到的访问请求的数量。

进一步地,该计数器中的计数结果可以基于接收到的访问请求数量进行累加,则处理完成一个访问请求时,该计数器中的计数结果可以减1。因此,在某些实施例中,该方法还可以包括:

基于当前处理完成的访问请求数量,更新计数器。

在实际应用中,由于服务器将未处理的访问请求放入了至少一个队列中以等待调用多线程进行处理,则为了确保访问请求处理的一致性,不受至少一个队列及多线程并发处理的干扰,可以利用与至少一个队列对应的至少一个计数器进行计数,其中,该至少一个计数器可以与至少一个队列一一对应。具体地,可以是利用每一个队列对应的计数器,基于该队列中处理完成的访问请求数量,更新该计数器。其中,该至少一个队列可以实现为分布式队列,与此对应的,该至少一个计数器可以实现为分布式计数器。

为了进一步提高访问请求处理的一致性,在某些实施例中,将未处理的剩余访问请求保存至至少一个队列中可以包括:

按照轮询方式,将未处理的剩余访问请求保存至至少一个队列中;

调用第三数量个线程定时从至少一个队列中获取并处理剩余访问请求可以包括:

按照轮询方式,调用第三数量个线程定时从至少一个队列中获取并处理剩余访问请求。

本申请实施例中,由于提供的队列为至少一个队列,则为了确保对访问请求处理的一致性,在将剩余访问请求保存至该至少一个队列以及从该至少一个队列中取出待处理的剩余访问请求时,可以按照轮询方式来实现。

例如,以提供的队列是三个队列为例,剩余访问请求可以包括a、b、c、d、e、f等。则将上述剩余访问请求保存至该三个队列中时,可以是将访问请求a保存至队列一,将访问请求b保存至队列二,将访问请求c保存至队列三,将访问请求d保存至队列一,将访问请求e保存至队列二等。与此对应的,调用多个线程从三个队列中获取上述剩余访问请求时,可以按照保存顺序,从队列一中获取访问请求a进行处理,从队列二中获取访问请求b进行处理,从队列三中获取访问请求c进行处理,从队列一中获取访问请求d进行处理,从队列二中获取访问请求e进行处理等,从而确保访问数据处理的一致性。

下面将对访问请求的处理过程进行详细的说明。以访问请求是获取数据的请求为例,服务器对访问请求进行处理,也即是从数据库中获取与该访问请求对应的请求数据,并将该请求数据返回至对应的客户端。在实际应用中,会存在多个访问请求一致的情况,此时服务器将会对同一访问请求进行重复处理,且重复访问数据库以获取同样的请求数据,容易造成资源浪费。因此,在某些实施例中,访问请求的处理过程可以包括:

查找缓存中是否存在访问请求对应的处理结果;

若是,将处理结果返回至相应请求端;

若否,处理访问请求获得处理结果,将处理结果返回至相应请求端,并将处理结果保存至缓存中。

本申请实施例中,接收到访问请求后,可以优先进行是否对该访问请求进行过处理的判断。若已经对该访问请求进行过处理,则可以直接获取对应的处理结果,否则对该访问请求进行处理。

具体地,对于处理过的访问请求,其对应的处理结果可以保存在缓存中。则上述判断过程可以实现为,查找缓存中是否存在访问请求对应的处理结果。若存在,则可以表明已经对该访问请求进行过处理,可以直接将缓存中的处理结果返回至相应的请求端,即客户端。若不存在,则可以表明并未对该访问请求进行过处理,此时可以处理访问请求并获得处理结果,将处理结果返回至相应请求端,并将处理结果保存至缓存中,以便于后续访问请求的处理。

实际应用中,该访问请求与其对应的处理结果可以由键值对的形式保存在缓存中,例如key-value。其中,key可以表示关键字,每一个访问请求都可以有各自的关键字,value可以表示值,与每一个访问请求对应的处理结果可以与值进行对应。则在对访问请求进行处理时,可以根据该访问请求的关键字查找缓存中是否存在与该关键字对应的值。

在实际应用中,该缓存可以包括本地缓存及非本地缓存等。非本地缓存可以包括远程字典服务(Remote Dictionary Server,简称Redis)缓存等。其中,Redis缓存由于其性能特点,可以确保处理分布式队列中访问请求的一致性。本地缓存及非本地缓存的选取可以根据实际情况进行设定。

通过查找缓存中是否存在与访问请求对应的处理结果,当存在时,无需对访问请求进行重复处理,直接将处理结果返回至相应的请求端,当不存在时,对访问请求进行处理并获得处理结果,将处理结果返回至相应请求端,并将处理结果保存至缓存中,避免了服务器对访问请求进行重复处理,提高了处理效率。

在实际应用中,为了确保上述处理方法可以顺利实现,在接收访问请求之前,该方法还可以包括:

基于用户的设置请求,确定队列数量和处理周期;

按照队列数量创建至少一个队列。

其中,在接收多个访问请求之前,可以对上述处理方法中涉及的参数进行配置。该参数可以包括服务器处理访问请求的数量阈值,至少一个队列的队列数量以及调用多个线程定时从至少一个队列中获取并处理剩余访问请求的处理周期等。基于用户针对上述参数的设置请求,可以确定阈值、队列数量及处理周期等。例如,阈值可以设置为10万,队列数量可以设置为3个,处理周期可以设置为0.1秒等。

则按照设置的队列数量,可以创建该至少一个队列,如创建3个队列。根据实际应用中的具体情况,可以对该队列数量进行修改。例如,若某一时间范围内,对服务器的访问请求较少,则可以减少该队列数量,如设置为2个;若某一时间范围内,对服务器的访问请求较多,设置的队列数量可能无法保存大量的访问请求,则可以增加队列数量,如设置为4个等,此处不进行具体限定。

进一步地,按照设置的处理周期,可以调用第三数量个线程定时从至少一个队列中获取并处理剩余访问请求。例如,可以调用第三数量个线程,每隔0.1秒从至少一个队列中获取并处理剩余访问请求。

如图2所示,为本申请提供的一种数据处理装置一个实施例的结构示意图,该装置可以包括以下几个模块:

接收模块201,用于接收多个访问请求;

判断模块202,用于判断多个访问请求的数量是否超过阈值;

第一处理模块203,若判断模块结果为否,用于调用第一数量个线程处理多个访问请求;

第二处理模块204,若判断模块结果为是,用于调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中;

第三处理模块205,用于调用第三数量个线程定时从至少一个队列中获取并处理剩余访问请求。

本实施例中,通过对访问请求的数量设置阈值,并判断接收到的多个访问请求是否超过该阈值,当超过阈值时,对于阈值数量个访问请求进行处理,并将未处理的剩余访问请求保存至至少一个队列中,以调用第三数量个线程定时从该至少一个队列中获取并处理访问请求,实现了对访问请求的处理,避免出现拒绝处理访问请求的情况,提高了用户体验。

在某些实施例中,该装置还可以包括:

计数模块,用于按照多个访问请求的发起顺序,利用计数器对多个访问请求进行计数。

在某些实施例中,该计数模块可以包括:

计数单元,用于利用至少一个计数器对至少一个队列中的剩余访问请求进行计数;至少一个计数器与至少一个队列对应。

在某些实施例中,该装置还可以包括:

更新模块,用于基于当前处理完成的访问请求数量,更新计数器。

在某些实施例中,处理模块还可以包括:

查找单元,用于查找缓存中是否存在访问请求对应的处理结果;

第一处理单元,若查找单元结果为是,用于将处理结果返回至相应请求端;

第二处理单元,若查找单元结果为否,用于处理访问请求获得处理结果,将处理结果返回至相应请求端,并将处理结果保存至缓存中。

在某些实施例中,第二处理模块204可以包括:

保存单元,用于按照轮询方式,将未处理的剩余访问请求保存至至少一个队列中;

第三处理模块205可以包括:

第三处理单元,用于按照轮询方式,调用第三数量个线程定时从至少一个队列中获取并处理访问请求。

如图3所示,为本申请提供的一种数据处理系统一个实施例的结构示意图,包括存储组件301及处理组件302;

存储组件301存储一条或多条计算机程序指令;该一条或多条计算机程序指令以供处理组件302调用并执行;

处理组件302用于:

接收多个访问请求;

判断多个访问请求的数量是否超过阈值;

若否,调用第一数量个线程处理多个访问请求;

若是,调用第二数量个线程处理阈值数量个访问请求,并将未处理的剩余访问请求保存至至少一个队列中;

调用第三数量个线程定时从至少一个队列中获取并处理剩余访问请求。

本实施例中,通过对访问请求的数量设置阈值,并判断接收到的多个访问请求是否超过该阈值,当超过阈值时,对于阈值数量个访问请求进行处理,并将未处理的剩余访问请求保存至至少一个队列中,以调用第三数量个线程定时从该至少一个队列中获取并处理访问请求,实现了对访问请求的处理,避免出现拒绝处理访问请求的情况,提高了用户体验。

其中,处理组件302可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

存储组件301被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对传统方案做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 通信系统、数据处理装置、服务器、数据处理方法、执行数据处理方法的程序和记录程序的记录媒体
  • 显示装置、升级装置、显示系统和显示系统的数据处理方法
技术分类

06120112881053