[发明专利]用于处理高并发请求的方法和系统在审
申请号: | 201910694039.0 | 申请日: | 2019-07-30 |
公开(公告)号: | CN110489694A | 公开(公告)日: | 2019-11-22 |
发明(设计)人: | 林世荣 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F16/958 | 分类号: | G06F16/958 |
代理公司: | 11315 北京国昊天诚知识产权代理有限公司 | 代理人: | 许振新;朱文杰<国际申请>=<国际公布> |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 散列 缓存 动态资源 读取 请求转发 写入成功 写入失败 请求方 服务器 并发 写入 响应 | ||
本公开涉及提供了一种用于处理高并发请求的方法和系统。所述方法包括:接收来自请求方的请求,所述请求包括对动态资源的请求;计算所述请求的散列值,所述散列值能唯一地标识所述请求;按乐观锁的方式将所述散列值写入缓存;如果所述写入成功,则将所述请求转发给动态资源服务器以供处理;以及如果所述写入失败,则尝试从缓存读取对所述请求的响应。
技术领域
本发明涉及用于处理高并发请求的方法和系统。
背景技术
当前的web服务器等系统开发一般采用前后端分离的形式,其中后端服务器负责数据提供服务,而由前端服务器控制页面跳转和数据调用。在系统开发规范不良的场景中,页面渲染可能会导致多次发送相同的数据请求,从而导致后端服务器计算资源、内存资源的浪费。
另外,web服务器系统对外调用的系统链路过长或系统业务处理逻辑过于复杂,将会导致对客户端的请求处理耗时较长。在这种情况下,如果相同的请求被同时多次发出,则web服务器处的缓存均未生效,使得多次处理该相同的请求,造成后端服务器资源的浪费。
另外,在恶意攻击场景中,恶意请求方也会瞬时对某一个动态资源(例如,动态网页)发起高频请求,从而导致后端服务器资源耗尽或数据库崩溃,使得服务不可用。
本公开正是针对但不限于上述缺陷作出的改进。
发明内容
根据本公开的第一方面,提供了一种用于处理高并发请求的方法,包括:接收来自请求方的请求,所述请求包括对动态资源的请求;计算所述请求的散列值,所述散列值能唯一地标识所述请求;按乐观锁的方式将所述散列值写入缓存;如果所述写入成功,则将所述请求转发给动态资源服务器以供处理;以及如果所述写入失败,则尝试从缓存读取对所述请求的响应。
根据一实施例,所述请求是HTTP请求,且所述方法由web服务器执行。
根据另一实施例,所述散列值是至少对所述HTTP请求中包括的如下部分应用散列函数来获得的:请求方法、请求URL、以及请求体。
根据又一实施例,所述写入包括:将所述散列值的版本号设为1来写入所述缓存,并且如果所述缓存中存在版本号大于等于1的相同散列值,则所述写入失败;否则,所述写入成功。
根据又一实施例,所述请求还包括对静态资源的请求。
根据又一实施例,所述方法还包括在所述写入成功的情况下,从所述动态资源服务器接收所请求的动态资源,将所述动态资源以及所请求的静态资源一起作为对所述请求的响应存储在所述缓存中,并将所述响应发送给所述请求方。
根据又一实施例,所述方法还包括将所述散列值与所述响应相关联地存储在所述缓存中。
根据又一实施例,所述缓存中存储的散列值具有相应的生存时间,并且所述生存时间是预定的或根据被请求的动态资源的属性来确定的。
根据又一实施例,所述方法还包括在相应散列值的生存时间期满之后,从所述缓存中清除该相应散列值以及相关联的响应。
根据又一实施例,所述方法还包括在所述写入失败的情况下,执行所述尝试达预定次数,直至从所述缓存成功读取对所述请求的响应,其中所述预定次数等于所述请求的超时时间除以单次请求处理时间。
根据又一实施例,所述方法还包括如果在所述预定次数内没有成功读取到对所述请求的响应,则向所述请求方发送请求超时通知;否则,将读取到的响应发送给所述请求方。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910694039.0/2.html,转载请声明来源钻瓜专利网。