欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種MongoDB負(fù)載均衡優(yōu)化方法

文檔序號(hào):9420408閱讀:1054來源:國(guó)知局
一種MongoDB負(fù)載均衡優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本文屬于數(shù)據(jù)庫(kù)性能優(yōu)化領(lǐng)域,具體設(shè)及一種MongoDB負(fù)載均衡優(yōu)化方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)Web 2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在應(yīng)付Web 2.0網(wǎng)站,特別 是超大規(guī)模和高并發(fā)的SNS類型的Web 2. 0純動(dòng)態(tài)網(wǎng)站時(shí)已經(jīng)顯得力不從屯、,暴露了很多 難W克服的問題,例如對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫的問題、對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問的問 題,W及數(shù)據(jù)庫(kù)的高擴(kuò)展性和高可用性的問題。
[0003] 為了應(yīng)對(duì)W上問題,非關(guān)系性數(shù)據(jù)庫(kù)NoSQUNot化Iy SQL是一種新型的數(shù)據(jù)庫(kù) 方面的革命)應(yīng)運(yùn)而生,它通過降低關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)事務(wù)一致性、寫實(shí)時(shí)性讀實(shí)時(shí) 性,W及弱化復(fù)雜的S化查詢功能來解決Web 2. 0網(wǎng)站建設(shè)中遇到的問題。其中MongoDB 就是其中一個(gè)典型的代表。MongoDB是一個(gè)開源的,基于分布式的,面向文檔存儲(chǔ)的非關(guān)系 型數(shù)據(jù)庫(kù)。是非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫(kù)的,它的特點(diǎn)是高性能、易 部署、易使用,存儲(chǔ)數(shù)據(jù)非常方便,擴(kuò)展能力強(qiáng)。 陽(yáng)004]在MongoDB中,提供一種名為Auto-Siareding,即自動(dòng)分片的機(jī)制來實(shí)現(xiàn)數(shù)據(jù)庫(kù) 的水平擴(kuò)展(水平擴(kuò)展,是指通過加入更多的服務(wù)器運(yùn)行數(shù)據(jù),從而提供更多的存儲(chǔ)空間 或者更高的運(yùn)算性能)。與其它數(shù)據(jù)庫(kù)不同,水平擴(kuò)展的全部的過程都會(huì)由MongoDB自動(dòng)地 完成,不需要人工操作,并且當(dāng)各個(gè)分片(分片,是指將數(shù)據(jù)拆分成特定大小的塊,然后將 其分布到多個(gè)服務(wù)器中)中的數(shù)據(jù)分布不均衡時(shí),自動(dòng)完成數(shù)據(jù)的重分布,通過將數(shù)據(jù)分 布到多個(gè)服務(wù)器上,運(yùn)樣就不再需要高性能主機(jī)來存儲(chǔ)海量數(shù)據(jù),承受高壓負(fù)載。
[0005] 目前MongoDB的Auto-Shareding機(jī)制是靠一個(gè)balancer的模塊來實(shí)現(xiàn)數(shù)據(jù)在各 個(gè)服務(wù)器上的轉(zhuǎn)移W及均勻分布,它是一個(gè)在后臺(tái)運(yùn)行的任務(wù),當(dāng)任意兩個(gè)服務(wù)器中的數(shù) 據(jù)塊的數(shù)量的差值達(dá)到系統(tǒng)設(shè)定的最高闊值時(shí),balancer就會(huì)將數(shù)據(jù)塊從數(shù)據(jù)塊多的服務(wù) 器移動(dòng)到數(shù)據(jù)塊少的服務(wù)器上,直到數(shù)量之差達(dá)到最低闊值。
[0006] 但是通過研究可W知道balancer內(nèi)在的算法僅僅依據(jù)各個(gè)服務(wù)器上數(shù)據(jù)塊的總 量來實(shí)現(xiàn)數(shù)據(jù)塊在各個(gè)服務(wù)器上的負(fù)載均衡。運(yùn)種算法可W使得數(shù)據(jù)庫(kù)的移動(dòng)量最小,但 是選取的數(shù)據(jù)塊都是塊鍵(每個(gè)數(shù)據(jù)庫(kù)的唯一標(biāo)識(shí),是個(gè)數(shù)字)最小的。并沒有將實(shí)際使用 情況考慮進(jìn)去,因?yàn)楦鱾€(gè)數(shù)據(jù)塊的使用情況大有不同,有的基本不會(huì)訪問,有的查詢量大, 有的修改量大,使得各個(gè)服務(wù)器的負(fù)責(zé)并不能有效的均衡。

【發(fā)明內(nèi)容】

[0007] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)中MongoDB在自動(dòng)分片機(jī)制上的不足,提供一種 將數(shù)據(jù)塊的CRUD負(fù)載考慮進(jìn)去,根據(jù)數(shù)據(jù)庫(kù)的實(shí)際使用情況,依據(jù)各個(gè)數(shù)據(jù)塊讀寫頻率, 動(dòng)態(tài)地進(jìn)行負(fù)載均衡,W達(dá)到優(yōu)化數(shù)據(jù)庫(kù)性能的目的的MongoDB負(fù)載均衡優(yōu)化方法。
[0008] 本發(fā)明的目的是通過W下技術(shù)方案來實(shí)現(xiàn)的:一種MongoDB負(fù)載均衡優(yōu)化方法, 包括W下步驟:
[0009] SI、計(jì)算每?jī)蓚€(gè)服務(wù)器內(nèi)數(shù)據(jù)塊總數(shù)的差值;
[0010] S2、判斷任意兩個(gè)服務(wù)器內(nèi)數(shù)據(jù)塊總數(shù)的差值是否大于或等于系統(tǒng)預(yù)先設(shè)定的最 大闊值,若是則將該組兩個(gè)服務(wù)器中包含數(shù)據(jù)塊多的服務(wù)器定為數(shù)據(jù)塊移動(dòng)源,包含數(shù)據(jù) 塊少的服務(wù)器定為數(shù)據(jù)塊移動(dòng)目標(biāo),否則不操作;
[0011] S3、分別計(jì)算數(shù)據(jù)塊移動(dòng)源和數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)的平均數(shù)據(jù)塊操作量;
[0012] S4、比較數(shù)據(jù)塊移動(dòng)源和數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)的平均數(shù)據(jù)塊操作量大小,如果數(shù)據(jù) 塊移動(dòng)源內(nèi)平均數(shù)據(jù)塊操作量大于數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)平均數(shù)據(jù)塊操作量,則從數(shù)據(jù)塊移動(dòng) 源中選取數(shù)據(jù)塊操作量最大的數(shù)據(jù)塊移動(dòng)到數(shù)據(jù)塊移動(dòng)目標(biāo)中;如果數(shù)據(jù)塊移動(dòng)源內(nèi)平均 數(shù)據(jù)塊操作量小于或等于數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)平均數(shù)據(jù)塊操作量,則從數(shù)據(jù)塊移動(dòng)源中選取 數(shù)據(jù)塊操作量最小的數(shù)據(jù)塊移動(dòng)到數(shù)據(jù)塊移動(dòng)目標(biāo)中;
[0013] S5、重復(fù)步驟Sl~S4,直到任意兩個(gè)服務(wù)器內(nèi)數(shù)據(jù)塊總數(shù)的差值小于系統(tǒng)預(yù)先設(shè) 定的最小闊值時(shí),完成負(fù)載均衡。
[0014] 進(jìn)一步地,所述的步驟S3包括W下子步驟:
[0015] S31、在MongoDB中建立CRUD性能測(cè)試集,并計(jì)算出系統(tǒng)的運(yùn)行各個(gè)操作的性能參 數(shù);
[0016] S32、修改MongoDB的configserver中記錄數(shù)據(jù)塊參數(shù)的數(shù)據(jù)結(jié)構(gòu),增加 W下變量:數(shù)據(jù)塊插入操作的次數(shù)operateC、數(shù)據(jù)塊查詢操作的次數(shù)operateR、數(shù)據(jù) 塊更新操作的次數(shù)operate!]、數(shù)據(jù)塊刪除操作的次數(shù)operateD和數(shù)據(jù)塊操作量變量 dat油IockWei曲t,對(duì)數(shù)據(jù)塊的每一次操作都在相對(duì)應(yīng)的變量上進(jìn)行加一操作;
[0017]S33、根據(jù)步驟Sl和S2中的參數(shù)計(jì)算每個(gè)數(shù)據(jù)塊操作量并保存到變量 dat油IockWei曲t中,計(jì)算服務(wù)器內(nèi)所有數(shù)據(jù)塊操作量總和W及服務(wù)器內(nèi)的平均數(shù)據(jù)塊操 作量。
[0018] 進(jìn)一步地,所述的步驟S31具體實(shí)現(xiàn)方法為:從數(shù)據(jù)庫(kù)中選擇插入、刪除、修改W 及查找測(cè)試語(yǔ)句各5000條,分別記錄在4個(gè)語(yǔ)句腳本中;再建立一個(gè)定時(shí)執(zhí)行shell腳本, 分別記錄下4個(gè)語(yǔ)句腳本的執(zhí)行時(shí)間作為性能參數(shù);所述的性能參數(shù)包括:插入操作性能 參數(shù)Tc、刪除操作性能參數(shù)Td、修改操作性能參數(shù)Tu和查詢操作性能參數(shù)TK。
[0019] 進(jìn)一步地,所述的步驟S33具體包括W下子步驟:
[0020] S331、設(shè)一個(gè)服務(wù)器上有n個(gè)數(shù)據(jù)塊,用KiQ《i《n)表示,服務(wù)器上所有數(shù)據(jù) 塊操作次數(shù)之和用0。表示,每個(gè)數(shù)據(jù)塊總的操作次數(shù)用0 1表示,則: 化 陽(yáng)OW 0。=芝^0, 1=1
[0022] 將步驟S32得到的參數(shù)帶入上式,得到: 打町打 n 打
[0023] =芝 之Qji= ^ 0。+S〇說 +S〇化^。。;1 :{c'、r',U、江} i=l >=1 i=lj=l'
[0024] 其中,0"、〇Ki、化1、〇Di分別表示第i塊數(shù)據(jù)塊插入操作的次數(shù)operateC、查詢操作 的次數(shù)operateR、更新操作的次數(shù)operate!]、刪除操作的次數(shù)operateD;
[00巧]S332、計(jì)算第i塊數(shù)據(jù)塊操作量DWi:
[0026] DW, = ^ 0|巧 '二 0。。+ 〇wTr+O…Tu+O防T〇. ]=ftNf:>Us;d}
[0027] 計(jì)算服務(wù)器上所有數(shù)據(jù)塊操作量: 打打 n n Ii
[0028] DWn二'芝 SOjiTj= ^ 〇ciTc+ ^OrjTr+ ^ 〇uiT〇 + ^ 〇防 了口 I=Ij=tcr,Uvd) 1=1. 1=1 1=1 J=I
[0029] 每次負(fù)載均衡時(shí)按照上式計(jì)算出服務(wù)器中各個(gè)數(shù)據(jù)塊的DWi然后存入變量 dat油IockWei曲t中,DW。參數(shù)供后續(xù)步驟使用;
[0030] S333、將包含數(shù)據(jù)塊多的服務(wù)器稱為數(shù)據(jù)塊移動(dòng)源,用S表示;包含數(shù)據(jù)塊少的服 務(wù)器稱為數(shù)據(jù)塊移動(dòng)目標(biāo),用T表示;S與T的平均數(shù)據(jù)塊操作量分別用5"和T"表示,則:
[0031]
[0032] 陽(yáng)〇3引其中,叫和n康示S與T中數(shù)據(jù)塊的數(shù)量,SDWn和TDWn分別表示S與T服務(wù)器上 所有數(shù)據(jù)塊操作量。
[0034] 進(jìn)一步地,所述的步驟S3還包括一個(gè)步驟:S34、在完成負(fù)載均衡后對(duì)步驟S32中 增加的變量進(jìn)行置零操作。
[0035] 本發(fā)明的有益效果是:針對(duì)MongoDB在自動(dòng)分片機(jī)制上的不足之處,提供了 一種基于數(shù)據(jù)塊的增刪查改頻率的負(fù)載均衡方法,對(duì)移動(dòng)數(shù)據(jù)塊的選擇上,將數(shù)據(jù)塊的 CRUD(CRUD代表對(duì)數(shù)據(jù)庫(kù)的四種操作,即增刪改查)負(fù)載考慮進(jìn)去,根據(jù)數(shù)據(jù)庫(kù)的實(shí)際使 用情況,依據(jù)各個(gè)數(shù)據(jù)塊讀寫頻率,動(dòng)態(tài)地進(jìn)行負(fù)載均衡,W達(dá)到優(yōu)化數(shù)據(jù)庫(kù)性能的目的, 可W使得集群不僅僅是在數(shù)據(jù)塊的數(shù)量上負(fù)載均衡,而且也實(shí)現(xiàn)了讀寫負(fù)載均衡,優(yōu)化了 MongoDB水平擴(kuò)展的能力,能有效的提供MongoDB數(shù)據(jù)庫(kù)的并發(fā)讀寫性能,均衡數(shù)據(jù)庫(kù)的負(fù) 載,減輕數(shù)據(jù)庫(kù)壓力,降低服務(wù)器壓力。
【附圖說明】
[0036] 圖1為本發(fā)明的負(fù)載均衡優(yōu)化方法流程圖。
【具體實(shí)施方式】
[0037] 下面結(jié)合附圖進(jìn)一步說明本發(fā)明的技術(shù)方案。
[0038] 如圖1所示,一種MongoDB負(fù)載均衡優(yōu)化方法,包括W下步驟:
[0039] S1、計(jì)算每?jī)蓚€(gè)服務(wù)器內(nèi)數(shù)據(jù)塊總數(shù)的差值;
[0040] S2、判斷任意兩個(gè)服務(wù)器內(nèi)數(shù)據(jù)塊總數(shù)的差值是否大于或等于系統(tǒng)預(yù)先設(shè)定的最 大闊值,若是則將該組兩個(gè)服務(wù)器中包含數(shù)據(jù)塊多的服務(wù)器定為數(shù)據(jù)塊移動(dòng)源,包含數(shù)據(jù) 塊少的服務(wù)器定為數(shù)據(jù)塊移動(dòng)目標(biāo),否則不操作;
[0041] S3、分別計(jì)算數(shù)據(jù)塊移動(dòng)源和數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)的平均數(shù)據(jù)塊操作量;
[0042] S4、比較數(shù)據(jù)塊移動(dòng)源和數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)的平均數(shù)據(jù)塊操作量大小,如果數(shù)據(jù) 塊移動(dòng)源內(nèi)平均數(shù)據(jù)塊操作量大于數(shù)據(jù)塊移動(dòng)目標(biāo)內(nèi)平均數(shù)據(jù)塊操作量,則從數(shù)據(jù)塊
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
广州市| 信丰县| 房山区| 湘潭县| 西丰县| 黔西县| 左权县| 紫云| 肃宁县| 阳高县| 永昌县| 平昌县| 黄大仙区| 刚察县| 宜阳县| 泊头市| 长泰县| 延长县| 宜兴市| 安义县| 淮滨县| 永德县| 静宁县| 英吉沙县| 永安市| 顺昌县| 贵阳市| 平乐县| 辉县市| 天镇县| 九龙坡区| 通城县| 通州区| 元朗区| 普兰店市| 永善县| 苍山县| 榆社县| 攀枝花市| 渑池县| 大石桥市|