Key-Value数据库用户请求的高速并发处理方法技术

技术编号:8959507 阅读:196 留言:0更新日期:2013-07-25 19:03
本发明专利技术公开了一种Key-Value数据库用户请求的高速并发处理方法,其实施步骤如下:1)接收用户请求并顺序加入请求缓冲队列;2)初始化键码分类排队表,持续按照先进先出的顺序从请求缓冲队列中弹出用户请求,根据用户请求中键码的不同分拣到不同待处理队列中,并将键码与待处理队列的映射关系添加至键码分类排队表中;3)初始化请求集合,持续弹出各待处理队列头部的用户请求至请求集合中,使用预设数量的工作者线程并行处理请求集合中的用户请求,并向用户返回处理结果。本发明专利技术具有并行处理细粒度高、并发处理能力强、硬件资源利用率高、多核处理器下各个处理器核负载均衡、能够保证读写依赖请求间顺序的优点。

【技术实现步骤摘要】

本专利技术涉及Key-Value数据库领域,具体涉及一种。
技术介绍
与SQL数据库不同,Key-Value数据库用于存储无结构的键值数据,即以键码(即Key)作为索引,读、写、删除Key对应的数据记录(即Value)。由于Key-Value数据库只关心通过Key索引Value的过程,不关心Value中存储的具体数据的结构和内容,因此相较于SQL数据库,功能更加专一、存取速度快、水平扩展性好。通常,Key-Value数据库的请求处理过程分为前端和后端两部分:通过网络等I/0输入接口接收请求的前端请求处理过程,通过后端数据处理引擎执行数据查询、存储的后端处理过程。其中,Key-Value数据库的前端负责对请求报文进行接收、校验请求报文后发往后端;Key_Value数据库的数据库后端负责按顺序逐个处理前端发来的请求,并查询、读写数据。目前,已有Key-Value数据库后端均支持多线程并发地进行数据库存取,但其并发性却直接受限于前端是否能够最大程度并发地向后端提供用户的存取请求。目前,已有Key-Value数据库对用户请求的并行处理粒度较粗。一般以用户连接为粒度,每个连接对应一个处理线程,进行并行处理。尽管这种方式对不同连接发送的请求是并行处理的,但对于同一个连接送入的请求仍旧以串行方式逐个处理,并行粒度较粗,且存在以下不足: I)在多核处理平台上,各个计算核之间工作负载可能出现不均衡情况。因为不同用户连接产生Key-Value数据请求的速率不同,因此各个连接对应的处理线程的闲忙程度不同,最终导致数据库在多核处理 平台上运行时,各个计算核的工作负载不同。2)同一连接发送的Key-Value数据请求的潜在并发性没得到充分发掘。这是因为即使是同一用户连接发送的请求,对Keyl的读写请求和对Key2的读写请求间由于不存在依赖关系,完全可以并发执行,但现有系统却无法有效发掘此类并发特性。
技术实现思路
本专利技术要解决的技术问题是提供一种并行处理细粒度高、并发处理能力强、硬件资源利用率高、多核处理器下各个处理器核负载均衡、能够保证读写依赖请求间顺序的。为了解决上述技术问题,本专利技术采用的技术方案为: 一种,其实施步骤如下: 1)接收用户请求并按接收顺序加入请求缓冲队列; 2)首先初始化用于存储键码与待处理队列之间一一映射关系的键码分类排队表,然后持续按照先进先出的顺序从所述请求缓冲队列中弹出用户请求,根据用户请求中键码的不同分拣到不同待处理队列中,并将键码与待处理队列的映射关系添加至所述键码分类排队表中; 3)首先初始化用于可并发处理的请求集合,然后持续弹出各个待处理队列头部的用户请求并加入至所述请求集合中,使用预设数量的工作者线程并行处理所述请求集合中的用户请求,并向用户返回处理结果。作为本专利技术上述技术方案的进一步改进: 所述步骤I)的详细实施步骤如下: 1.1)监控用户指定的网络端口,当有一个新的套接字用户连接建立后为对应的用户启动一个接收线程,通过各个用户对应的接收线程分别接收用户发出的用户请求; 1.2)将接收的用户请求附带上用户消息,然后按接收顺序添加到请求缓冲队列的头部。所述步骤2)的详细实施步骤如下: 2.1)初始化用于存储键码与待处理队列之间一一映射关系的键码分类排队表为空,跳转执行下一步; 2.2)判断所述请求缓冲队列是否为空,如果所述请求缓冲队列为空则继续等待直至请求缓冲队列非空,在请求缓冲队列非空时跳转执行下一步; 2.3)按照先进先出的原则,从所述请求缓冲队列的尾部弹出最先进入所述请求缓冲队列的用户请求,跳转执行下一步; 2.4)在所述键码分类排队表中查找是否有与被弹出用户请求的键码相对应的待处理队列,如果有则将被弹出用户请求添加到所述对应的待处理队列尾部,将被弹出用户请求的键码和所述待处理队列的映射关系添加至所述键码分类排队表中;否则,新建一个以被弹出用户请求为头的待处理队列,将被弹出用户请求的键码和新建待处理队列的映射关系添加至所述键码分类排队表中;跳转执行下一步; 2.5)跳转执行步骤2.2)。所述步骤3)的详细实施步骤如下: 3.1)初始化用于存储可并发处理用户请求的请求集合为空,跳转执行下一步; 3.2)检查所述键码分类排队表中是否有新增键码与待处理队列之间的映射关系,如果没有则继续等待直到所述键码分类排队表中有新增键码与待处理队列之间的映射关系,在所述键码分类排队表有新增键码与待处理队列之间的映射关系时则跳转执行下一步; 3.3)找出所述新增键码与待处理队列之间的映射关系,将所述新增的映射关系中键码所对应各个待处理队列头部的用户请求弹出并添加到所述请求集合中,跳转执行下一步; 3.4)判断预设数量的工作者线程是否启动,如果没有则启动预设数量的工作者线程;通过所述工作者线程并发执行所述请求集合中用户请求并返回执行结果,在所述请求集合中的所有用户请求被处理完毕后返回执行步骤3.2)。所述步骤3.4)中通过工作者线程并发执行所述请求集合中用户请求并返回执行结果的详细实施步骤如下: 3.4.1)判断所述请求集合是否为空,如果请求集合为空则等待;在所述请求集合非空时,跳转执行下一步; 3.4.2)从所述请求集合中随机取出一个用户请求作为当前用户请求发送给Key-Value数据库的后端数据处理引擎进行读写数据;3.4.3)将Key-Value数据库的后端数据处理引擎输出当前用户请求的执行结果返回给用户,在所述键码分类排队表中检查当前用户请求的键码对应的待处理队列中是否仍有用户请求,如果仍有用户请求则从所述对应的待处理队列的头部弹出一个用户请求并添加到所述请求集合中,如果没有用户请求则将当前用户请求的键码与对应的待处理队列的映射关系从所述键码分类排队表中删除; 3.4.4)跳转执行步骤3.4.1)。本专利技术具有下述优点: I)并行处理细粒度高、并发处理能力强、硬件资源利用率高、多核处理器下各个处理器核负载均衡。本专利技术根据用户请求中键码的不同,把取出的用户请求分拣到键码分类排队表的不同待处理队列中,实现将用户请求“先分拣”的步骤,通过“先分拣”使得不同待处理队列的用户请求由于键码不同,在并发执行不同待处理队列头部的用户请求时不会存在读写顺序依赖,因此能够从不同待处理队列的头部弹出并分发给多个工作者线程独立并发处理,能够实现以无读写顺序依赖关系的Key-Value数据请求为并发粒度进行处理的,而且经过“先分拣”步骤后的大量可并发请求在多核计算环境中时,能够最大限度的发挥多核CPU并发性能,且细粒度的并行处理使各个处理器核的工作负载也更为平均,具有并行处理细粒度高、并发处理能力强、硬件资源利用率高、多核处理器下各个处理器核负载均衡的优点。2)能够保证读写 依赖请求间顺序。本专利技术将接收的用户请求按照接收顺序添加到请求缓冲队列,且按照先进先出的顺序不断从请求缓冲队列中取出用户请求,键码分类排队表中的各个待请求队列是服从先进先出原则的,因此对于相同的键码,用户发送的用户请求的读写请求顺序可以得到保障,因此本专利技术在最大限度挖掘Key-Value数据请求处理并发特性的同时,也能够使有读写相关性的请求的依赖关系得到保证,从而使得有读写依赖的请求之间的顺序正确性能够本文档来自技高网
...

【技术保护点】
一种Key?Value数据库用户请求的高速并发处理方法,其特征在于实施步骤如下:1)接收用户请求并按接收顺序加入请求缓冲队列;2)首先初始化用于存储键码与待处理队列之间一一映射关系的键码分类排队表,然后持续按照先进先出的顺序从所述请求缓冲队列中弹出用户请求,根据用户请求中键码的不同分拣到不同待处理队列中,并将键码与待处理队列的映射关系添加至所述键码分类排队表中;3)首先初始化用于可并发处理的请求集合,然后持续弹出各个待处理队列头部的用户请求并加入至所述请求集合中,使用预设数量的工作者线程并行处理所述请求集合中的用户请求,并向用户返回处理结果。

【技术特征摘要】
1.一种Key-Value数据库用户请求的高速并发处理方法,其特征在于实施步骤如下: 1)接收用户请求并按接收顺序加入请求缓冲队列; 2)首先初始化用于存储键码与待处理队列之间一一映射关系的键码分类排队表,然后持续按照先进先出的顺序从所述请求缓冲队列中弹出用户请求,根据用户请求中键码的不同分拣到不同待处理队列中,并将键码与待处理队列的映射关系添加至所述键码分类排队表中; 3)首先初始化用于可并发处理的请求集合,然后持续弹出各个待处理队列头部的用户请求并加入至所述请求集合中,使用预设数量的工作者线程并行处理所述请求集合中的用户请求,并向用户返回处理结果。2.根据权利要求1所述的Key-Value数据库用户请求的高速并发处理方法,其特征在于,所述步骤I)的详细实施步骤如下: .1.1)监控用户指定的网络端口,当有一个新的套接字用户连接建立后为对应的用户启动一个接收线程,通过各个用户对应的接收线程分别接收用户发出的用户请求; . 1.2)将接收的用户请求附带上用户消息,然后按接收顺序添加到请求缓冲队列的头部。3.根据权利要求2所述的Key-Value数据库用户请求的高速并发处理方法,其特征在于,所述步骤2)的详细实施步骤如下: 2.1)初始化用于存储键码与待处理队列之间一一映射关系的键码分类排队表为空,跳转执行下一步; 2.2)判断所述请求缓冲队列是否为空,如果所述请求缓冲队列为空则继续等待直至请求缓冲队列非空,在请求缓冲队列非空时跳转执行下一步; 2.3)按照先进先出的原则,从所述请求缓冲队列的尾部弹出最先进入所述请求缓冲队列的用户请求,跳转执行下一步; 2.4)在所述键码分类排队表中查找是否有与被弹出用户请求的键码相对应的待处理队列,如果有则将被弹出用户请求添加到所述对应的待处理队列尾部,将被弹出用户请求的键码和所述待处理队列的映射关系添加至所述键码分类排队表中;否则,新建一个以被弹出用户请求为头的待处理队列,将被弹出用户请求的键码和新建待处理队列的映射关系添加至所...

【专利技术属性】
技术研发人员:李根王睿伯卢凯迟万庆冯华蒋杰刘勇鹏高颖慧唐宏伟樊葆华王小平
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1