[發(fā)明專利]一種內(nèi)核態(tài)的數(shù)據(jù)訪問方法、裝置及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201310557075.5 | 申請日: | 2013-11-11 |
| 公開(公告)號: | CN103544324B | 公開(公告)日: | 2017-09-08 |
| 發(fā)明(設(shè)計)人: | 李建國 | 申請(專利權(quán))人: | 北京搜狐新媒體信息技術(shù)有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京集佳知識產(chǎn)權(quán)代理有限公司11227 | 代理人: | 王寶筠 |
| 地址: | 100084 北京市海淀區(qū)*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 內(nèi)核 數(shù)據(jù) 訪問 方法 裝置 系統(tǒng) | ||
技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種內(nèi)核態(tài)的數(shù)據(jù)訪問方法、裝置及系統(tǒng)。
背景技術(shù)
在互聯(lián)網(wǎng)應(yīng)用中,服務(wù)器中大量的相同的數(shù)據(jù)被多個客戶端反復(fù)訪問,給服務(wù)器中的數(shù)據(jù)庫帶來很大的壓力。為了減輕數(shù)據(jù)庫的負(fù)載,目前主要采用memcached分布式內(nèi)存對象緩存系統(tǒng),將數(shù)據(jù)庫中多次被訪問的數(shù)據(jù)緩存在內(nèi)存中,客戶端通過memcached訪問數(shù)據(jù)庫,當(dāng)memcached中沒有客戶端訪問的數(shù)據(jù)時,memcached從數(shù)據(jù)庫中獲取客戶端所訪問的數(shù)據(jù)發(fā)送到客戶端,并緩存數(shù)據(jù);當(dāng)memcached中有客戶端訪問的數(shù)據(jù)時,客戶端直接從memcached中獲得所訪問的數(shù)據(jù),不再去數(shù)據(jù)庫中訪問所需要的數(shù)據(jù),從而減少了客戶端訪問數(shù)據(jù)庫的次數(shù),減輕了數(shù)據(jù)庫的負(fù)載。
Memcached系統(tǒng)工作在操作系統(tǒng)的用戶態(tài),而操作系統(tǒng)處理客戶端的數(shù)據(jù)訪問請求事件是由操作系統(tǒng)的內(nèi)核態(tài)處理,因此,處理器(CPU)在處理客戶端通過網(wǎng)絡(luò)訪問memcached的數(shù)據(jù)事件時,需要在用戶態(tài)和內(nèi)核態(tài)之間不斷切換,消耗大量的時間,降低服務(wù)器處理客戶端請求的速度。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種內(nèi)核態(tài)的數(shù)據(jù)訪問方法、裝置及系統(tǒng),從內(nèi)核態(tài)的緩存空間獲取客戶端請求的數(shù)據(jù)信息,無需從用戶態(tài)的memcached中獲取數(shù)據(jù)信息,避免CPU在用戶態(tài)和內(nèi)核態(tài)之間不斷切換。
一種內(nèi)核態(tài)的數(shù)據(jù)訪問方法,應(yīng)用于內(nèi)核態(tài)系統(tǒng),所述方法包括:
與客戶端建立通信連接;
接收客戶端發(fā)送的數(shù)據(jù)訪問請求;
解析所述數(shù)據(jù)訪問請求獲得數(shù)據(jù)索引;
根據(jù)所述數(shù)據(jù)索引判斷內(nèi)核態(tài)緩存區(qū)是否緩存有所述數(shù)據(jù)信息;
當(dāng)內(nèi)核態(tài)系統(tǒng)緩存有所述數(shù)據(jù)信息時,獲取所述數(shù)據(jù)索引所對應(yīng)的數(shù)據(jù)信息;
將所述數(shù)據(jù)信息利用所建立的通信連接發(fā)送到客戶端。
可選的,所述方法還包括:
利用netlink套接字所建立的通信連接從用戶態(tài)獲取初始化配置參數(shù),所述初始化配置參數(shù)包括監(jiān)聽網(wǎng)絡(luò)地址、監(jiān)聽端口、最大容量和傳輸協(xié)議類型;
根據(jù)所述初始化配置參數(shù)進(jìn)行初始化。
可選的,所述方法還包括:
當(dāng)內(nèi)核態(tài)緩存區(qū)沒有緩存所述數(shù)據(jù)信息時,接收客戶端發(fā)送的所述數(shù)據(jù)信息進(jìn)行緩存,所述數(shù)據(jù)信息為客戶端從數(shù)據(jù)庫獲取的。
可選的,所述接收客戶端發(fā)送的所述數(shù)據(jù)信息進(jìn)行緩存包括:
接收客戶端從數(shù)據(jù)庫獲取的數(shù)據(jù)信息;
根據(jù)所述數(shù)據(jù)信息的長度選擇數(shù)據(jù)緩存接口;
判斷空閑緩存區(qū)域是否小于所述數(shù)據(jù)信息的長度;
當(dāng)空閑緩存區(qū)域不小于所述數(shù)據(jù)信息的長度時,存儲所述數(shù)據(jù)信息;
當(dāng)空閑緩存區(qū)域小于所述數(shù)據(jù)信息的長度時,獲取內(nèi)核緩存空間,存儲所述數(shù)據(jù)信息。
可選的,所述獲取內(nèi)核緩存空間包括:
判斷所請求的內(nèi)核緩存空間是否大于第一預(yù)設(shè)閾值;
當(dāng)所請求的內(nèi)核緩存空間不大于第一預(yù)設(shè)閾值時,通過kmalloc獲取內(nèi)核緩存空間;
當(dāng)請求的內(nèi)核緩存空間大于第一預(yù)設(shè)閾值時,判斷所請求的內(nèi)核緩存空間是否大于第二預(yù)設(shè)閾值;
當(dāng)所請求的內(nèi)核緩存空間大于第二預(yù)設(shè)閾值時,通過alloc_pages獲取內(nèi)核緩存空間;
當(dāng)所請求的內(nèi)核緩存空間不大于第二預(yù)設(shè)閾值時,通過vmalloc獲取內(nèi)核緩存空間。
可選的,所述根據(jù)所述數(shù)據(jù)索引判斷內(nèi)核態(tài)緩存區(qū)是否緩存有所述數(shù)據(jù)信息包括:
根據(jù)所述數(shù)據(jù)索引利用hashtable查找item list中的數(shù)據(jù)描述信息指針;
根據(jù)所述數(shù)據(jù)描述指針查找是否緩存有所述數(shù)據(jù)信息。
可選的,所述與客戶端建立通信連接包括:
利用預(yù)先設(shè)置的監(jiān)聽套接字監(jiān)聽與其關(guān)聯(lián)的端口所接收的至少一個客戶端的tcp或unix連接請求;
當(dāng)接收到客戶端的tcp或unix連接請求時,給所述客戶端創(chuàng)建一個連接套接字;
創(chuàng)建與所述客戶端通過所述連接套接字通信的連接對象。
可選的,所述與客戶端建立通信連接包括:
當(dāng)接收到的客戶端的udp請求時,建立客戶端與預(yù)設(shè)UDP連接對象的通信連接。
一種內(nèi)核態(tài)的數(shù)據(jù)訪問裝置,應(yīng)用于內(nèi)核態(tài)系統(tǒng),所述裝置包括:
通信模塊,用于與客戶端建立通信連接;
接收模塊,用于接收客戶端發(fā)送的數(shù)據(jù)訪問請求;
解析模塊,用于解析所述數(shù)據(jù)訪問請求獲得數(shù)據(jù)索引;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京搜狐新媒體信息技術(shù)有限公司,未經(jīng)北京搜狐新媒體信息技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310557075.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 存儲器訪問調(diào)度裝置、調(diào)度方法與存儲器訪問控制系統(tǒng)
- 一種限制用戶訪問的方法和裝置
- 一種訪問信息提供方法及系統(tǒng)
- 數(shù)據(jù)訪問權(quán)限的控制方法及裝置
- 基于智能家居系統(tǒng)的訪問授權(quán)方法、裝置及設(shè)備
- 網(wǎng)站訪問請求的動態(tài)調(diào)度方法及裝置
- 基于訪問頻率的監(jiān)測方法、裝置、設(shè)備和計算機(jī)存儲介質(zhì)
- 訪問憑證驗證方法、裝置、計算機(jī)設(shè)備及存儲介質(zhì)
- 一種應(yīng)用訪問控制方法、系統(tǒng)和介質(zhì)
- 異常訪問行為的檢測方法、裝置、電子設(shè)備及存儲介質(zhì)





