《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第1篇 概述

fancybox發表於2018-12-24

技術更新快,而本書出版時間略早,部分新技術沒有提到,但是不影響整體,值得一讀。

 

這是一本關於網站架構的書,闡述網站技術架構最基本的驅動力,基礎的架構設計原理,以及構架方案選擇的價值觀。

  第1篇,從演化、模式、要素三個維度描述網站整體架構。(對第二篇的總結概述)

  第2篇,從效能、可用性、伸縮性、擴充套件性、安全五要素方面詳細描述網站架構核心原理,其中重要的負載均衡、非同步處理、分散式快取等技術方案又在不同章節多角度描述。

  第3篇,通過幾個具體案例再一次從整體和區域性描述網站架構方法。

  第4篇,從架構師做事的角度回顧網站技術架構。

第1篇 概述

1 大型網站架構演化 2

1.1 大型網站軟體系統的特點 3

  高併發、大流量、高可用、海量資料、...漸進式發展。

1.2 大型網站架構演化發展歷程 4

1.2.1 初始階段的網站架構 4

 

1.2.2 應用服務和資料服務分離 4

側重點:

應用程式:CPU

資料庫伺服器:磁碟記憶體

檔案伺服器:硬碟

1.2.3 使用快取改善網站效能 5

 

二八定律:80%的業務訪問集中在20%的資料上

快取分為:1.本地快取(應用伺服器上),2.遠端快取(分散式快取伺服器上)

1.2.4 使用應用伺服器叢集改善網站的併發處理能力 6

使用叢集是解決網站高併發、海量資料問題的常用手段。

1.2.5 資料庫讀寫分離 7

配置兩個資料庫主從關係。

1.2.6 使用反向代理和CDN加速網站響應 8

CND:部署在網路提供商的機房,使使用者在請求網站服務時,可以從距自己最近的機房獲取資料。

反向代理:部署在網站的中心機房,當使用者請求到達中心機房後,首先訪問反向代理伺服器,如果快取著使用者請求的資源,將直接返回給使用者。

1.2.7 使用分散式檔案系統分散式資料庫系統 9

 

分散式資料庫是網站資料庫拆分的最後手段,只有單表的資料量非常龐大時使用。網站更常用的資料庫拆分手段是業務分庫,將不同業務的資料部署在不同的伺服器上。

1.2.8 使用NoSQL和搜尋引擎 10

或者HBase

1.2.9 業務拆分 11

為了應對日益複雜的業務場景,使用分而治之的手段將整個網站業務分成不同的產品線,如交易網站:首頁、店鋪、買家、賣家、訂單。

具體到技術上,也會根據產品線劃分,拆分成許多應用,獨立部署維護。通過超連結建立關係(導航欄地址指向不同應用)。

1.2.10 分散式服務 11

將入“使用者管理”等公用的業務提取出來,獨立部署。

1.3 大型網站架構演化的價值觀 13

網站的價值在於它能為使用者提供什麼價值,在於網站能做什麼,而不在於它是怎麼做的,所以在網站還很小的時候就去追求網站的架構是舍木逐末,得不償失的。小型網站最需要做的就是為使用者提供好的服務來創造價值,得到使用者的認可,活下去,野蠻生長。

1.3.1 大型網站架構技術的核心價值是隨網站所需靈活應對 13

伴隨小型網站業務的逐步發展,演變成大型網站。

1.3.2 驅動大型網站技術發展的主要力量是網站的業務發展 13

創新的業務發展模式對網站架構逐步提出高更的要求,才使得網站架構得以發展成熟。是業務成就了技術,事業成就了人,而不是相反。

1.4 網站架構設計誤區 14

1.4.1 一味追隨大公司的解決方案 14

值得學習借鑑,但不要盲從,失去堅持自我的勇氣。

1.4.2 為了技術而技術 14

網站架構是為業務存在的,除此毫無意義。

1.4.3 企圖用技術解決所有問題 14

技術是用來解決業務問題的,而業務的問題,也可以通過業務的手段解決。

如:12306改成分時段售票。

1.5 小結 15

2 大型網站架構模式 16

模式的關鍵在於可重複性,通過模式的學習,掌握網站架構的一般思路和解決方案。

2.1 網站架構模式 16

2.1.1 分層 17

好處:便於分工合作開發和維護。

挑戰:合理規劃層次和介面。

2.1.2 分割 18

將不同功能的模組分割開來,包裝成高內聚低耦合的模組單元,一方面有助於開發維護,另一方面提高併發處理能力和擴充套件能力。

2.1.3 分散式 18

更多機器:CPU、記憶體、儲存資源更多

問題:網路、機器當機、資料一致性、依賴性錯綜複雜

不要為了分散式而分散式,常用分散式:應用和服務、靜態資源、資料和儲存、計算(後臺業務處理)、配置、鎖、檔案系統等。

2.1.4 叢集 19

多機器通過負載均衡,提供系統可用性

2.1.5 快取 20

改善效能的第一手段:CND、反向代理、本地快取、分散式快取。

前提:1.資料訪問熱點不均衡,2.資料不會很快過期(髒讀)

2.1.6 非同步 20

典型生產者消費者模式。

好處:提高系統可用性、加快網站相應速度、消除併發訪問高峰。

注意:可能對使用者體驗、業務流程造成影響。

2.1.7 冗餘 21

資料冗餘備份,實現高可用。

資料庫冷備份:定期備份存檔。

資料庫熱備份:主從分離。

2.1.8 自動化 22

無人值守網站可以正常執行,一切自動化是網站的理想狀態;自動化架構主要集中在釋出維護方面。包括:

釋出過程、程式碼管理、測試、安全檢測、部署、監控、報警、失效移交、失效恢復、降級(關閉不重要的服務)、資源分配

2.1.9 安全 23

網際網路的開發特性使其面對巨大安全挑戰:

1.密碼+手機碼身份驗證

2.交易等敏感資料加密

3.驗證碼識別機器人

4.XSS攻擊、SQL隱碼攻擊等進行編碼轉移

5.敏感資訊過濾

6.對轉賬等重要操作風險管控

2.2 架構模式在新浪微博的應用 23

 

2.3 小結 25

3 大型網站核心架構要素 26

軟體架構:有關軟體整體結構與元件得抽象描述,用於指導大型軟體系統各個方面得設計。

除系統功能需求外,需要關注以下5個要素。

3.1 效能 27

效能是一個網站的重要指標。從使用者瀏覽器到資料庫,響應請求的所有環節都可以效能優化。

1.瀏覽器:快取、頁面壓縮、合理佈局、減少cookie傳輸

2.CND

3.伺服器端:快取

4.非同步:訊息佇列

5.叢集

6.程式碼:多執行緒、改善記憶體管理

7.資料庫:索引、快取、SQL優化

3.2 可用性 28

衡量標準是假設一臺以上當機,是否可用。主要手段是冗餘(備份)

3.3 伸縮性 29

是否可以用多臺伺服器構成叢集,是否容易向叢集中新增新機器,新機器是否可以提供無差別的服務,可容納的總伺服器數是否有限制。

3.4 擴充套件性 30

關注功能需求。快速響應需求變更。

標準:增加新業務產品時,是否可以對現有產品透明無影響。

手段:事件驅動架構(訊息佇列)、分散式服務(業務和可複用服務分離)

3.5 安全性 30

針對各種攻擊與盜密手段,是否有可靠的應對策略。

3.6 小結 31

本章是第2篇 架構的歸納和總結。

相關文章