大型互聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)庫(kù)設(shè)計(jì)與部署方案_第1頁(yè)
大型互聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)庫(kù)設(shè)計(jì)與部署方案_第2頁(yè)
大型互聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)庫(kù)設(shè)計(jì)與部署方案_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、隨著互聯(lián)網(wǎng)應(yīng)用的廣泛普及,海雖數(shù)據(jù)的存儲(chǔ)和訪問(wèn)成為了系統(tǒng)設(shè)計(jì)的瓶頸問(wèn)題。對(duì)于一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用,每天百 萬(wàn)級(jí)甚至上億的PV無(wú)疑對(duì)數(shù)據(jù)庫(kù)造成了相當(dāng)高的負(fù)載。對(duì)于系統(tǒng)的穩(wěn)定性和擴(kuò)展性造成了極大的問(wèn)題。負(fù)載均衡技術(shù)負(fù)載均衡集群是由一 組相互獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成,通過(guò)常規(guī)網(wǎng)絡(luò)或?qū)S镁W(wǎng)絡(luò)進(jìn)行連接,由路由器銜接在一起,各節(jié)點(diǎn)相互協(xié)作、共同負(fù)戦、均衡壓力'對(duì)客戶端來(lái)說(shuō),整個(gè)群集可以視為一臺(tái)具有超高性能的獨(dú)立服務(wù)器。實(shí)現(xiàn)原理:實(shí)現(xiàn)數(shù)據(jù)庫(kù)的負(fù)載均衡技術(shù),首先要有一個(gè)可以控制連接數(shù)據(jù)庫(kù)的控制端。在這里,它截?cái)嗔藬?shù)據(jù)庫(kù)和程序的直接連接,由所有的程序來(lái)訪問(wèn)這個(gè)中間層,然后再由中間層來(lái)訪問(wèn)數(shù)搖庫(kù)。這樣,我們就

2、可以具體控制訪問(wèn)某個(gè)數(shù)據(jù)庫(kù)了,然后還可以根據(jù)數(shù)據(jù)庫(kù) 的當(dāng)前負(fù)載采取有效的均衡策略'來(lái)調(diào)整每次連接到哪個(gè)數(shù)據(jù)庫(kù)。實(shí)現(xiàn)多據(jù)庫(kù)數(shù)據(jù)同步:對(duì)于負(fù)載均衡'最重要的就是所有服務(wù)器的數(shù)據(jù)都是實(shí)時(shí)同步的。這是一個(gè)集群所必需的,因?yàn)椋?xì)果數(shù)不據(jù)實(shí)時(shí)、不同步,那么用戶從一臺(tái)服務(wù)器讀出的數(shù)據(jù)'就有別于從另一臺(tái)服務(wù)器讀出的數(shù)據(jù)'這是不能允許的。所以必須實(shí)現(xiàn)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。這樣在查詢的時(shí)候就可以有多個(gè)資源,實(shí)現(xiàn)均衡。比較常用的方法是Moebius for SQL Server集群,Moebius for SQL Server集群采用將核心程序駐留在每個(gè)機(jī)器的數(shù)據(jù)庫(kù)中的辦法,這個(gè)核心程序

3、稱為Moebius for SQL Server中間件,主要 作用是監(jiān)測(cè)數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)的變化并將變化的數(shù)據(jù)同步到其他數(shù)據(jù)庫(kù)中。數(shù)據(jù)同步完成后客戶端才會(huì)得到響應(yīng),同步過(guò)程是并發(fā)完成的,所以同步到多個(gè)數(shù)據(jù)庫(kù)和同步到一個(gè)數(shù)據(jù)庫(kù)的時(shí)間基本相等;另外同步的過(guò)程是在事務(wù)的環(huán)境下完成的,保證了多份數(shù)據(jù)在任何時(shí)刻數(shù)據(jù)的一致性。正因?yàn)镸oebius中間件宿主在數(shù)據(jù)庫(kù)中的創(chuàng)新*讓中間件不但能知道數(shù)據(jù)的變化,而且知道引起數(shù)據(jù)變化的 SQL語(yǔ)句.根據(jù)SQL語(yǔ)句的類型智能的采取不同的數(shù)據(jù)同步的策略以保證數(shù)據(jù)同步成木的晟小化'中央控制臺(tái)SQL Sr everMoebiusMoebiusSQLServerMoebiu

4、s寫操作-寫操作2客戶劃數(shù)據(jù)條數(shù)很少,數(shù)扌居內(nèi)容也不大,則直接同步數(shù)據(jù)。數(shù)據(jù)條數(shù)很少,但是里面包含大數(shù)據(jù)類型,比如文本,二逬制數(shù)搖等,則先對(duì)數(shù)據(jù)進(jìn)行壓縮然后再同步,從而減少網(wǎng)絡(luò)帶寬的占用和傳輸所用的時(shí)間。數(shù)據(jù)條數(shù)很多,此時(shí)中間件會(huì)拿到造成數(shù)據(jù)變化的SQL語(yǔ)句,然后對(duì)SQL語(yǔ)句進(jìn)行解析 > 分析其執(zhí)行計(jì)劃和執(zhí)行成本,并選擇是同步數(shù)據(jù)還是同步SQL語(yǔ)句到其他的數(shù)據(jù)庫(kù)中。此種情況應(yīng)用在對(duì)表結(jié)構(gòu)進(jìn)行調(diào)整或者批量更改數(shù)搖的時(shí)候非常有用。1.3.優(yōu)點(diǎn):擴(kuò)展性強(qiáng):當(dāng)系統(tǒng)要更高數(shù)據(jù)庫(kù)處理速度時(shí),只要簡(jiǎn)單地增加數(shù)據(jù)庫(kù)服務(wù)器就可以得到擴(kuò)展??删S護(hù)性:當(dāng)某節(jié)點(diǎn)發(fā)生故障時(shí),系統(tǒng)會(huì)自動(dòng)檢測(cè)故障并轉(zhuǎn)移故障節(jié)點(diǎn)的應(yīng)用

5、,保證數(shù)據(jù)庫(kù)的持續(xù)工作。安全性:因?yàn)閿?shù)據(jù)會(huì)同步的多臺(tái)服務(wù)器上,可以實(shí)現(xiàn)數(shù)據(jù)集的冗余,通過(guò)多份數(shù)據(jù)來(lái)保證安全性。另外它成功地將數(shù)據(jù)庫(kù)放到了內(nèi)網(wǎng)之中'更好地保護(hù)了數(shù)據(jù)庫(kù)的安全性。4.易用性:對(duì)應(yīng)用來(lái)說(shuō)完全透明,集辭暴露出來(lái)的就是一個(gè)IP。缺點(diǎn):不能夠按照Web服務(wù)器的處理能力分配負(fù)載=2. 負(fù)載均衡器(控制端)故障,會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)癱瘓。數(shù)據(jù)庫(kù)的讀寫分離實(shí)現(xiàn)原理:讀寫分離簡(jiǎn)單的說(shuō)是把對(duì)數(shù)據(jù)庫(kù)讀和寫的操作分開(kāi)對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)服務(wù)器,這樣能有效地減輕數(shù)據(jù)庫(kù)圧力,也能減輕io壓力。主數(shù)據(jù)庫(kù)提供寫操作,從數(shù)據(jù)庫(kù)提供讀操作,其實(shí)在很多系統(tǒng)中,主要是讀的操作。當(dāng)主數(shù)據(jù)庫(kù)逬行寫操作時(shí),數(shù)據(jù)要同步到從

6、的數(shù) 據(jù)庫(kù),這樣才能有效保證數(shù)據(jù)庫(kù)完整性。Portal LayerApplication LayerWriteR號(hào)ad數(shù)據(jù)庫(kù)Share Plex* Database Layer實(shí)現(xiàn)方法:在MS Sql server中可以使用發(fā)布定義的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)復(fù)制'實(shí)現(xiàn)讀寫分離'復(fù)制是將-組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個(gè)存儲(chǔ)站點(diǎn)上的有效方式。使用復(fù)制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺(tái)服務(wù)器上。復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動(dòng)同步更新從而保證數(shù)據(jù)的一致性。SQL SERVER復(fù)制技術(shù)類型有三種,分別是:快照復(fù)制、事務(wù)復(fù)制、合并復(fù)制。SQL SERVER

7、主要采用出版物、訂閱的方式來(lái)處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫(kù),可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。優(yōu)點(diǎn):1. 數(shù)據(jù)的實(shí)時(shí)性差:數(shù)據(jù)不是實(shí)時(shí)同步到自讀服務(wù)器上的,當(dāng)數(shù)據(jù)寫入主服務(wù)器后,要在下次同步后才能查詢到。2. 數(shù)據(jù)量大時(shí)同步效率差:?jiǎn)伪頂?shù)據(jù)量過(guò)大時(shí)插入和更新因索引,磁盤10等問(wèn)題,性能會(huì)變的很差。3. 同時(shí)連接多個(gè)(至少兩個(gè))數(shù)據(jù)庫(kù):至少要連接到兩個(gè)數(shù)據(jù)數(shù)據(jù)庫(kù) ' 實(shí)際的讀寫操作是在程序代碼中完成的,容易引起混亂。讀具有高性能高可靠性和

8、可伸縮:只讀服務(wù)器,因?yàn)闆](méi)有寫操作,會(huì)大大減輕磁盤I0等性能問(wèn)題,大大提高效率;只4. 讀服務(wù)器可以采用負(fù)載均衡,主數(shù)據(jù)庫(kù)發(fā)布到多個(gè)只讀服務(wù)器上實(shí)現(xiàn)讀操作的可伸縮性。數(shù)據(jù)庫(kù)拆分(分布式)通過(guò)某種特定的條件'將存放在同一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)分散存放到多個(gè)數(shù)據(jù)庫(kù)上,實(shí)現(xiàn)分布存儲(chǔ),通過(guò)路由規(guī)則路由訪問(wèn)特定的數(shù)據(jù)庫(kù),這樣一來(lái)每次訪問(wèn)面對(duì)的就不是單臺(tái)服務(wù)器了'而是N臺(tái)服務(wù)器,這樣就可以降低單臺(tái)機(jī)器的負(fù)載壓力。垂直(縱向)拆分:是指按功能模塊拆分,比如分為訂單庫(kù)、商品庫(kù)、用戶庫(kù)這種方式多個(gè)數(shù)據(jù)庫(kù)之間的表結(jié)構(gòu)不同水平(橫向)拆分:將同一個(gè)表的數(shù)據(jù)進(jìn)行分塊保存到不同的數(shù)據(jù)庫(kù)中,這些數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)

9、完全相同AEr AjGr仃削庫(kù)產(chǎn)品暉用戶庫(kù)* A城用樫序麗芬黠實(shí)現(xiàn)原理:使用垂直拆分,主要要看應(yīng)用類型是否合適這種拆分方式,如系統(tǒng)可以分為,訂單系統(tǒng),商品管理系統(tǒng),用戶管理系統(tǒng)業(yè)務(wù)系統(tǒng)比較明的,垂直拆分能很好的起到分散數(shù)據(jù)庫(kù)丿玉力的作用。業(yè)務(wù)模塊不明晰,耦合(表尖聯(lián))度比較高的系統(tǒng)不適合使用這種拆分方式。但是垂直拆分方式并不能徹底解決所有圧力問(wèn)題,例如有一個(gè)5000W的訂單表,操作起來(lái)訂單庫(kù)的壓力仍然很大,如我們需要在這個(gè)表中增加(insert) 條新的數(shù)據(jù),insert完畢后,數(shù)據(jù)庫(kù)會(huì)針對(duì)這張表重新建立索引 5000w行數(shù)搖建立索引 的系統(tǒng)開(kāi)銷還是不容忽視的,反過(guò)來(lái),假如我們將這個(gè)表分成10

10、0個(gè)table呢,從table_001 一直到table_100,5000w行數(shù)據(jù)平均下來(lái),每個(gè)子表里邊就只有 50萬(wàn)行數(shù)據(jù),這時(shí)候我們向一張只有50w行數(shù)據(jù)的table中insert數(shù)據(jù)后建立索引的時(shí)間就會(huì)呈數(shù)量級(jí)的下降,極大了提高了DB的運(yùn)行時(shí)效率,提高了 DB的并發(fā)量,這種拆分就是橫向拆分。實(shí)現(xiàn)方法:垂直拆分*拆分方式實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,根據(jù)表名訪問(wèn)不同的數(shù)據(jù)庫(kù)就可以了。橫向拆分的規(guī)則很多*這里1 順序拆分:如可以按訂單的日前按年份才分,2003年的放在db1中,2004年的db2,以此類推。當(dāng)然也可以按主鍵標(biāo)準(zhǔn)拆分。優(yōu)點(diǎn):可部分遷移缺點(diǎn):數(shù)據(jù)分布不均,可能2003年的訂單有100W,2008年的有500W。2. hash取模分:對(duì)userjd逬行hash (或者如果userjd是數(shù)值型的話直接使用user_id的值也可),然后用一個(gè)特定的數(shù)字,比如應(yīng)用中需要將一個(gè)數(shù)據(jù)庫(kù)切分成4個(gè)數(shù)據(jù)庫(kù)的話,我們就用4這個(gè)數(shù)字對(duì)userjd的hash值進(jìn)行取模運(yùn)算,也就是user_id%4,這樣的話每次運(yùn)算就有四種可能:結(jié)果為1的時(shí)候?qū)?yīng)DB1 ;結(jié)果為2的時(shí)候?qū)?yīng)DB2:結(jié)果為3的時(shí)候?qū)?yīng)DB3;結(jié)果為0的時(shí)候?qū)?yīng)DB4,這樣一來(lái)就非常均勻的將數(shù)據(jù)分配到4個(gè)DB中。優(yōu)點(diǎn):數(shù)據(jù)分布均

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論