《大型網(wǎng)站技術架構》讀書筆記

我讀的是掃描版的PDF版本狮腿,此書出版于2013年9月,距離現(xiàn)在已經4年多呕诉,但對于我來說蚤霞,依然新鮮。書中的許多內容雖耳熟能詳义钉,但從未形成系統(tǒng)昧绣。以此筆記,感謝作者捶闸,也為自己留點資料夜畴。

前事不忘,后事之師删壮。念念不忘贪绘,必有回響

理論基礎:

  1. 大型網(wǎng)站核心架構要素: 性能、 可用性央碟、伸縮性税灌、擴展性、安全性

  2. 網(wǎng)站的價值在于它能為用戶提供什么價值,在于網(wǎng)站能做什么菱涤,而不是在于它是怎么做的苞也,所以在網(wǎng)站還是很小的時候就去追求網(wǎng)站的架構是舍本逐未,得不償失的粘秆。小型網(wǎng)產上最需要做的就是為用戶提供好的服務來創(chuàng)造價值如迟,得到用戶的認可,活下去攻走,野蠻生長殷勘。

  3. 產品在設計之初就需要一個明解的定位:什么是產品要實現(xiàn)的功能,什么不是產品提供的特性昔搂。在產品漫長的生命周期中玲销,會有形形色色的困難和誘惑來改變產品的發(fā)展方向,左右搖擺摘符。什么都想做的產品贤斜,最后有可能成為一個失去生命力的四不像

  4. 歸根結底,技術是為業(yè)務服務的议慰,技術選型和架構決策依賴業(yè)務乃至企業(yè)的業(yè)務上戰(zhàn)略規(guī)劃,離開業(yè)務發(fā)展的支撐和驅動奴曙,技術走不遠别凹,甚至會迷路

  5. 簡單的三層架構:應用層,服務層洽糟,數(shù)據(jù)層炉菲。

  6. 無狀態(tài)的服務(session記錄狀態(tài)),無狀態(tài)的對象(代碼級別)

  7. 服務的冪等性設計

  8. CAP原理坤溃,認為一個提供數(shù)據(jù)服務的存儲系統(tǒng)無法同時滿足數(shù)據(jù)一致性拍霜、數(shù)據(jù)可用性、分區(qū)耐受性這三個條件薪介。

  9. 自動化發(fā)布祠饺、灰度發(fā)布

  10. 監(jiān)控數(shù)據(jù)采集乓旗,監(jiān)控管理霹期。事物的發(fā)展總是先求生存贱除,再求發(fā)展丸边,保證網(wǎng)站可用蚪黑,萬無一失膝藕,任重而道遠

  11. 計算機的任何ukdj下周都可以通過增加一個虛擬層來解決

  12. 一個良好申縮性架構設計的網(wǎng)站妨退,其設計總是走在業(yè)務發(fā)展的前面浓镜,在業(yè)務需要處理更多訪問和服務之前目木,就已經做好準備换途,當業(yè)務需要時,只需要購買或租用服務器簡單部署實施就可以了。技術團隊亦可高枕無憂军拟。

  13. 高手定律:這個世界只有遇不到的問題剃执,沒有解決不了的問題。高手之所以成為高手吻谋,是因為他們遇到了常人很難遇到的問題忠蝗,并解決了。

  14. 關于擴展性和申縮性:

    • 擴展性:指對現(xiàn)有系統(tǒng)影響最小的情況下漓拾,系統(tǒng)功能可持續(xù)擴展或提升的能力阁最。表現(xiàn)在第ixyc基礎設施穩(wěn)定,不需要經常變更骇两,應用之間較少依賴和耦合速种,對需求變更可以敏捷響應。它是系統(tǒng)架構設計層面的開閉原則(對擴展開放低千,對修改關閉)配阵,架構設計考慮未來功能擴展,當系統(tǒng)增加新功能時示血,不需要對現(xiàn)有系統(tǒng)的結構和代碼進行修改
    • 申縮性:指系統(tǒng)能夠增加(或減少)自身資源規(guī)模的方式棋傍,增強(減少)自己計算處理事務的能力。如果這種增減是成比例的难审,就被稱作線性伸縮性瘫拣。在網(wǎng)站架構中,通常指利用集群的方式增加服務器數(shù)量告喊、提高系統(tǒng)的整體事務吞吐能力麸拄。
  15. 網(wǎng)站安全性相關:防御應用攻擊 、信息加密和密鑰安全黔姜、信息過濾和反垃圾拢切、電子商務的風控

  16. 沒有絕對的安全,正如沒有絕對的自由一樣秆吵。網(wǎng)站的相對安全是通過提高攻擊門檻達到的淮椰。

故障舉例:

  1. 寫日志引發(fā)故障:磁盤空間不足
  2. 高并發(fā)訪問數(shù)據(jù)庫引發(fā)故障:高頻訪問頁面靜態(tài)化
  3. 高并發(fā)情況下鎖引發(fā)的故障:鎖操作要永遠謹慎
  4. 緩存引發(fā)的故障:當緩存已經成為網(wǎng)站架構不可或缺的一部分時,對緩存的管理就要提高到和其它服務器一樣的級別
  5. 應用啟動不同步引發(fā)的故障:注意校驗服務啟動的順序
  6. 大文件獨占磁盤引發(fā)的故障:存儲的使用需要根據(jù)不同文件類型和用途進行管理纳寂。比如大实苞、小文件獨立存儲
  7. 濫用生產環(huán)境引發(fā)的故障:訪問線上生產環(huán)境要規(guī)范、專人專管
  8. 不規(guī)范的流程引發(fā)的故障:代碼提交前使用diff工具進行比較烈疚,確認沒有提交不該提交的代碼黔牵。加強code review
  9. 不好的編程習慣引發(fā)故障:程序在處理輸入對象時,需要校驗

架構師篇

關注人而不是關注產品

一定要堅信:一群優(yōu)秀的人做一件他們熱愛的事爷肝,一定能取得成功猾浦。不管過程多么曲折陆错,不管外人看來有多么不可思議不靠譜

所以最好 的軟件項目管理不是制訂計劃,組織資源金赦,跟蹤修正項目進展音瓷,對成員進行激勵和懲罰,而是發(fā)掘項目組每個成員的優(yōu)秀潛能夹抗,讓大家理解并熱愛軟件產品最終的藍圖和愿景绳慎。每個人都是為實現(xiàn)自我價值而努力,不是為了領工資而工作漠烧。

一旦做到這一點杏愤,項目組每個成員都會自我驅動,自覺合作已脓,尋找達成目標的最優(yōu)路徑珊楼,并堅韌不拔的持續(xù)前進。整個過程度液,不需要拙劣的胡蘿卜和大捧厕宗,最好的獎勵就是最終達成的目標本身,最大的懲罰就是這個美好的目標沒有實現(xiàn)堕担。

這也是領導的真諦:尋找一個值得共同奮斗的目標已慢,營造一個讓大家都能最大限度發(fā)揮自我價值的工作氛圍。

沒有懶惰的員工霹购,只有沒被激發(fā)出來的激情佑惠。所有強迫員工加班的管理都,都應該為自己的無能而羞愧

發(fā)掘人的優(yōu)秀

是事情成就了人厕鹃,而不是人成就了事兢仰。
發(fā)掘人的優(yōu)秀比發(fā)掘優(yōu)秀的人更有意義

共享美好藍圖

  • 藍圖應該是表述清楚的:產品要做什么乍丈,不做什么剂碴,要達到什么業(yè)務目標
  • 藍圖應該是形象的:產品能為用戶創(chuàng)建什么價值、能實現(xiàn)什么樣的市場目標轻专、產品最終會長什么樣忆矛,都需要能形象想像出來
  • 藍圖應該是簡單的:不管內部還是外部溝通,都能一名話說明白:我們在做什么请垛。

在項目過程中催训,架構師要保持對目標藍圖的關注,對任何偏離藍圖的設計和決定保持警惕宗收,錯誤的偏離要及時修正漫拭,必要的變更經大家討論,并需要重新獲得大家的認同混稽。

共同參與架構

  1. 不要只有架構師一個人捅有架構
  2. 讓其他人維護框架與架構文檔

學會妥協(xié)

不要企圖在項目中證明自己是正確的采驻,一定要記住审胚,你是來做軟件的,不是來當老大的礼旅。

成就他人膳叨,成就自己

活著不是為了工作,為是為了設計痘系、寫程序菲嘴,這些不是我們生活的目的。我們活著是為了成就我們自己汰翠,有原則要想成就自己龄坪,就必須首先成就他人。

每個人都有自己成就的目標奴璃,而工作是達成自我成就的一種手段:通過工作的挑戰(zhàn)悉默,發(fā)掘自我的潛能,重新認知我和世界苟穆。

職場

  1. 把“我的問題”表述成"我們的問題“
  2. 給上司提封閉式問題抄课,給下屬提開放式問題
  3. 指出問題而不是批評人
  4. 用贊同的方式提出問題。(所謂直言有諱是指想要表達的意圖要直截了當說明白雳旅,不要兜圈子跟磨,但是在表達方式上要有所避諱,照顧到當事人的感受攒盈。)
  5. 在解決我的問題之前抵拘,先解決你的問題
  6. 適當?shù)奶颖軉栴}

大型網(wǎng)站架構技術一覽

網(wǎng)站系統(tǒng)架構層次
  1. 前端架構
    瀏覽器優(yōu)化技術、CDN型豁、動靜分離僵蛛、圖片服務、反向代理迎变、DNS
  2. 應用層架構
    應用層是處理網(wǎng)站主要業(yè)務邏輯的地方

開發(fā)框架充尉、頁面渲染、負載均衡衣形、Session管理驼侠、動態(tài)頁面靜態(tài)化、業(yè)務拆分谆吴、虛擬化服務器

  1. 服務層架構
    提供基礎服務倒源,供應用層調用,完成網(wǎng)站業(yè)務

分布式消息句狼、分布式服務笋熬、分布式緩存、分布式配置

  1. 存儲層架構
    提供數(shù)據(jù)腻菇、文件的持久化存儲訪問和管理服務
    分布式文件胳螟、關系數(shù)據(jù)庫苫拍、NoSql數(shù)據(jù)庫、數(shù)據(jù)同步

  2. 后臺架構
    網(wǎng)站應用中旺隙,除了要處理用戶實時訪問請求外绒极,還有一些后臺非實時數(shù)據(jù)分析要處理。
    搜索引擎(站內)蔬捷、數(shù)據(jù)倉庫垄提、推薦系統(tǒng)

  3. 數(shù)據(jù)采集與監(jiān)控
    瀏覽器數(shù)據(jù)采集、服務器業(yè)務數(shù)據(jù)采集周拐、服務器性能數(shù)據(jù)采集铡俐、系統(tǒng)監(jiān)控、系統(tǒng)警報

  4. 安全架構
    web攻擊妥粟、數(shù)據(jù)保護

  5. 數(shù)據(jù)中心機房架構
    機房架構审丘、機柜架構、服務器架構

后記:
這是一本講大型網(wǎng)站架構設計的書勾给,但是大型網(wǎng)站不是設計出來的滩报,而是逐步演化出來的。所以播急,不要企圖去設計一個大型網(wǎng)站脓钾。

互聯(lián)網(wǎng)正在并將繼續(xù)改變這個世界,一切才剛剛開始桩警,你我正生縫其時可训。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捶枢,隨后出現(xiàn)的幾起案子握截,更是在濱河造成了極大的恐慌,老刑警劉巖烂叔,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谨胞,死亡現(xiàn)場離奇詭異,居然都是意外死亡长已,警方通過查閱死者的電腦和手機畜眨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門昼牛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來术瓮,“玉大人,你說我怎么就攤上這事贰健“模” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵伶椿,是天一觀的道長辜伟。 經常有香客問我氓侧,道長,這世上最難降的妖魔是什么导狡? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任约巷,我火速辦了婚禮,結果婚禮上旱捧,老公的妹妹穿的比我還像新娘独郎。我一直安慰自己,他們只是感情好枚赡,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布氓癌。 她就那樣靜靜地躺著,像睡著了一般贫橙。 火紅的嫁衣襯著肌膚如雪贪婉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天卢肃,我揣著相機與錄音疲迂,去河邊找鬼。 笑死莫湘,一個胖子當著我的面吹牛鬼譬,可吹牛的內容都是我干的。 我是一名探鬼主播逊脯,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼优质,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了军洼?” 一聲冷哼從身側響起巩螃,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匕争,沒想到半個月后避乏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡甘桑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年拍皮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跑杭。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡铆帽,死狀恐怖,靈堂內的尸體忽然破棺而出德谅,到底是詐尸還是另有隱情爹橱,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布窄做,位于F島的核電站愧驱,受9級特大地震影響慰技,放射性物質發(fā)生泄漏。R本人自食惡果不足惜组砚,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一吻商、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糟红,春花似錦手报、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陈肛,卻和暖如春揍鸟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背句旱。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工阳藻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谈撒。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓腥泥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啃匿。 傳聞我的和親對象是個殘疾皇子蛔外,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容