国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
高并發(fā)高負(fù)載數(shù)據(jù)庫架構(gòu)策略
在WEB網(wǎng)站的規(guī)模從小到大不斷擴(kuò)展的過程中,數(shù)據(jù)庫的訪問壓力也不斷的增加,數(shù)據(jù)庫的架構(gòu)也需要動態(tài)擴(kuò)展,在數(shù)據(jù)庫的擴(kuò)展過程基本上包含如下幾步,每一個擴(kuò)展都可以比上一步驟的部署方式的性能得到數(shù)量級的提升。
      1、WEB應(yīng)用和數(shù)據(jù)庫部署在同一臺服務(wù)器上
      一般的小規(guī)模的網(wǎng)站采用這種方式,用戶量、數(shù)據(jù)量、并發(fā)訪問量都比較小,否則單臺服務(wù)器無法承受,并且在遇到性能瓶頸的時候升級硬件所需要的費用非常高昂,在訪問量增加的時候,應(yīng)用程序和數(shù)據(jù)庫都來搶占有限的系統(tǒng)資源,很快就又會遇到性能問題。
      
      2、WEB應(yīng)用和數(shù)據(jù)庫部署在各自獨立的服務(wù)器上
      web應(yīng)用和數(shù)據(jù)庫分開部署,WEB應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器各司其職,在系統(tǒng)訪問量增加的時候可以分別升級應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器,這種部署方式是一般小規(guī)模網(wǎng)站的典型部署方式。在將應(yīng)用程序進(jìn)行性能優(yōu)化并且使用數(shù)據(jù)庫對象緩存策略的情況下,可以承載較大的訪問量,比如2000用戶,200個并發(fā),百萬級別的數(shù)據(jù)量。
     
    3、數(shù)據(jù)庫服務(wù)器采用集群方式部署(比如Oracle的一個數(shù)據(jù)庫多個實例的情況)
     數(shù)據(jù)庫集群方式能承擔(dān)的負(fù)載是比較大的,數(shù)據(jù)庫物理介質(zhì)為一個磁盤陣列,多個數(shù)據(jù)庫實例以虛擬IP方式向外部應(yīng)用服務(wù)器提供數(shù)據(jù)庫連接服務(wù)。這種部署方式基本上可以滿足絕大多數(shù)的常見WEB應(yīng)用,但是還是不能滿足大用戶量、高負(fù)載、數(shù)據(jù)庫讀寫訪問非常頻繁的應(yīng)用。
   
4、數(shù)據(jù)庫采用主從部署方式
      在面向大眾用戶的博客、論談、交友、CMS等系統(tǒng)中,有上百萬的用戶,有上千萬的數(shù)據(jù)量,存在眾多的數(shù)據(jù)庫查詢操作,也有較多的數(shù)據(jù)庫寫操作,并且在多數(shù)情況下都是讀操作遠(yuǎn)大于寫操作的。在這個時候,假如能將數(shù)據(jù)庫的讀寫操作分離的話,對于系統(tǒng)來講是一個很大的提高啦。數(shù)據(jù)庫的主從部署方式就走到我們面前啦。
     主從復(fù)制:
     幾乎所有的主流數(shù)據(jù)庫都支持復(fù)制,這是進(jìn)行數(shù)據(jù)庫簡單擴(kuò)展的基本手段。下面以Mysql為例來說明,它支持主從復(fù)制,配置也并不復(fù)雜,只需要開啟主服務(wù)器上的二進(jìn)制日志以及在主服務(wù)器和從服務(wù)器上分別進(jìn)行簡單的配置和授權(quán)。Mysql的主從復(fù)制是一句主服務(wù)器的二進(jìn)制日志文件進(jìn)行的,主服務(wù)器日志中記錄的操作會在從服務(wù)器上重放,從而實現(xiàn)復(fù)制,所以主服務(wù)器必須開啟二進(jìn)制日志,自動記錄所有對于主數(shù)據(jù)庫的更新操作,從服務(wù)器再定時到主服務(wù)器取得二進(jìn)制日志文件進(jìn)行重放則完成了數(shù)據(jù)的復(fù)制。主從復(fù)制也用于自動備份。
      讀寫分離:
      為保證數(shù)據(jù)庫數(shù)據(jù)的一致性,我們要求所有對于數(shù)據(jù)庫的更新操作都是針對主數(shù)據(jù)庫的,但是讀操作是可以針對從數(shù)據(jù)庫來進(jìn)行。大多數(shù)站點的數(shù)據(jù)庫讀操作比寫操作更加密集,而且查詢條件相對復(fù)雜,數(shù)據(jù)庫的大部分性能消耗在查詢操作上了。
      主從復(fù)制數(shù)據(jù)是異步完成的,這就導(dǎo)致主從數(shù)據(jù)庫中的數(shù)據(jù)有一定的延遲,在讀寫分離的設(shè)計中必須要考慮這一點。以博客為例,用戶登錄后發(fā)表了一篇文章,他需要馬上看到自己的文章,但是對于其它用戶來講可以允許延遲一段時間(1分鐘/5分鐘/30分鐘),不會造成什么問題。這時對于當(dāng)前用戶就需要讀主數(shù)據(jù)庫,對于其他訪問量更大的外部用戶就可以讀從數(shù)據(jù)庫。
      數(shù)據(jù)庫反向代理:
      在讀寫分離的方式使用主從部署方式的數(shù)據(jù)庫的時候,會遇到一個問題,一個主數(shù)據(jù)庫對應(yīng)多臺從服務(wù)器,對于寫操作是針對主數(shù)據(jù)庫的,數(shù)據(jù)庫個數(shù)是唯一的,但是對于從服務(wù)器的讀操作就需要使用適當(dāng)?shù)乃惴▉矸峙湔埱罄?,尤其對于多個從服務(wù)器的配置不一樣的時候甚至需要讀操作按照權(quán)重來分配。
      對于上述問題可以使用數(shù)據(jù)庫方向代理來實現(xiàn)。就像WEB方向代理服務(wù)器一樣,MYsql Proxy同樣可以在SQL語句轉(zhuǎn)發(fā)到后端的Mysql服務(wù)器之前對它進(jìn)行修改。
5、數(shù)據(jù)庫垂直分割
      主從部署數(shù)據(jù)庫中,當(dāng)寫操作占了主數(shù)據(jù)庫的CPU消耗的50%以上的時候,我們再增加從服務(wù)器的意義就不是很大了,因為所有的從服務(wù)器的寫操作也將占到CPU消耗的50%以上,一臺從服務(wù)器提供出來查詢的資源非常有限。數(shù)據(jù)庫就需要重新架構(gòu)了,我們需要采用數(shù)據(jù)庫垂直分區(qū)技術(shù)啦。
      最簡單的垂直分區(qū)方式是將原來的數(shù)據(jù)庫中獨立的業(yè)務(wù)進(jìn)行分拆(被分拆出來的部分與其它部分不需要進(jìn)行Join連接查詢操作),比如WEB站點的BLOG和論壇,是相對獨立的,與其它的數(shù)據(jù)的關(guān)聯(lián)性不是很強(qiáng),這時可以將原來的的數(shù)據(jù)庫拆分為一個BLog庫,一個論壇庫,以及剩余的表所組成的庫。這三個庫再各自進(jìn)行主從數(shù)據(jù)庫方式部署,這樣整個數(shù)據(jù)庫的壓力就分擔(dān)啦。
      另外查詢擴(kuò)展性也是采用數(shù)據(jù)庫分區(qū)最主要的原因之一。將一個大的數(shù)據(jù)庫分成多個小的數(shù)據(jù)庫可以提高查詢的性能,因為每個數(shù)據(jù)庫分區(qū)擁有自己的一小部分?jǐn)?shù)據(jù)。假設(shè)您想掃描1億條記錄,對一個單一分區(qū)的數(shù)據(jù)庫來講,該掃描操作需要數(shù)據(jù)庫管理器獨立掃描一億條記錄,如果您將數(shù)據(jù)庫系統(tǒng)做成50個分區(qū),并將這1億條記錄平均分配到這50個分區(qū)上,那么每個數(shù)據(jù)庫分區(qū)的數(shù)據(jù)庫管理器將只掃描200萬記錄。
6、數(shù)據(jù)庫水平分割
      在數(shù)據(jù)庫的垂直分區(qū)之后,假如我們的BLOG庫又再次無法承擔(dān)寫操作的時候,我們又該怎么辦呢?數(shù)據(jù)庫垂直分區(qū)這種擴(kuò)展方式又無能為力了,我們需要的是水平分區(qū)。
      水平分區(qū)意味著我們可以將同一個數(shù)據(jù)庫表中的記錄通過特定的算法進(jìn)行分離,分別保存在不同的數(shù)據(jù)庫表中,從而可以部署在不同的數(shù)據(jù)庫服務(wù)器上。很多的大規(guī)模的站點基本上都是主從復(fù)制+垂直分區(qū)+水平分區(qū)這樣的架構(gòu)。水平分區(qū)并不依賴什么特定的技術(shù),完全是邏輯村面的規(guī)劃,需要的是經(jīng)驗和業(yè)務(wù)的細(xì)分。
      如何分區(qū)呢?對于大型的WEB站點來說,必須分區(qū),并且對于分區(qū)我們沒有選擇的余地,對于那些頻繁訪問導(dǎo)致站點接近崩潰的熱點數(shù)據(jù),我們必須分區(qū)。
     在對數(shù)據(jù)分區(qū)的時候,我們必須要存在一個分區(qū)索引字段,比如USER_ID,它必須和所有的記錄都存在關(guān)系,是分區(qū)數(shù)據(jù)庫中的核心表的主鍵,在其它表中作為外鍵,并且在使用主鍵的時候,該主鍵不能是自增長的,必須是業(yè)務(wù)主鍵才可以。
     余數(shù)分區(qū):
     我們可以將User_ID%10后的值為依據(jù)存入到不同的分區(qū)數(shù)據(jù)庫中,該算法簡單高效,但是在分區(qū)數(shù)據(jù)庫個數(shù)有變動的時候,整個系統(tǒng)的數(shù)據(jù)需要重新分布。
     范圍分區(qū):
     我們可以將User_ID的范圍進(jìn)行分區(qū),比如1-100000范圍為一個分區(qū)數(shù)據(jù)庫,100001-200000范圍為一個分區(qū)數(shù)據(jù)庫,該算法在分區(qū)數(shù)據(jù)庫個數(shù)有變動的時候,系統(tǒng)非常有利于擴(kuò)展,但是容易導(dǎo)致不同分區(qū)之間的壓力不同,比如老用戶所在的分區(qū)數(shù)據(jù)庫的壓力很大,但是新用戶的分區(qū)數(shù)據(jù)庫的壓力偏小。    
      映射關(guān)系分區(qū):  
      將對分區(qū)索引字段的每個可能的結(jié)果創(chuàng)建一個分區(qū)映射關(guān)系,這個映射關(guān)系非常龐大,需要將它們寫入數(shù)據(jù)庫中。比如當(dāng)應(yīng)用程序需要知道User_id為10的用戶的BLOG內(nèi)容在那個分區(qū)時,它必須查詢數(shù)據(jù)庫獲取答案,當(dāng)然,我們可以使用緩存來提高性能。
      這種方式詳細(xì)保存了每一個記錄的分區(qū)對應(yīng)關(guān)系,所以各個分區(qū)有非常強(qiáng)的可伸縮性,可以靈活的控制,并且將數(shù)據(jù)庫從一個分區(qū)遷移到另一個分區(qū)也很簡單,也可以使各個分區(qū)通過靈活的動態(tài)調(diào)節(jié)來保持壓力的分布平衡。

本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/zhangzhaokun/archive/2009/10/22/4711693.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一個社交App是如何構(gòu)建高伸縮性的交互式系統(tǒng)
如果有一個特別大的訪問量到數(shù)據(jù)庫上,怎么做優(yōu)化?主從復(fù)制、讀寫分離
支付寶架構(gòu)師眼中的高并發(fā)架構(gòu)——1
NoSQL初探之人人都愛Redis:(4)Redis主從復(fù)制架構(gòu)初步探索
MySQL 主從復(fù)制與讀寫分離概念及架構(gòu)分析
MySQL主從配置詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服