本发明涉及互联网技术领域,更具体地说,涉及一种数据请求处理方法和系统。
背景技术:
在分布式系统中,服务器根据前端发来的数据请求返回数据信息,并在前端发回反馈后判定此项数据请求已响应完毕。但是,当所述服务器同时响应的数据请求变多时,所述服务器的数据处理速度也将变慢,而与此同时仍不断有新的数据请求涌入,致使所述服务器同时响应的数据请求越来越多,一旦所述服务器同时响应的数据请求的数量超过所述服务器的最大承受量时,很有可能导致服务器系统瘫痪。
因此,如何有效提高服务器响应大量数据请求的能力,已成为本领域亟待解决的问题。
技术实现要素:
有鉴于此,本发明提供一种数据请求处理方法和系统,以提高服务器响应大量数据请求的能力。
一种数据请求处理方法,包括:
每接收到一个数据请求时,根据所述数据请求从数据文本中读取待发送的数据信息,存入数据库中,并在预先创建的第一链表中新增一个节点,所述节点内容包括:为所述数据库中当前存入的数据信息分配的一个唯一的标识,和为所述数据请求设置的超时时间;
响应所述数据请求,包括:将所述节点包含的标识所指向的数据信息返回发送所述数据请求的终端,并判断在所述节点包含的超时时间内是否接收到所述终端发回的反馈;
若是,将所述节点包含的标识所指向的数据信息从所述数据库中删除,并将所述节点从所述第一链表中删除;
若否,将所述节点移到预先创建的第二链表中,以停止响应所述数据请求;直至再次接收到所述数据请求时,将所述节点从所述第二链表移回所述第一链表中,并再次响应所述数据请求。
其中,所述数据库存放在外存储器上。
可选地,所述每接收到一个数据请求时,根据所述数据请求从数据文本中读取待发送的数据信息前,还包括:将数据文本导入内存。
其中,所述数据库为MySQL数据库。
可选地,所述再次响应所述数据请求前,还包括:更新所述节点包含的超时时间。
一种数据请求处理系统,包括预处理单元、请求响应单元、请求未超时处理单元和请求超时处理单元,其中:
所述预处理单元,用于在每接收到一个数据请求时,根据所述数据请求从数据文本中读取待发送的数据信息,存入数据库中,并在预先创建的第一链表中新增一个节点,所述节点内容包括:为所述数据库中当前存入的数据信息分配的一个唯一的标识,和为所述数据请求设置的超时时间;
所述请求响应单元,用于将所述节点包含的标识所指向的数据信息返回发送所述数据请求的终端;并判断在所述节点包含的超时时间内是否接收到所述终端发回的反馈,若是,触发所述请求未超时处理单元,若否,触发所述请求超时处理单元;
所述请求未超时处理单元,用于将所述节点包含的标识所指向的数据信息从所述数据库中删除,并将所述节点从所述第一链表中删除;
所述请求超时处理单元,用于将所述节点移到预先创建的第二链表中,以停止响应所述数据请求;直至再次接收到所述数据请求时,将所述节点从所述第二链表移回所述第一链表中,并触发所述请求响应单元。
其中,所述数据库存放在外存储器上。
可选地,所述数据请求处理系统还包括:读取单元,用于在所述预处理单元开始接收各数据请求前,首先将数据文本导入内存。
其中,所述数据库为MySQL数据库。
可选地,所述请求超时处理单元在触发所述请求响应单元前,还需要先更新所述节点包含的超时时间。
从上述的技术方案可以看出,在本发明中,服务器在响应各数据请求的同时还检测各数据请求是否响应超时,若某数据请求响应超时就对该数据请求做出标记,等待下次接收到该数据请求时再重新响应,这样可以将服务器同时响应的数据请求控制在一定数量内,以避免某些数据请求占用太长时间而导致服务器同时响应的数据请求不断积累并最终造成服务器超负荷崩溃,提高了服务器响应大量数据请求的能力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种数据请求处理方法流程图;
图2为本发明实施例公开的一种数据请求处理系统示意图;
图3为本发明实施例公开的又一种数据请求处理系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为参见图1,本发明实施例公开了一种数据请求处理方法,应用于服务器,以提高所述服务器响应大量数据请求的能力,包括:
步骤101:每接收到一个数据请求时,首先根据所述数据请求从数据文本中读取待发送的数据信息,存入数据库中。
所述数据库(所述数据库可以采用MySQL、Oracle、DB2或SQL Server等数据库,但考虑到MySQL数据库为开放源代码的数据库,应用最为广泛,因此本实施例以MySQL数据库作为优选)用于管理正在处理的数据信息。所述数据文本为最原始的数据文件,所述服务器根据接收到的每一个数据请求从所述数据文本中读取到的待发送的数据信息都要存入所述数据库中,之后才能对所述数据信息进行后续处理。
优选的,为提高读取速度,在所述步骤101执行之前,可先将所述数据文本导入内存,但并不局限。
优选的,所述数据库存放在外存储器上,以避免突然断电时发生数据丢失。
步骤102:在预先创建的第一链表中新增一个节点,本节点内容包括:为所述数据库中当前存入的数据信息分配的一个唯一的标识,和为所述数据请求设置的超时时间;
步骤103:将本节点包含的标识所指向的数据信息返回发送所述数据请求的终端;
列在所述第一链表上的各节点所对应的数据请求都是所述服务器当前正在响应的数据请求,若服务器当前正在响应的数据请求数量过多,很容易造成服务器超负荷崩溃。
步骤104:判断在本节点包含的超时时间内是否接收到所述终端发回的反馈;若在本节点包含的超时时间内接收到所述终端发回的反馈,进入步骤107;若没有接收到则进入步骤105。
从所述服务器根据接收到的数据请求返回数据信息,到所述服务器接收到发送所述数据请求的终端发回反馈,需要一定的时间,这段时间称为所述数据请求的响应时间。本实施例针对接收到的各个数据请求均设置了最大响应时间(所述最大响应时间又称为超时时间),对于任一数据请求来说,若服务器对该数据请求的实际响应时间超出该数据请求的最大响应时间,则视为该数据请求响应超时。
步骤105:将本节点移到预先创建的第二链表中,以停止响应所述数据请求;
步骤106:当再次接收到所述数据请求时,将本节点从所述第二链表移回所述第一链表中,返回步骤103。
对于所述第一链表中的任一节点来说,若该节点对应的数据请求超时,则服务器就将该节点从所述第一链表转移到所述第二链表中,列在所述第二链表上的各节点所对应的数据请求都是上次响应超时的数据请求,需等待下次接收到这一数据请求时再重新响应,以避免某些个数据请求占用太长时间而导致服务器同时处理的数据请求不断积累并最终造成服务器超负荷崩溃。
可选地,所述返回步骤103之前,还包括:更新本节点包含的超时时间。具体分析如下:所述服务器再次接收到所述数据请求时,也可以根据实际需要适当缩短或延长所述服务器上次响应所述数据请求时设置的超时时间,那么此时就需要在返回步骤103之前先更新本节点包含的超时时间。
需要说明的是,本实施例中各节点包含的超时时间指的是允许服务器响应对应数据请求的最大时长;而基于相同的发明构思,本领域技术人员可以想到的是:也可以将各节点包含的超时时间改为允许服务器响应对应数据请求的截止时刻,只是这样在每次接收到上次响应超时的数据请求时,都必须要重新设置其节点包含的截止时刻。
步骤107:将本节点包含的标识所指向的数据信息从所述数据库中删除,并将本节点从所述第一链表中删除;至此,此数据请求响应完毕。
由上述描述可以看出,在本实施例中,服务器在响应各数据请求的同时还检测各数据请求是否响应超时,若某数据请求响应超时就对该数据请求做出标记,等待下次接收到该数据请求时再重新响应,这样可以将服务器同时响应的数据请求控制在一定数量内,以避免某些个数据请求占用太长时间而导致服务器同时响应的数据请求不断积累并最终造成服务器超负荷崩溃,从而提高了服务器响应大量数据请求的能力。
此外,参见图2,本发明实施例公开了一种数据请求处理系统,以提高服务器响应大量数据请求的能力,包括预处理单元100、请求响应单元200、请求未超时处理单元300和请求超时处理单元400,其中:
预处理单元100,用于在每接收到一个数据请求时,根据所述数据请求从数据文本中读取待发送的数据信息,存入数据库中,并在预先创建的第一链表中新增一个节点,所述节点内容包括:为所述数据库中当前存入的数据信息分配的一个唯一的标识,和为所述数据请求设置的超时时间;
请求响应单元200,用于将所述节点包含的标识所指向的数据信息返回发送所述数据请求的终端;并判断在所述节点包含的超时时间内是否接收到所述终端发回的反馈,若是,触发请求未超时处理单元300,若否,触发请求超时处理单元400;
请求未超时处理单元300,用于将所述节点包含的标识所指向的数据信息从所述数据库中删除,并将所述节点从所述第一链表中删除;
请求超时处理单元400,用于将所述节点移到预先创建的第二链表中,以停止响应所述数据请求;直至再次接收到所述数据请求时,将所述节点从所述第二链表移回所述第一链表中,并触发请求响应单元200。
可选地,参见图3,所述数据请求处理系统还包括:读取单元500,用于在预处理单元100开始接收各数据请求前,首先将数据文本导入内存,以提高读取速度。
优选的,所述数据库存放在外存储器上。
优选的,所述数据库为MySQL数据库。
综上所述,在本发明中,服务器在响应各数据请求的同时还检测各数据请求是否响应超时,若某数据请求响应超时就对该数据请求做出标记,等待下次接收到该数据请求时再重新响应,这样可以将服务器同时响应的数据请求控制在一定数量内,以避免某些数据请求占用太长时间而导致服务器同时响应的数据请求不断积累并最终造成服务器超负荷崩溃,提高了服务器响应大量数据请求的能力。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。