[發明專利]Key-Value數據庫用戶請求的高速并發處理方法有效
| 申請號: | 201310164022.7 | 申請日: | 2013-05-07 |
| 公開(公告)號: | CN103218455A | 公開(公告)日: | 2013-07-24 |
| 發明(設計)人: | 李根;王睿伯;盧凱;遲萬慶;馮華;蔣杰;劉勇鵬;高穎慧;唐宏偉;樊葆華;王小平 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;G06F9/38 |
| 代理公司: | 湖南兆弘專利事務所 43008 | 代理人: | 趙洪;譚武藝 |
| 地址: | 410073 湖南省長沙市硯瓦池正*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | key value 數據庫 用戶 請求 高速 并發 處理 方法 | ||
技術領域
本發明涉及Key-Value數據庫領域,具體涉及一種Key-Value數據庫用戶請求的高速并發處理方法。
背景技術
與SQL數據庫不同,Key-Value數據庫用于存儲無結構的鍵值數據,即以鍵碼(即Key)作為索引,讀、寫、刪除Key對應的數據記錄(即Value)。由于Key-Value數據庫只關心通過Key索引Value的過程,不關心Value中存儲的具體數據的結構和內容,因此相較于SQL數據庫,功能更加專一、存取速度快、水平擴展性好。
通常,Key-Value數據庫的請求處理過程分為前端和后端兩部分:通過網絡等I/O輸入接口接收請求的前端請求處理過程,通過后端數據處理引擎執行數據查詢、存儲的后端處理過程。其中,Key-Value數據庫的前端負責對請求報文進行接收、校驗請求報文后發往后端;Key-Value數據庫的數據庫后端負責按順序逐個處理前端發來的請求,并查詢、讀寫數據。目前,已有Key-Value數據庫后端均支持多線程并發地進行數據庫存取,但其并發性卻直接受限于前端是否能夠最大程度并發地向后端提供用戶的存取請求。
目前,已有Key-Value數據庫對用戶請求的并行處理粒度較粗。一般以用戶連接為粒度,每個連接對應一個處理線程,進行并行處理。盡管這種方式對不同連接發送的請求是并行處理的,但對于同一個連接送入的請求仍舊以串行方式逐個處理,并行粒度較粗,且存在以下不足:
1)在多核處理平臺上,各個計算核之間工作負載可能出現不均衡情況。因為不同用戶連接產生Key-Value數據請求的速率不同,因此各個連接對應的處理線程的閑忙程度不同,最終導致數據庫在多核處理平臺上運行時,各個計算核的工作負載不同。
2)同一連接發送的Key-Value數據請求的潛在并發性沒得到充分發掘。這是因為即使是同一用戶連接發送的請求,對Key1的讀寫請求和對Key2的讀寫請求間由于不存在依賴關系,完全可以并發執行,但現有系統卻無法有效發掘此類并發特性。
發明內容
本發明要解決的技術問題是提供一種并行處理細粒度高、并發處理能力強、硬件資源利用率高、多核處理器下各個處理器核負載均衡、能夠保證讀寫依賴請求間順序的Key-Value數據庫用戶請求的高速并發處理方法。
為了解決上述技術問題,本發明采用的技術方案為:
一種Key-Value數據庫用戶請求的高速并發處理方法,其實施步驟如下:
1)接收用戶請求并按接收順序加入請求緩沖隊列;
2)首先初始化用于存儲鍵碼與待處理隊列之間一一映射關系的鍵碼分類排隊表,然后持續按照先進先出的順序從所述請求緩沖隊列中彈出用戶請求,根據用戶請求中鍵碼的不同分揀到不同待處理隊列中,并將鍵碼與待處理隊列的映射關系添加至所述鍵碼分類排隊表中;
3)首先初始化用于可并發處理的請求集合,然后持續彈出各個待處理隊列頭部的用戶請求并加入至所述請求集合中,使用預設數量的工作者線程并行處理所述請求集合中的用戶請求,并向用戶返回處理結果。
作為本發明上述技術方案的進一步改進:
所述步驟1)的詳細實施步驟如下:
1.1)監控用戶指定的網絡端口,當有一個新的套接字用戶連接建立后為對應的用戶啟動一個接收線程,通過各個用戶對應的接收線程分別接收用戶發出的用戶請求;
1.2)將接收的用戶請求附帶上用戶消息,然后按接收順序添加到請求緩沖隊列的頭部。
所述步驟2)的詳細實施步驟如下:
2.1)初始化用于存儲鍵碼與待處理隊列之間一一映射關系的鍵碼分類排隊表為空,跳轉執行下一步;
2.2)判斷所述請求緩沖隊列是否為空,如果所述請求緩沖隊列為空則繼續等待直至請求緩沖隊列非空,在請求緩沖隊列非空時跳轉執行下一步;
2.3)按照先進先出的原則,從所述請求緩沖隊列的尾部彈出最先進入所述請求緩沖隊列的用戶請求,跳轉執行下一步;
2.4)在所述鍵碼分類排隊表中查找是否有與被彈出用戶請求的鍵碼相對應的待處理隊列,如果有則將被彈出用戶請求添加到所述對應的待處理隊列尾部,將被彈出用戶請求的鍵碼和所述待處理隊列的映射關系添加至所述鍵碼分類排隊表中;否則,新建一個以被彈出用戶請求為頭的待處理隊列,將被彈出用戶請求的鍵碼和新建待處理隊列的映射關系添加至所述鍵碼分類排隊表中;跳轉執行下一步;
2.5)跳轉執行步驟2.2)。
所述步驟3)的詳細實施步驟如下:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310164022.7/2.html,轉載請聲明來源鉆瓜專利網。





