[发明专利]数据请求处理方法及装置在审
申请号: | 201510077187.X | 申请日: | 2015-02-12 |
公开(公告)号: | CN104618493A | 公开(公告)日: | 2015-05-13 |
发明(设计)人: | 沈建荣;谭国斌;马哲 | 申请(专利权)人: | 小米科技有限责任公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京尚伦律师事务所 11477 | 代理人: | 代治国 |
地址: | 100085 北京市海淀区清*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据 请求 处理 方法 装置 | ||
技术领域
本公开涉及互联网技术领域,尤其涉及数据请求处理方法及装置。
背景技术
Web服务作为一个建立可互操作的分布式应用程序的新平台,对延时非常敏感。当前端不断地向服务器发出请求时,如果请求的数量峰值没有超过服务器后台数据处理的最大处理能力,则服务器可以处于很好的工作状态,而一旦前端请求的数量峰值超过了服务器后台数据处理的最大处理能力,且服务器并未做任何相应保护措施,这就使得累计的未处理请求越来越多,导致历史累计的超时请求达到一定的规模,形成恶性循环。服务器对这些超时请求所进行的处理都会因为超时而无效,对外呈现的服务能力也会为零,且这种情况无法自动恢复。服务器只能通过重启来缓解这种情况,但是重启后的服务器仍然会被汹涌的前端请求占满,从而导致服务器再一次过载,陷入“过载——重启”的恶性循环。
针对上述Web服务所面临的问题,目前采取一种清空请求队列的方式。具体来讲就是将接收到的前端请求都保存到队列中,当请求堆积到一定程度、且队列中的很多请求都超时时,就可以采取清空请求队列的方式。这种方法可以通过采取一定的监控方式来实现,例如模拟客户端的请求,每隔一段时间向服务器发送一些请求,如果大部分请求都能正常返回,说明后端处理系统正常,如果大部分请求都超时,则说明后台处理系统已经瘫痪,此时就需要清空请求队列,以暂时处理请求高峰期的情况。
然而,这种方式治标不治本,因为服务器后台处理的请求数量是一定的,当在请求高峰期时,即使清空请求队列,仍然会继续接收到大量汹涌而来的前端请求,导致大量堵塞而使服务器瘫痪,从而再次陷入“过载——重启”的恶性循环。
发明内容
为克服相关技术中存在的问题,本公开实施例提供一种数据请求处理方法及装置,用以在服务器处理数据请求的能力达到最大时,能够拒绝接收新的请求并采用其他有效方式处理新的请求。
根据本公开实施例的第一方面,提供一种数据请求处理方法,包括:
将获取数据的请求分配至线程中,开启所述线程处理所述请求;
当处于工作状态的线程数目等于第一数目时,如果接收到新的请求,则在接收到所述新的请求后的预设时长内,利用空闲线程或者第二服务器处理所述新的请求;其中,所述第一数目为预先为所述第一服务器设定的开启线程最大数目,所述空闲线程为所述处于工作状态的线程中从工作状态变更为空闲状态的线程。
本公开的实施例提供的技术方案可以包括以下有益效果:
该方案在处于工作状态的线程数目达到最大时,拒绝接收新的请求并利用空闲线程或者其他服务器来处理未超时的新的请求,使得服务器达到最大处理能力之后仍能处理接收到的新的请求,提高了服务器处理请求的效率。
在一个实施例中,所述处于工作状态的线程数目等于第一数目之前,所述方法还包括:
当处于工作状态的线程数目等于第二数目时,继续接收到请求,所述第二数目小于所述第一数目;
将继续接收到的请求添加至有界队列中,在添加的过程中,如果出现所述空闲线程,则将有界队列中的请求分配至出现的空闲线程进行处理;
当所述有界队列中的请求数量等于预设数量时,将所述有界队列中的请求分配至预设线程进行处理,直到处于工作状态的线程数目等于第一数目,所述预设线程包括出现的空闲线程、或者未被开启的线程。
该实施例中,采用阶梯式的分配方式将接收到的请求分配至线程中进行处理,提高了服务器处理请求的效率。
在一个实施例中,所述当处于工作状态的线程数目等于第一数目时,如果接收到新的请求,则在接收到所述新的请求后的预设时长内,利用空闲线程或者第二服务器处理所述新的请求,包括:
当处于工作状态的线程数目等于第一数目、且所述有界队列中的请求数量等于预设数量时,如果接收到新的请求,则在接收到所述新的请求后的预设时长内,利用空闲线程或者第二服务器处理所述新的请求。
该实施例中,在处于工作状态的线程数目达到最大数目、且有界队列中的请求数量也等于预设的最大数量时,拒绝处理新的请求,并采用空闲线程或者其他服务器来处理未超时的新的请求,使得服务器达到最大处理能力之后仍能处理接收到的新的请求,提高了服务器处理请求的效率。
在一个实施例中,所述如果接收到新的请求,则在接收到所述新的请求后的预设时长内,利用空闲线程处理所述新的请求,包括:
在接收到所述新的请求后的预设时长内,记录所述新的请求,并监测是否出现所述空闲线程;
当在所述预设时长内出现所述空闲线程时,将所述记录的新的请求分配至出现的空闲线程中进行处理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于小米科技有限责任公司;,未经小米科技有限责任公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510077187.X/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置