本系列來(lái)源于《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》學(xué)習(xí)筆記總結(jié),本文為本書(shū)“第1篇 概述”的總結(jié)秕衙。
介紹《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》的全書(shū)結(jié)構(gòu)
第一部分概述的主題內(nèi)容:大型網(wǎng)站架構(gòu)演化鹦牛、架構(gòu)模式、架構(gòu)要素
筆記為知識(shí)點(diǎn)摘要礼殊、總結(jié)针史,對(duì)于知識(shí)結(jié)構(gòu)的總結(jié)
作為一個(gè)非技術(shù)出身的項(xiàng)目經(jīng)理婚陪,工作中遇到的各類(lèi)技術(shù)問(wèn)題往往是困擾我們的一個(gè)大問(wèn)題。對(duì)于這個(gè)問(wèn)題智润,除了在工作中頻繁與技術(shù)同事溝通,項(xiàng)開(kāi)發(fā)的同事學(xué)習(xí)之外咐柜,也需要自己在工作之余不停的補(bǔ)充相關(guān)技術(shù)知識(shí)为狸,能夠做到聽(tīng)懂同事在說(shuō)什么辐棒,從邏輯上理解他們的解決方案泰涂。項(xiàng)目中經(jīng)常涉及系統(tǒng)架構(gòu)辐怕,閱讀寄疏、協(xié)助撰寫(xiě)架構(gòu)文檔驳棱。最近的一個(gè)項(xiàng)目是需要為客戶(hù)開(kāi)發(fā)一個(gè)中型網(wǎng)站蹈胡,了解網(wǎng)站相關(guān)的架構(gòu)知識(shí)罚渐,是學(xué)習(xí)這本書(shū)的目標(biāo)。
全書(shū)結(jié)構(gòu)
本書(shū)從結(jié)構(gòu)上來(lái)說(shuō)主要分為以下三個(gè)部分:
概述大型網(wǎng)站的架構(gòu)演化源织、模式和要素
詳述大型網(wǎng)站的高性能架構(gòu)谈息、高可用架構(gòu),伸縮性架構(gòu)逻炊、可擴(kuò)展架構(gòu)和安全架構(gòu)
案例分析:淘寶余素、維基百科威根、Doris医窿、網(wǎng)購(gòu)秒殺和大型網(wǎng)站典型故障案例分析
架構(gòu)師的領(lǐng)導(dǎo)藝術(shù)、職場(chǎng)攻略等
我的學(xué)習(xí)和筆記的重點(diǎn)集中在第一和第二部分及第三部分的幾個(gè)案例。
第1篇 概述
本篇宗要介紹大型網(wǎng)站架構(gòu)的演進(jìn)歷程棺榔,構(gòu)架的基本模式和核心要素症歇。
1 大型網(wǎng)站架構(gòu)演化
1.1 大型網(wǎng)站軟件系統(tǒng)的特點(diǎn)
高并發(fā)激捏,大流量
高可用
海量數(shù)據(jù)
用戶(hù)分布廣泛远舅,網(wǎng)絡(luò)情況復(fù)雜
需求快速變更,發(fā)布頻繁
漸進(jìn)式發(fā)展
1.2 大型網(wǎng)站架構(gòu)演化發(fā)展歷程
大型網(wǎng)站架構(gòu)的演化歷程基本經(jīng)歷從小到大图柏,從多到少序六,從簡(jiǎn)單到復(fù)雜的過(guò)程蚤吹。根據(jù)業(yè)務(wù)的需求和企業(yè)的實(shí)際情況選擇需要的架構(gòu)模式
1.3 大型網(wǎng)站架構(gòu)演化的價(jià)值觀
在網(wǎng)站還很小的時(shí)候就去追求網(wǎng)站的架構(gòu)師舍本逐末,得不償失的距辆。大型網(wǎng)站架構(gòu)技術(shù)的核心價(jià)值是隨網(wǎng)站所需靈活應(yīng)對(duì)余佃,遵循從無(wú)到有,從小到大,慢慢演化椭懊。驅(qū)動(dòng)大型網(wǎng)站技術(shù)發(fā)展的主要力量是網(wǎng)站的業(yè)務(wù)發(fā)展诸蚕。
1.4 網(wǎng)站架構(gòu)設(shè)計(jì)誤區(qū)
一味追隨大公司的解決方案
為了技術(shù)而技術(shù)
企圖用技術(shù)解決所有問(wèn)題:業(yè)務(wù)問(wèn)題也可以通過(guò)業(yè)務(wù)的方式解決
2 大型網(wǎng)站架構(gòu)模式
2.1 網(wǎng)站架構(gòu)模式
本書(shū)中網(wǎng)站的架構(gòu)模式介紹的主要有:分層、分割背犯、分布式倔矾、集群禁熏、緩存、異步铅忿、冗余享言、自動(dòng)化、安全
1. 分層
將系統(tǒng)在橫向維度切分,每個(gè)維度負(fù)責(zé)體格相對(duì)單一的職責(zé)驶冒,然后通過(guò)上層對(duì)下層的一開(kāi)和調(diào)用組成一個(gè)完整的系統(tǒng)诅炉。大型網(wǎng)站架構(gòu)講系統(tǒng)分成應(yīng)用層,服務(wù)層痹扇,數(shù)據(jù)層。
優(yōu)點(diǎn):便于分工開(kāi)發(fā)和維護(hù)勉痴,保持獨(dú)立性
挑戰(zhàn):合理規(guī)劃層次邊界和接口,禁止跨層次的調(diào)用和逆向調(diào)用乡话。
2. 分割
縱向切分颅停,包裝成高內(nèi)聚低耦合的模塊單元
3. 分布式
將不同模塊部署在不同的服務(wù)器上喊熟,通過(guò)遠(yuǎn)程調(diào)用協(xié)調(diào)工作柏靶,使用更多計(jì)算機(jī)完成同樣的功能
4. 集群
多臺(tái)服務(wù)器部署相同應(yīng)用構(gòu)成一個(gè)集群炬转,通過(guò)負(fù)載均衡設(shè)備供圖對(duì)外提供服務(wù)。
5. 緩存
緩存是改善軟件性能的第一手段街佑,方法有如下幾種:
CDN:內(nèi)容分發(fā)網(wǎng)絡(luò)磁携,部署在距離終端用戶(hù)最近的網(wǎng)絡(luò)服務(wù)商,緩存網(wǎng)站的一些靜態(tài)資源
反向代理:部署在網(wǎng)站的前端统诺,當(dāng)用戶(hù)請(qǐng)求到達(dá)網(wǎng)站的數(shù)據(jù)中心時(shí),最先訪(fǎng)問(wèn)反向代理挺物,緩存靜態(tài)資源
本地緩存:應(yīng)用服務(wù)器本地緩存熱點(diǎn)數(shù)據(jù)
分布式緩存:數(shù)據(jù)量龐大,本地緩存內(nèi)存不足,將數(shù)據(jù)緩存在一個(gè)專(zhuān)門(mén)的分布式緩存集群中
6. 異步
異步是將一個(gè)業(yè)務(wù)的操作分成多個(gè)階段惕虑,每個(gè)階段之間通過(guò)共享數(shù)據(jù)的方式異步執(zhí)行進(jìn)行協(xié)作。
異步消息隊(duì)列還有如下特性:
提高系統(tǒng)可用性
加快網(wǎng)站響應(yīng)速度
消除并發(fā)訪(fǎng)問(wèn)高峰
7. 冗余
數(shù)據(jù)冗余備份:
冷備份:數(shù)據(jù)庫(kù)定期備份
熱備份:數(shù)據(jù)庫(kù)主從分離
8. 自動(dòng)化
主要集中在發(fā)布暗膜、運(yùn)維方面
自動(dòng)化發(fā)布
自動(dòng)化監(jiān)控
9. 安全
互聯(lián)網(wǎng)的開(kāi)放特性使得在網(wǎng)站架構(gòu)上有很多安全機(jī)制
3 大型網(wǎng)站核心架構(gòu)要素
除了當(dāng)前的系統(tǒng)功能需求外,軟件架構(gòu)還需要關(guān)注性能桦山、可用性攒射、伸縮性恒水、擴(kuò)展性和安全性這5個(gè)架構(gòu)。
3.1 性能
對(duì)于用戶(hù)來(lái)說(shuō)饲齐,一個(gè)網(wǎng)站的性能是非常重要的指標(biāo)。用戶(hù)無(wú)法忍受反應(yīng)慢的網(wǎng)站捂人。優(yōu)化網(wǎng)站性能的手段有:
瀏覽器:瀏覽器緩存御雕,頁(yè)面壓縮,合理布局頁(yè)面酸纲,減少cookie傳輸
CDN
本地緩存和分布式緩存
異步操作
集群服務(wù)器
代碼層面可以使用多線(xiàn)程、改善內(nèi)存管理等手段優(yōu)化性能
數(shù)據(jù)庫(kù)服務(wù)器端瑟匆,索引、緩存愁溜、SQL優(yōu)化等手段疾嗅,或NoSQL
衡量網(wǎng)站性能的指標(biāo):
響應(yīng)時(shí)間
TPS,QPS等
系統(tǒng)性能計(jì)數(shù)器
3.2 可用性
高可用設(shè)計(jì)的目標(biāo)就是當(dāng)服務(wù)器宕機(jī)的時(shí)候代承,服務(wù)或應(yīng)用依然可以使用。
網(wǎng)站高可用的主要手段是冗余渐扮。
應(yīng)用服務(wù)器,多臺(tái)服務(wù)器通過(guò)負(fù)載均衡組成一個(gè)集群墓律,任何一臺(tái)服務(wù)器宕機(jī)膀估,只需把請(qǐng)求切換到其他服務(wù)器就可以實(shí)現(xiàn)高可用。
存儲(chǔ)服務(wù)器玖像,對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)備份
3.3 伸縮性
伸縮性是指通過(guò)不斷向集群中加入服務(wù)器的手段來(lái)緩解不斷上升的用戶(hù)并發(fā)訪(fǎng)問(wèn)壓力和不斷增長(zhǎng)的數(shù)據(jù)存儲(chǔ)需求。
衡量架構(gòu)伸縮性的主要標(biāo)準(zhǔn)就是是否可以用多臺(tái)服務(wù)器構(gòu)建集群,是否容易向集群中添加新的服務(wù)器捐寥。加入新的服務(wù)器后是否可以提供和原來(lái)的服務(wù)器無(wú)差別的服務(wù)。集群中可容納的總的服務(wù)器數(shù)量是否有限制握恳。
3.4 擴(kuò)展性
衡量網(wǎng)站架構(gòu)擴(kuò)展性好壞的主要標(biāo)準(zhǔn)就是在網(wǎng)站增加新的業(yè)務(wù)產(chǎn)品時(shí)瞒窒,是否可以實(shí)現(xiàn)對(duì)現(xiàn)有產(chǎn)品透明無(wú)影響乡洼,不需要任何改動(dòng)或者很少改動(dòng)既有業(yè)務(wù)功能就可以上線(xiàn)新產(chǎn)品崇裁。
網(wǎng)站可伸縮架構(gòu)的主要手段是事件驅(qū)動(dòng)架構(gòu)和分布式服務(wù)束昵。
事件驅(qū)動(dòng)架構(gòu)在網(wǎng)站通常利用消息隊(duì)列實(shí)現(xiàn),消息的處理者作為消費(fèi)者從消息隊(duì)列中獲取消息進(jìn)行處理锹雏。
分布式服務(wù)則是將業(yè)務(wù)和可服用服務(wù)分離開(kāi)來(lái)巴比,通過(guò)分布式服務(wù)框架調(diào)用
3.5 安全性
衡量網(wǎng)站安全架構(gòu)的標(biāo)準(zhǔn)就是針對(duì)現(xiàn)存和潛在的各種攻擊和竊密手段,是否有可靠的應(yīng)對(duì)策略轻绞。