日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

大型網(wǎng)站架構演變之9大階段 什么是大型網(wǎng)站( 四 )

  • 需要維護搜索引擎集群
  • 搜索引擎并不能替代數(shù)據(jù)庫,它解決了某些場景下的精準、快速、高效的“讀”操作,是否引入搜索引擎,需要綜合考慮整個系統(tǒng)的需求 。
    階段六、用緩存緩解讀庫的壓力
    常用的緩存機制包括頁面級緩存、應用數(shù)據(jù)緩存和數(shù)據(jù)庫緩存 。
    應用層和數(shù)據(jù)庫層的緩存
    隨著訪問量的增加,逐漸出現(xiàn)了許多用戶訪問同一部分熱門內(nèi)容的情況,對于這些比較熱門的內(nèi)容,沒必要每次都從數(shù)據(jù)庫讀取 。我們可以使用緩存技術,例如可以使用Google的開源緩存技術Guava或者使用Memecahed作為應用層的緩存,也可以使用Redis作為數(shù)據(jù)庫層的緩存 。
    另外,在某些場景下,關系型數(shù)據(jù)庫并不是很適合,例如我想做一個“每日輸入密碼錯誤次數(shù)限制”的功能,思路大概是在用戶登錄時,如果登錄錯誤,則記錄下該用戶的IP和錯誤次數(shù),那么這個數(shù)據(jù)要放在哪里呢?假如放在內(nèi)存中,那么顯然會占用太大的內(nèi)容;假如放在關系型數(shù)據(jù)庫中,那么既要建立數(shù)據(jù)庫表,還要簡歷對應的Java bean,還要寫SQL等等 。而分析一下我們要存儲的數(shù)據(jù),無非就是類似{ip:errorNumber}這樣的key:value數(shù)據(jù) 。對于這種數(shù)據(jù),我們可以用NOSQL數(shù)據(jù)庫來代替?zhèn)鹘y(tǒng)的關系型數(shù)據(jù)庫 。
    頁面緩存
    除了數(shù)據(jù)緩存,還有頁面緩存 。比如使用HTML5的localstroage或者Cookie 。除了頁面緩存帶來的性能提升外,對于并發(fā)訪問且頁面置換頻率小的頁面,應盡量使用頁面靜態(tài)化技術 。
    • 優(yōu)點:減輕數(shù)據(jù)庫的壓力,大幅度提高訪問速度;
    • 缺點:需要維護緩存服務器,提高了編碼的復雜性 。
    值得一提的是:
    緩存集群的調(diào)度算法不同與上面提到的應用服務器和數(shù)據(jù)庫 。最好采用一致性哈希算,這樣才能提高命中率 。
    階段七、數(shù)據(jù)庫水平拆分與垂直拆分
    我們的網(wǎng)站演進到現(xiàn)在,交易、商品、用戶的數(shù)據(jù)都還在同一個數(shù)據(jù)庫中 。盡管采取了增加緩存和讀寫分離的方式,但隨著數(shù)據(jù)庫的壓力繼續(xù)增加,數(shù)據(jù)庫數(shù)據(jù)量的瓶頸越來越突出,此時,我們可以有數(shù)據(jù)垂直拆分和水平拆分兩種選擇 。
    數(shù)據(jù)垂直拆分
    垂直拆分的意思是把數(shù)據(jù)庫中不同的業(yè)務數(shù)據(jù)拆分到不同的數(shù)據(jù)庫中,結合現(xiàn)在的例子,就是把交易、商品、用戶的數(shù)據(jù)分開 。
    優(yōu)點:
    • 解決了原來把所有業(yè)務放在一個數(shù)據(jù)庫中的壓力問題;
    • 可以根據(jù)業(yè)務的特點進行更多的優(yōu)化 。
    缺點:
    • 需要維護多個數(shù)據(jù)庫的狀態(tài)一致性和數(shù)據(jù)同步 。
    問題:
    • 需要考慮原來跨業(yè)務的事務;
    • 跨數(shù)據(jù)庫的Join 。
    解決問題方案:
    • 應該在應用層盡量避免跨數(shù)據(jù)庫的分布式事務,如果非要跨數(shù)據(jù)庫,盡量在代碼中控制 。
    • 通過第三方中間件來解決,如上面提到的MyCat,MyCat提供了豐富的跨庫Join方案,詳情可參考MyCat官方文檔 。
    數(shù)據(jù)水平拆分
    數(shù)據(jù)水平拆分就是把同一個表中的數(shù)據(jù)拆分到兩個甚至多個數(shù)據(jù)庫中 。產(chǎn)生數(shù)據(jù)水平拆分的原因是某個業(yè)務的數(shù)據(jù)量或者更新量到達了單個數(shù)據(jù)庫的瓶頸,這時就可以把這個表拆分到兩個或更多個數(shù)據(jù)庫中 。
    優(yōu)點:
    • 如果能克服以上問題,那么我們將能夠很好地對數(shù)據(jù)量及寫入量增長的情況 。
    問題: