《大型網站技術架構》讀書筆記[2] - 架構的模式

《大型網站技術架構》讀書筆記 - 架構的模式css

image

大CC上週寫的讀書筆記記錄的是網絡的升級路線,其中用到的各類技術手段只是點到即止(《大型網站技術架構》讀書筆記 - 網站的技術升級路線);今天寫的第二篇筆記,討論架構的模式;這篇文章,其中主幹是書中的重點筆記,分支和內容則是我展開的思考;html

須要說明,模式不是萬能的,任何模式都是必定應用場景的經驗總結;離開具體的場景生搬硬套就偏離的模式總結的初衷;前端

分層

隨着應用框架的普及,分層的概念已經深刻人心;從咱們學習寫web代碼開始,框架就要求咱們經過分層開發來適應框架的結構;只是到後來,才逐漸體會到分層帶來的好處;
最基本的分層通常分爲如下三層:
應用層:面向終端用戶的應用;
服務層:爲應用層提供服務的通用服務;
數據層:數據存儲層;
分層架構是邏輯上的,但物理上也可部署在不一樣的機器上。程序員

分割

網站大了,經過分割網站的功能和業務,大而化小,將不一樣的模塊分佈式部署,從而提升併發處理能力和功能擴展能力;web

分佈式集羣

當單機負載沒法知足咱們的需求時,就會考慮分佈式:redis

分佈式靜態資源 (動靜分離)

這是最爲簡單的分佈式,將網站中的靜態資源分離出去,部署到別的機器上, 減輕應用服務器壓力;這種分離最爲簡單,並且性能提高明顯;同時,採用獨立域名,加大瀏覽器的併發加載量,讓網站更快的呈如今用戶面前;web優化中有這麼一個優化順序,先前端後後臺,前端優化是須要時間最少而見效最快的方式,關於具體的優化步驟和效果,能夠參考大CC以前寫的這篇文章:WEB站點性能優化實踐(加載速度提高2s)sql

分佈式應用和服務

分層和分割後的應用分佈式部署,提高性能、增長網站的伸縮性和擴展性;數據庫

分佈式數據和存儲

包括關係數據庫的分佈式和NoSQL的分佈式;關係數據庫的分佈式,能夠細分爲分表和數據分片;數據庫的分佈式不是那麼簡單,阿里的OceanBase項目貌似是作到了關係數據庫的分佈式;
Nosql的分佈式相對簡單許多,例如新浪的redis使用場景,就是分佈式存儲微博內容;關於新浪redis的分佈式應用,請移步這篇文章:Redis 在新浪微博中的應用瀏覽器

分佈式計算

以Hadoop和MapReduce爲表明的分佈式計算,主要應用場景爲日誌分析、索引創建,數據挖掘等,實時處理的分佈式計算仍是見得少;緩存

分佈式要注意的問題

任何事務都有其兩面性,分佈式並不必定就是好的,在網絡訪問量小的時候,不必分佈式,單機處理能大大節省運維成本;
分佈式須要注意如下問題:

  • 分佈式服務器見通訊的網絡開銷
  • 服務器多了,服務器宕機機率增大
  • 如何保持分佈式存儲的數據的一致性,一臺機器宕機後故障恢復,如何保證一致性;
  • 分佈式事務難以保證
  • 分佈式部署後,結構會複雜不少,這帶來了維護的困難

緩存

最簡單的緩存是本地緩存:有頁面緩存、前端頁面靜態化、前端頁面的片斷化緩存、以及數據緩存;大CC以前介紹過一篇關於Yii的緩存配置,有興趣能夠參考:Yii 的緩存(頁面緩存配置實例)
須要緩存的內容多了,單機裝不下,就得考慮分佈式緩存;
反向代理也是緩存的一種,反向代理將緩存放到了應用層的前面,用戶請求還未接入到應用層,反向代理就將以前被訪問過的內容返回給用戶;
CDN也是緩存,通常由第三方服務商提供;相比反向代理,CDN這個緩存與用戶又近了一步;
下圖展現了用戶的WEB請求中會遇到的緩存; 
image
CDN提供最基礎的緩存(靜態化的頁面和靜態資源(css、js等);
反向代理提供與CDN相似的數據;
WEB服務器的緩存提供片斷化的緩存和警戒資源緩存;頁面中變化的部分則須要經過web服務器生成,其中涉及到調用應用服務器;
應用服務器中的緩存爲計算結果的緩存;主要是內容緩存;基礎數據緩存;

異步

使用SEDA(分段消息驅動)設計,異步非阻塞技術,可提升系統可用性,加快網站響應速度;
異步還有個好處,就是消除併發訪問高峯;發到後臺的請求經過消息隊列存起來,起到緩衝做用,後臺按照其處理能力依次處理;
在實現上,單一服務器上使用多線程共享內存隊列來實現異步,在集羣中,一般使用分佈式消息隊列來實現,好比咱們用到的MQ、ZeroQ等;

冗餘

考慮到數據安全,備份必不可少;冷備份沒有什麼好說的,主要是熱備,架構的設計中須要考慮數據的熱備;

自動化

自動化應該是程序員最應該掌握的基礎技能;通常而言,自動化要求的技術含量不是很高,但倒是長期實踐的經驗結晶;自動化能有效的下降公司運營成本,提高程序員的生活質量,想一想就歡樂,重複的工做都交給機器來作,創造性的工做才須要人來參與嘛;自動化主題普遍,大體包含如下方面:
發佈過程自動化
自動化代碼管理
自動化測試
自動化部署
自動化監控
自動化失效轉移和恢復
自動化降級
自動化分配資源

附:思惟導圖

卓越亞馬遜地址: 《大型網站技術架構》
點擊查看原圖

網站的架構模式

若是您認爲閱讀這篇博客有些收穫,請點擊右下角的【推薦】按鈕。

Posted by: 大CC | 09APR,2014
博客:blog.me115.com [訂閱]
微博:新浪微博

相關文章
相關標籤/搜索