[发明专利]一种并发访问请求的处理方法及装置有效
申请号: | 201310549721.3 | 申请日: | 2013-11-07 |
公开(公告)号: | CN103634374B | 公开(公告)日: | 2017-04-12 |
发明(设计)人: | 童燕群;李成林 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京同达信恒知识产权代理有限公司11291 | 代理人: | 黄志华 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 并发 访问 请求 处理 方法 装置 | ||
技术领域
本发明涉及计算机数据存储技术领域,尤其涉及一种并发访问请求的处理方法及装置。
背景技术
基于HTTP(Hyper Text Transfer Protocol,超文本传输协议)的对象存储技术迅速发展,而以容器Container和对象Object的两层业务模型为基础的对象存储技术,应用越来越广泛。
容器可以理解成一个特殊的顶层目录,对象可以是一个文件或者一个目录,对象隶属于容器。通常用户数据以对象方式、采用上层应用在底层分布式存储引擎上面建立对象存储的技术架构,存储于容器中。而容器中对象的个数是不加限制的,当容器内对象非常多时,会存在一个非常庞大的容器与对象之间的索引关系表。普通的单机数据库已经无法满足存储要求,因此一般选择基于弱一致性的存储引擎采用B树结构进行维护。
图1所示为一种简易的B树结构;图2所示为基于底层分布式存储引擎架设的对象存储系统。图1中B树结构的子数据块N1、N2、N3......可存储于图2中分布式存储引擎中的子节点1、2、3......中的一个或多个上,例如可以将子数据块N1存储在子节点2、子节点4和子节点6上。向B树结构中写入记录时,一般采用“读取-修改-写入”的过程。在图2中基于底层分布式存储引擎架设的对象存储系统上,则体现为客户端对数据资源发起访问请求,当访问得到数据资源后,对数据资源进行修改后再写回访问存储引擎中。该发起访问请求过程为:基于HTTP协议的客户端发送访问数据资源的访问请求,上层应用从接收到的访问请求中分析得出相关的容器和对象的元数据以及需要访问的数据资源,继而由上层应用对应的引擎访问代理向底层的分布式存储引擎请求数据资源。
在进行对象存储时,当存在多个客户端同时向同一容器内添加对象时,会造成B树结构中的子数据块成为热点。例如可能存在多个客户端同时需要将子数据块N1写入B树中,此时则会导致B树结构中的子数据块N1成为热点。体现在图2中的基于底层分布式存储引擎架设的对象存储系统上,则为多个客户端发起并发访问请求,使得多个引擎访问代理同时请求访问存储引擎中存储子数据块N1的子节点,造成底层存储引擎的并发访问冲突。如图3所示,假如子数据块N1存储在子节点6上,则上层应用APP1、APP2和APP3将分别通过各自对应的引擎访问代理同时请求访问子节点6。
基于弱一致性的存储引擎采用B树结构进行维护索引列表时,当底层存储引擎发生并发访问冲突时,底层分布式存储引擎会向上层应用返回数据冲突响应,并由上层应用根据具体的业务来选择重新写入。然而当有多个并发冲突时,则会影响B树结构的写入性能,甚至导致无法完成数据的重新写入,最终导致容器内的对象丢失。
因此,在基于底层分布式存储引擎架设的对象存储系统中,对于成为热点的数据资源进行并发访问请求时,如何避免并发访问冲突至关重要。
发明内容
本发明实施例提供一种并发访问请求的处理方法及装置,以避免并发访问冲突。
第一方面,提供一种并发访问请求的处理方法,包括:
接收对同一数据资源的至少两个并发访问请求,并对所述至少两个并发访问请求进行排序;
依照排序后的并发访问请求,依次访问所述同一数据资源。
结合第一方面,在第一种可能的实现方式中,对所述并发访问请求进行排序,包括:
在一个引擎访问代理中,对所述至少两个并发访问请求进行排序。
结合第一方面,在第二种可能的实现方式中,所述对所述至少两个并发访问请求进行排序,包括:
将存储引擎上的每个数据资源对应哈希键值,构成哈希空间;
划分哈希空间为N个子哈希空间,其中N为存储系统中引擎访问代理的数目;
将N个子哈希空间分配给N个引擎访问代理,使每一引擎访问代理被分配一个子哈希空间,且不同引擎访问代理被分配的子哈希空间不同;
根据所述至少两个并发访问请求访问的同一数据资源的哈希值所属的子哈希空间,确定对所述至少两个并发访问请求进行排序的引擎访问代理,得到排序引擎访问代理;
将不处于所述排序引擎访问代理上的访问请求,路由到所述排序引擎访问代理上,由所述排序引擎访问代理,对所述至少两个并发访问请求进行排序。
结合第一方面的第二种可能实现方式,在第三种可能的实现方式中,划分哈希空间为N个子哈希空间之后,该方法还包括:
监测引擎访问代理的数目,当引擎访问代理的数目发生变化时,重新划分哈希空间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310549721.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:便携式园林树木根际施肥施药机
- 下一篇:医科治疗床