亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于哈希表的路由器運(yùn)行數(shù)據(jù)緩存方法及系統(tǒng)與流程

文檔序號:12665703閱讀:256來源:國知局
一種基于哈希表的路由器運(yùn)行數(shù)據(jù)緩存方法及系統(tǒng)與流程
本發(fā)明涉及路由器運(yùn)行信息處理技術(shù),尤其涉及一種基于哈希表的路由器運(yùn)行數(shù)據(jù)緩存方法,還涉及一種實(shí)現(xiàn)該方法的系統(tǒng)。
背景技術(shù)
:隨著無線通信傳輸速度的飛速提高,資費(fèi)的不斷降低,無線路由器被廣泛應(yīng)用在電力、水利、物流等各個行業(yè),有效提高了各個行業(yè)的效率。在這些行業(yè)應(yīng)用中,無線路由器具有分布廣泛、數(shù)量眾多的特點(diǎn),M2M管理云平臺用于實(shí)現(xiàn)對這些無線通信路由器的設(shè)備遠(yuǎn)程管理。提供運(yùn)行狀態(tài)監(jiān)控、參數(shù)遠(yuǎn)程修改查看,遠(yuǎn)程升級等功能。無線路由器運(yùn)行數(shù)據(jù),包括當(dāng)前在線狀態(tài),網(wǎng)絡(luò)模式,信號強(qiáng)度,流量統(tǒng)計(jì)等。這些數(shù)據(jù)由路由器在運(yùn)行過程中,定期上報(bào)。一般10-60秒上報(bào)一次。在中小規(guī)模項(xiàng)目中,例如接入2000臺設(shè)備的系統(tǒng),10秒鐘上報(bào)一次,每秒系統(tǒng)需要處理200個運(yùn)行狀態(tài)數(shù)據(jù)上報(bào),普通關(guān)系型數(shù)據(jù)庫即可很好滿足需求。當(dāng)系統(tǒng)接入數(shù)十萬甚至百萬臺設(shè)備后,每秒需要處理數(shù)萬個運(yùn)行狀態(tài)數(shù)據(jù)包,數(shù)據(jù)庫系統(tǒng)無法提供每秒數(shù)萬次的更新能力。特別是對于數(shù)百萬臺設(shè)備接入,平均每秒收到的數(shù)據(jù)上報(bào)指令最大約數(shù)十萬條。針對每秒幾十萬次的更新頻率性能需求,普通數(shù)據(jù)庫或者文件系統(tǒng),均無法滿足需求。部分內(nèi)存數(shù)據(jù)庫可以提供約10萬次每秒的更新能力,但需要安裝和配置額外的組件,增加了項(xiàng)目部署和維護(hù)的成本,而且性能上也無法完全滿足超大型系統(tǒng)需求。技術(shù)實(shí)現(xiàn)要素:為解決現(xiàn)有技術(shù)中的問題,本發(fā)明提供一種基于哈希表的路由器運(yùn)行數(shù)據(jù)緩存方法,還提供了一種實(shí)現(xiàn)上述方法的系統(tǒng)。本發(fā)明基于哈希表的路由器運(yùn)行數(shù)據(jù)緩存方法包括如下步驟:S1:在與路由器連接的服務(wù)器內(nèi)存中創(chuàng)建哈希表;S2:收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令,通過哈希函數(shù)計(jì)算得到所述路由器在服務(wù)器內(nèi)存中對應(yīng)的節(jié)點(diǎn)的哈希表位置;S3:在所述哈希表位置查找是否存在所述路由器的節(jié)點(diǎn)信息,如果存在,更新該節(jié)點(diǎn)信息;如果不存在,新增節(jié)點(diǎn)和節(jié)點(diǎn)對應(yīng)的哈希表索引,并將上報(bào)的運(yùn)行數(shù)據(jù)存儲在新增的節(jié)點(diǎn)上;S4:將內(nèi)存數(shù)據(jù)寫入數(shù)據(jù)庫。本發(fā)明作進(jìn)一步改進(jìn),在步驟S1中,創(chuàng)建哈希表的方法為:創(chuàng)建一個容量為N的數(shù)組指針,所述指針指向一個數(shù)組,該數(shù)組是由N個節(jié)點(diǎn)的首地址組成。本發(fā)明作進(jìn)一步改進(jìn),數(shù)組指針的容量N根據(jù)路由器的數(shù)量配置。本發(fā)明作進(jìn)一步改進(jìn),在步驟S2中,路由器標(biāo)示符的后8個字節(jié)為路由器的唯一序列號,所述哈希函數(shù)是由路由器序列號的標(biāo)示符決定,哈希函數(shù)算法如下:A1:對路由器標(biāo)示符的后8個字節(jié)中,每兩個字節(jié)按照按十六進(jìn)制文本轉(zhuǎn)二進(jìn)制,轉(zhuǎn)為一個字節(jié),得到4個字節(jié)的二進(jìn)制數(shù)值;A2:將步驟A1得到的二進(jìn)制數(shù)值強(qiáng)制賦值給unsignedint,得到路由器唯一id號;A3:將步驟A2得到的id號對哈希表容量取余,即得到哈希表位置值。本發(fā)明作進(jìn)一步改進(jìn),在步驟A3中,每個哈希表位置采用鏈表保存數(shù)據(jù),當(dāng)?shù)玫焦1砦恢煤螅瑢︽湵碇忻總€節(jié)點(diǎn)的id號進(jìn)行對比,如果與請求上報(bào)指令的路由器的id號相同,則找到該路由器的節(jié)點(diǎn),否則,在鏈表尾端新增節(jié)點(diǎn)。本發(fā)明作進(jìn)一步改進(jìn),服務(wù)器收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令,更新數(shù)據(jù)的具體方法為:S301:開始處理上報(bào)數(shù)據(jù);S302:判斷路由器的參數(shù)是否合法,如果是,根據(jù)路由器的標(biāo)示符得到id,如果否,執(zhí)行步驟S35;S303:獲取哈希表位置,在哈希表位置的鏈表循環(huán)查找id;S304:判斷是否找到id,如果是,更新路由器運(yùn)行數(shù)據(jù),如果否,新增節(jié)點(diǎn),將運(yùn)行數(shù)據(jù)給新增節(jié)點(diǎn)賦值,加入鏈表尾端;S305:上報(bào)處理結(jié)束。本發(fā)明作進(jìn)一步改進(jìn),服務(wù)器提供對外讀取路由器運(yùn)行數(shù)據(jù)的接口,用戶能夠通過該接口讀取內(nèi)存中的數(shù)據(jù),讀取內(nèi)存中路由器運(yùn)行數(shù)據(jù)的方法包括如下步驟:S311:開始讀取數(shù)據(jù);S312:根據(jù)路由器的標(biāo)示符的到id;S313:獲取哈希表位置,在哈希表位置的鏈表循環(huán)查找id;S314:判斷是否找到id,如果是,讀取路由器運(yùn)行數(shù)據(jù),如果否,讀取失??;S315:讀取結(jié)束。本發(fā)明作進(jìn)一步改進(jìn),在步驟S4中,內(nèi)存數(shù)據(jù)定期寫入數(shù)據(jù)庫,具體實(shí)現(xiàn)方法為:S41:更新開始,內(nèi)存每更新一次數(shù)據(jù),更新次數(shù)加1;S42:判斷更新次數(shù)是否達(dá)到同步閥值,如果是,將流量與數(shù)據(jù)庫中的相應(yīng)路由器的流量累加,更新到數(shù)據(jù)庫,如果否,返回執(zhí)行步驟S41;S43:將信號強(qiáng)度、網(wǎng)絡(luò)模式、GPS位置、最后活躍時間更新到數(shù)據(jù)庫;S44:清空內(nèi)存節(jié)點(diǎn)流量統(tǒng)計(jì),更新次數(shù)歸零,更新結(jié)束。本發(fā)明還提供了一種實(shí)現(xiàn)上述方法的系統(tǒng),包括:哈希表創(chuàng)建模塊:用于在與路由器連接的服務(wù)器內(nèi)存中創(chuàng)建哈希表;哈希表位置計(jì)算模塊:用于收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令,通過哈希函數(shù)計(jì)算得到所述路由器在服務(wù)器內(nèi)存中對應(yīng)的節(jié)點(diǎn)的哈希表位置;數(shù)據(jù)更新模塊:用于在所述哈希表位置查找是否存在所述路由器的節(jié)點(diǎn)信息,如果存在,更新該節(jié)點(diǎn)信息;如果不存在,新增節(jié)點(diǎn)和節(jié)點(diǎn)對應(yīng)的哈希表索引,并將上報(bào)的運(yùn)行數(shù)據(jù)存儲在新增的節(jié)點(diǎn)上;數(shù)據(jù)庫寫入模塊:用于將內(nèi)存數(shù)據(jù)寫入數(shù)據(jù)庫。本發(fā)明作進(jìn)一步改進(jìn),在數(shù)據(jù)更新模塊在收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令后,開始更新數(shù)據(jù),所述數(shù)據(jù)更新模塊包括:初始化單元:用于開始處理上報(bào)數(shù)據(jù);第一判斷單元:用于判斷路由器的參數(shù)是否合法,如果是,根據(jù)路由器的標(biāo)示符得到id,如果否,上報(bào)處理結(jié)束;獲取單元:用于獲取哈希表位置,在哈希表位置的鏈表循環(huán)查找id;第二判斷單元:用于判斷是否找到id,如果是,更新路由器運(yùn)行數(shù)據(jù),如果否,新增節(jié)點(diǎn),將運(yùn)行數(shù)據(jù)給新增節(jié)點(diǎn)賦值,加入鏈表尾端;結(jié)束單元:用于結(jié)束上報(bào)數(shù)據(jù)處理。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:能極大提高并發(fā)寫入性能,相比傳統(tǒng)數(shù)據(jù)庫,本發(fā)明能夠提高約1000倍寫入性能,每秒對外提供數(shù)百萬次級別更新能力,足夠滿足百萬級大型系統(tǒng)接入應(yīng)用;本發(fā)明基于哈希表,對路由器的標(biāo)示符進(jìn)行哈希算法,將運(yùn)行數(shù)據(jù)保存在內(nèi)存,提供每秒百萬次級別的更新能力,解決百萬級路由器接入的數(shù)據(jù)上報(bào)處理問題;所有路由器數(shù)據(jù)為鏈表數(shù)組,對每個鏈表的首地址進(jìn)行哈希,定位到鏈表首地址后,再通過循環(huán)對比id號來得到具體節(jié)點(diǎn)地址,有效解決了哈希沖突。附圖說明圖1為本發(fā)明方法流程圖;圖2為本發(fā)明內(nèi)存數(shù)據(jù)結(jié)構(gòu)圖;圖3為本發(fā)明服務(wù)器內(nèi)存更新數(shù)據(jù)方法流程圖;圖4為讀取內(nèi)存數(shù)據(jù)方法流程圖;圖5為將內(nèi)存數(shù)據(jù)寫入數(shù)據(jù)庫方法流程圖;圖6為內(nèi)存數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)同步示意圖。具體實(shí)施方式下面結(jié)合附圖和實(shí)施例對本發(fā)明做進(jìn)一步詳細(xì)說明。路由器在運(yùn)行過程中,需要頻繁上報(bào)的內(nèi)容包括:(1)流量使用:差量上報(bào),是指路由器在運(yùn)行過程中,使用的網(wǎng)絡(luò)流量,包括上行與下行流量。一般情況下,不包括wifi流量,只包括3G/4G等可能產(chǎn)生費(fèi)用的網(wǎng)絡(luò)流量;(2)信號強(qiáng)度:指當(dāng)前3G/4G網(wǎng)絡(luò)信號強(qiáng)度;(3)網(wǎng)絡(luò)模式:指路由器當(dāng)前工作的網(wǎng)絡(luò)模式,大部分情況下網(wǎng)絡(luò)模式是固定的,但在信號不好的時候,路由器可能會從4G切換到3G,或者反過來,在有4G信號的地方,自動從3G切換到4G,此時會發(fā)生網(wǎng)絡(luò)模式變化;(4)告警內(nèi)容:路由器運(yùn)行過程中產(chǎn)生的故障會上報(bào);(5)位置信息:GPS位置上報(bào);(6)基站信息:當(dāng)前連接的基站信息上報(bào);(7)WifiAP上報(bào):路由器作為wifi客戶端連接時,上報(bào)wifi服務(wù)端的AP地址;此外,還可能包括其他信息,比如,在交通,物流運(yùn)輸?shù)软?xiàng)目中,gps位置也會被頻繁上報(bào)。其中,只要路由器在正常使用、流量使用、信號強(qiáng)度、網(wǎng)絡(luò)模式數(shù)據(jù)會頻繁上報(bào),如果為了保證監(jiān)控的時效性,一般路由器上報(bào)的時間間隔在10–120秒。對于數(shù)百萬臺設(shè)備接入,平均每秒收到的數(shù)據(jù)上報(bào)指令最大約數(shù)十萬條。本發(fā)明就是用于解決海量(百萬臺級別)路由器同時接入到M2M云平臺時,路由器運(yùn)行狀態(tài)的更新問題。如圖1所示,本發(fā)明基于哈希表的路由器運(yùn)行數(shù)據(jù)緩存方法包括如下步驟:S1:在與路由器連接的服務(wù)器內(nèi)存中創(chuàng)建哈希表;S2:收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令,通過哈希函數(shù)計(jì)算得到所述路由器在服務(wù)器內(nèi)存中對應(yīng)的節(jié)點(diǎn)的哈希表位置;S3:在所述哈希表位置查找是否存在所述路由器的節(jié)點(diǎn)信息,如果存在,更新該節(jié)點(diǎn)信息;如果不存在,新增節(jié)點(diǎn)和節(jié)點(diǎn)對應(yīng)的哈希表索引,并將上報(bào)的運(yùn)行數(shù)據(jù)存儲在新增的節(jié)點(diǎn)上;S4:將內(nèi)存數(shù)據(jù)寫入數(shù)據(jù)庫。服務(wù)器系統(tǒng)在啟動的時候,內(nèi)存中節(jié)點(diǎn)是空的,哈希表也是空的,在收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令時,先通過哈希函數(shù)計(jì)算查找節(jié)點(diǎn)位置,因?yàn)槭堑谝淮紊蠄?bào),肯定是找不到所述路由器的節(jié)點(diǎn)信息,因此,需要新增節(jié)點(diǎn),并增加哈希表索引。當(dāng)同一臺設(shè)備,第二次上報(bào)運(yùn)行數(shù)據(jù)的時候,就能夠根據(jù)哈希表和哈希函數(shù)找到該路由器對應(yīng)的節(jié)點(diǎn)了,直接更新該節(jié)點(diǎn)運(yùn)行數(shù)據(jù)即可。如圖2所示,本發(fā)明將每個路由器設(shè)備的數(shù)據(jù)視作一個內(nèi)存節(jié)點(diǎn),這個節(jié)點(diǎn)包含路由器流量累積,當(dāng)前信號強(qiáng)度,網(wǎng)絡(luò)模式,最后活躍時間,經(jīng)緯度位置等信息,也可繼續(xù)擴(kuò)展添加其它需要頻繁上報(bào)的字段。內(nèi)存更新速度數(shù)萬到數(shù)十萬倍于數(shù)據(jù)庫系統(tǒng),可以極大提高性能。此外,本發(fā)明基于哈希表,對路由器的標(biāo)示符進(jìn)行哈希算法,將運(yùn)行數(shù)據(jù)保存在內(nèi)存,提供每秒百萬次級別的更新能力,解決百萬級路由器接入的數(shù)據(jù)上報(bào)處理問題,能極大提高服務(wù)器的并發(fā)寫入性能。將路由器信息內(nèi)存化后,產(chǎn)生的一個問題是,當(dāng)上報(bào)數(shù)據(jù)指令到達(dá)時,如何快速找到對應(yīng)路由器信息節(jié)點(diǎn)位置,本發(fā)明中,使用哈希表來索引每個設(shè)備的節(jié)點(diǎn)位置信息。在步驟S2中,創(chuàng)建索引的方法為:創(chuàng)建一個容量為N的數(shù)組指針,所述指針指向一個數(shù)組,該數(shù)組是由N個節(jié)點(diǎn)的首地址組成。其中,數(shù)組指針的容量N根據(jù)路由器的數(shù)量配置。本例系統(tǒng)初始化一個容量N為100000的數(shù)組指針,每個指針指向一個vector數(shù)組(包括十萬個節(jié)點(diǎn)的首地址)。對于哈希表,哈希函數(shù)是否設(shè)計(jì)合理,是影響效率的很大因素。哈希函數(shù)的設(shè)計(jì),由根據(jù)路由器序列號的標(biāo)示符編碼規(guī)則來決定。每臺無線路由器,具有一個唯一標(biāo)示符,本文中稱為SN,SN由兩部分組成,前半部分為用戶可自定義字符串,提供給客戶用于標(biāo)記區(qū)分路由器。后8個字節(jié)為路由器唯一序列號。路由器8個字節(jié)唯一標(biāo)示符編碼規(guī)則如下:第一字節(jié):出廠年,6=2016年,7=2017年,A=2020年,類推;第二字節(jié):出廠月,1=1月,12=12月,類推;第三、第四字節(jié):共同表示生產(chǎn)日期,03=3日,24=24日,類推;第五、六字節(jié):型號計(jì)數(shù)位;第七、八字節(jié):計(jì)數(shù)位;除第一個字節(jié)外,后面字節(jié)取值范圍均為0-9,A-F。針對上述編碼規(guī)則,哈希函數(shù)算法如下:A1:對路由器標(biāo)示符的后8個字節(jié)中,每兩個字節(jié)按照按十六進(jìn)制文本轉(zhuǎn)二進(jìn)制,轉(zhuǎn)為一個字節(jié),得到4個字節(jié)的二進(jìn)制數(shù)值;A2:將步驟A1得到的二進(jìn)制數(shù)值強(qiáng)制賦值給unsignedint,得到路由器唯一id號;A3:將步驟A2得到的id號對哈希表容量取余,即得到哈希表位置值。當(dāng)兩個路由器的序列號,通過上述hash(哈希)函數(shù),得到的位置相同時,產(chǎn)生hash沖突,本發(fā)明中通過鏈表解決沖突。在步驟A3中,每個哈希表位置采用鏈表保存數(shù)據(jù),當(dāng)?shù)玫焦1砦恢煤?,對鏈表中每個節(jié)點(diǎn)的id號進(jìn)行對比,如果與請求上報(bào)指令的路由器的id號相同,則找到該路由器的節(jié)點(diǎn),否則,在鏈表尾端新增節(jié)點(diǎn)。如圖3所示,服務(wù)器收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令,更新數(shù)據(jù)的具體方法為:S301:開始處理上報(bào)數(shù)據(jù);S302:判斷路由器的參數(shù)是否合法,如果是,根據(jù)路由器的標(biāo)示符得到id,如果否,執(zhí)行步驟S35;S303:獲取哈希表位置,在哈希表位置的鏈表循環(huán)查找id;S304:判斷是否找到id,如果是,更新路由器運(yùn)行數(shù)據(jù),如果否,新增節(jié)點(diǎn),將運(yùn)行數(shù)據(jù)給新增節(jié)點(diǎn)賦值,加入鏈表尾端;S305:上報(bào)處理結(jié)束。本發(fā)明采用C/C++語言舉例說明,但并不限定只能由C/C++實(shí)現(xiàn)。本發(fā)明寫入上報(bào)數(shù)據(jù)的函數(shù)為:voidreport(constchar*sn,unsignedintflux,charsignal,charnet_mode,doublelat,doublelon);參數(shù)說明:sn——路由器序列號,最后8個字節(jié)為唯一標(biāo)示符;flux——上報(bào)的流量,差量上報(bào),即每次上報(bào)的流量為兩次上報(bào)間隔內(nèi)使用的值;signal——網(wǎng)絡(luò)信號強(qiáng)度;net_mode——網(wǎng)絡(luò)模式;lat,lon——當(dāng)前GPS位置經(jīng)緯度。此外,本發(fā)明提供對外讀取接口,該接口返回某個設(shè)備上報(bào)的累積數(shù)據(jù),包括流量累積,當(dāng)前信號強(qiáng)度,網(wǎng)絡(luò)模式,最后活躍時間等字段。讀取接口用于展示數(shù)據(jù)給用戶,或者用于給其它第三方接口調(diào)用等提供數(shù)據(jù)來源。如圖4所示,讀取內(nèi)存中路由器運(yùn)行數(shù)據(jù)的方法包括如下步驟:S311:開始讀取數(shù)據(jù);S312:根據(jù)路由器的標(biāo)示符的到id;S313:獲取哈希表位置,在哈希表位置的鏈表循環(huán)查找id;S314:判斷是否找到id,如果是,讀取路由器運(yùn)行數(shù)據(jù),如果否,讀取失?。籗315:讀取結(jié)束。讀取接口為:voidread(constchar*sn,unsignedint&flux,char&signal,char&net_mode,unsignedint&last_time,double&lat,double&lon);參數(shù)說明:sn——路由器序列號,最后8個字節(jié)為唯一標(biāo)示符;flux——輸出參數(shù),上報(bào)的流量累積;signal——輸出參數(shù),網(wǎng)絡(luò)信號強(qiáng)度;net_mode——輸出參數(shù),網(wǎng)絡(luò)模式;last_time——輸出參數(shù),最后活躍時間,unix時間戳;lat,lon——輸出參數(shù),讀取設(shè)備上報(bào)的最新gps位置經(jīng)緯度。雖然,內(nèi)存數(shù)據(jù)具有寫入快的優(yōu)點(diǎn),但在系統(tǒng)重啟,斷電等特殊場合,可能會導(dǎo)致數(shù)據(jù)丟失,因此需要定期將內(nèi)存數(shù)據(jù)同步寫入數(shù)據(jù)庫,以保證數(shù)據(jù)完整性。如圖5所示,本例將內(nèi)存數(shù)據(jù)定期寫入數(shù)據(jù)庫的具體實(shí)現(xiàn)方法為:S41:更新開始,內(nèi)存每更新一次數(shù)據(jù),更新次數(shù)加1;S42:判斷更新次數(shù)是否達(dá)到同步閥值,如果是,將流量與數(shù)據(jù)庫中的相應(yīng)路由器的流量累加,更新到數(shù)據(jù)庫,如果否,返回執(zhí)行步驟S41;S43:將信號強(qiáng)度、網(wǎng)絡(luò)模式、GPS位置、最后活躍時間更新到數(shù)據(jù)庫;S44:清空內(nèi)存節(jié)點(diǎn)流量統(tǒng)計(jì),更新次數(shù)歸零,更新結(jié)束。在更新次數(shù)達(dá)到預(yù)設(shè)的同步閾值時,例如可以設(shè)定為每上報(bào)100次數(shù)據(jù)同步到數(shù)據(jù)庫,鎖定節(jié)點(diǎn),將該內(nèi)存節(jié)點(diǎn)數(shù)據(jù)寫入數(shù)據(jù)庫,并清零重設(shè)節(jié)點(diǎn)更新次數(shù),避免反復(fù)同步到數(shù)據(jù)庫。數(shù)據(jù)庫同步接口為:voidsync_to_db(constchar*sn);其中,sn為需要同步寫入數(shù)據(jù)庫的節(jié)點(diǎn)路由器序列號。如圖6所示,為本發(fā)明加入數(shù)據(jù)同步功能后的示意圖,同步機(jī)制使得即使發(fā)生系統(tǒng)斷電等極端情況,丟失的數(shù)據(jù)也在可接受范圍內(nèi)。一臺無線通信路由器,每月上報(bào)數(shù)萬到數(shù)十萬次,在斷電等極端場合下丟失小部分?jǐn)?shù)據(jù),對整體統(tǒng)計(jì)影響基本可忽略不計(jì)。此外,本發(fā)明還提供了一種實(shí)現(xiàn)上述方法的系統(tǒng),包括:哈希表創(chuàng)建模塊:用于在與路由器連接的服務(wù)器內(nèi)存中創(chuàng)建哈希表;哈希表位置計(jì)算模塊:用于收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令,通過哈希函數(shù)計(jì)算得到所述路由器在服務(wù)器內(nèi)存中對應(yīng)的節(jié)點(diǎn)的哈希表位置;數(shù)據(jù)更新模塊:用于在所述哈希表位置查找是否存在所述路由器的節(jié)點(diǎn)信息,如果存在,更新該節(jié)點(diǎn)信息;如果不存在,新增節(jié)點(diǎn)和節(jié)點(diǎn)對應(yīng)的哈希表索引,并將上報(bào)的運(yùn)行數(shù)據(jù)存儲在新增的節(jié)點(diǎn)上;數(shù)據(jù)庫寫入模塊:用于將內(nèi)存數(shù)據(jù)寫入數(shù)據(jù)庫。本發(fā)明作進(jìn)一步改進(jìn),在數(shù)據(jù)更新模塊在收到路由器運(yùn)行數(shù)據(jù)上報(bào)指令后,開始更新數(shù)據(jù),所述數(shù)據(jù)更新模塊包括:初始化單元:用于開始處理上報(bào)數(shù)據(jù);第一判斷單元:用于判斷路由器的參數(shù)是否合法,如果是,根據(jù)路由器的標(biāo)示符得到id,如果否,上報(bào)處理結(jié)束;獲取單元:用于獲取哈希表位置,在哈希表位置的鏈表循環(huán)查找id;第二判斷單元:用于判斷是否找到id,如果是,更新路由器運(yùn)行數(shù)據(jù),如果否,新增節(jié)點(diǎn),將運(yùn)行數(shù)據(jù)給新增節(jié)點(diǎn)賦值,加入鏈表尾端;結(jié)束單元:用于結(jié)束上報(bào)數(shù)據(jù)處理。最后,本發(fā)明通過與現(xiàn)有數(shù)據(jù)庫系統(tǒng)對比測試來進(jìn)一步說明。本發(fā)明與現(xiàn)有數(shù)據(jù)庫的測試配置如下:項(xiàng)目配置CPUIntelCorei7-3770@3.4GHZ,4核8線程內(nèi)存8G硬盤1TB企業(yè)級硬盤,7200轉(zhuǎn),64MB緩存操作系統(tǒng)64位Linux,2.6.32內(nèi)核(VMware虛擬機(jī))數(shù)據(jù)庫Mysql5.1版本通過測試,測試結(jié)論如下:通過上述測試結(jié)論可以看出,本發(fā)明相比傳統(tǒng)數(shù)據(jù)庫,可提高約1000倍寫入性能,每秒對外提供數(shù)百萬次級別更新能力,足夠滿足百萬級大型系統(tǒng)接入應(yīng)用,理想情況下,可滿足千萬級設(shè)備接入需求。以上所述之具體實(shí)施方式為本發(fā)明的較佳實(shí)施方式,并非以此限定本發(fā)明的具體實(shí)施范圍,本發(fā)明的范圍包括并不限于本具體實(shí)施方式,凡依照本發(fā)明所作的等效變化均在本發(fā)明的保護(hù)范圍內(nèi)。當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1