官术网_书友最值得收藏!

2.2.1 架構(gòu)的演進(jìn)

好的架構(gòu)不是設(shè)計出來的,而是演進(jìn)出來的。

系統(tǒng)立項之初,就想著設(shè)計一個大而全的架構(gòu),期待著它能夠解決各個階段的各種問題,這是不可能的。因為在初期很難預(yù)估后期業(yè)務(wù)的變化,如果在初期就落地一個大而全的項目,那么人力成本和時間成本都會很高。同時,架構(gòu)并不是千篇一律的,千萬不能在不同的業(yè)務(wù)和系統(tǒng)中生搬硬套同一個架構(gòu)。先快速落地,并關(guān)注業(yè)務(wù)的變化和系統(tǒng)的健壯程度,在不同階段對當(dāng)前架構(gòu)所面臨的問題進(jìn)行復(fù)盤和處理,選擇一個更適合自身的方向進(jìn)行優(yōu)化和改進(jìn),這才是常規(guī)的做法。

在每個階段,找到對應(yīng)該階段網(wǎng)站架構(gòu)所面臨的問題,在不斷解決這些問題的過程中,系統(tǒng)的架構(gòu)在不斷地朝著正確的方向演進(jìn)。這里筆者引用了李智慧老師在《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》這本書中的案例來介紹系統(tǒng)常見的演進(jìn)過程。

1.初始階段的網(wǎng)站架構(gòu)

初始階段的網(wǎng)站架構(gòu)比較簡單,通常一臺服務(wù)器就可以搞定一個網(wǎng)站的部署,此時的網(wǎng)站架構(gòu)如圖2-4所示。

圖2-4 初始階段的網(wǎng)站架構(gòu)

2.應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離

隨著網(wǎng)站業(yè)務(wù)的發(fā)展,一臺服務(wù)器逐漸不能滿足需求,這時就需要將應(yīng)用和數(shù)據(jù)分離來提升系統(tǒng)的性能,此時的網(wǎng)站架構(gòu)如圖2-5所示。

圖2-5 應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離的網(wǎng)站架構(gòu)

3.使用緩存改善網(wǎng)站性能

80%的業(yè)務(wù)訪問會集中在20%的數(shù)據(jù)上,網(wǎng)站基本上都會使用緩存來優(yōu)化訪問性能,通過緩存層的接入,減少對數(shù)據(jù)庫部分的直接壓力,提升網(wǎng)站的響應(yīng)性能,此時的網(wǎng)站架構(gòu)如圖2-6所示。

圖2-6 使用緩存改善網(wǎng)站性能的網(wǎng)站架構(gòu)

4.使用應(yīng)用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力

因為單一應(yīng)用服務(wù)器能夠處理的請求連接有限,在網(wǎng)站訪問高峰時期,應(yīng)用服務(wù)器會成為整個網(wǎng)站的瓶頸。因此,使用負(fù)載均衡調(diào)度服務(wù)器勢在必行。通過負(fù)載均衡調(diào)度服務(wù)器,可將大量的請求分發(fā)到應(yīng)用的集群中的任何一臺服務(wù)器上,進(jìn)一步將系統(tǒng)壓力分散處理,此時的網(wǎng)站架構(gòu)如圖2-7所示。

圖2-7 使用應(yīng)用服務(wù)器集群的網(wǎng)站架構(gòu)

5.數(shù)據(jù)庫讀寫分離

當(dāng)用戶數(shù)量達(dá)到一定規(guī)模后,數(shù)據(jù)庫因為負(fù)載壓力過高而成為網(wǎng)站的瓶頸,而目前主流的數(shù)據(jù)庫都提供主從熱備功能,通過配置兩臺數(shù)據(jù)庫的主從關(guān)系,可以將一臺數(shù)據(jù)庫的數(shù)據(jù)更新并同步到另一臺服務(wù)器上,網(wǎng)站利用數(shù)據(jù)庫這個功能實現(xiàn)數(shù)據(jù)庫讀寫分離,從而減輕數(shù)據(jù)庫負(fù)載壓力,此時的網(wǎng)站架構(gòu)如圖2-8所示。

圖2-8 數(shù)據(jù)庫讀寫分離的網(wǎng)站架構(gòu)

6.使用反向代理和CDN加速網(wǎng)站響應(yīng)

隨著系統(tǒng)規(guī)模越來越大,需要響應(yīng)全國甚至全球各區(qū)域的訪問,但是各區(qū)域的訪問速度差別巨大。為了提高網(wǎng)站的訪問速度,可以使用反向代理和CDN加速網(wǎng)站響應(yīng),此時的網(wǎng)站架構(gòu)如圖2-9所示。

7.使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)

任何強(qiáng)大的單一服務(wù)器都滿足不了大型網(wǎng)站持續(xù)增長的業(yè)務(wù)需求。分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)可以進(jìn)一步提升系統(tǒng)的可用性,并提升系統(tǒng)的響應(yīng)速度,此時的網(wǎng)站架構(gòu)如圖2-10所示。

圖2-9 使用反向代理和CDN的網(wǎng)站架構(gòu)

圖2-10 使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)的網(wǎng)站架構(gòu)

8.使用NoSQL和搜索引擎

某些系統(tǒng)可能會出現(xiàn)海量數(shù)據(jù)存儲和檢索的需求,此時可以使用NoSQL產(chǎn)品分布式部署來支持海量數(shù)據(jù)的查詢和存儲,此時的網(wǎng)站架構(gòu)如圖2-11所示。

圖2-11 使用NoSQL和搜索引擎的網(wǎng)站架構(gòu)

9.業(yè)務(wù)拆分和分布式服務(wù)

大型網(wǎng)站為了應(yīng)對日益復(fù)雜的業(yè)務(wù)場景,通過使用分而治之的手段將整個網(wǎng)站業(yè)務(wù)拆分成不同的產(chǎn)品線,通過分布式服務(wù)來協(xié)同工作,此時的網(wǎng)站架構(gòu)如圖2-12所示。

圖2-12 業(yè)務(wù)拆分和分布式服務(wù)的網(wǎng)站架構(gòu)

常見的網(wǎng)站架構(gòu)演進(jìn)過程如圖2-13所示。

圖2-13 《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》書中常見的網(wǎng)站架構(gòu)的演進(jìn)過程

李智慧老師的《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》一書于2013年9月出版,整理書稿的時間肯定更早一些,因此書中并沒有近幾年較流行的微服務(wù)架構(gòu)、領(lǐng)域驅(qū)動及服務(wù)網(wǎng)格Service Mesh相關(guān)的描述,這些也是分布式服務(wù)的一些網(wǎng)站架構(gòu)演進(jìn)方向。

主站蜘蛛池模板: 大同市| 汤阴县| 绍兴市| 阿拉善盟| 唐海县| 英德市| 平塘县| 宁城县| 石景山区| 东城区| 上杭县| 三门峡市| 贵阳市| 肇庆市| 齐河县| 大冶市| 阜南县| 武城县| 建瓯市| 焉耆| 遂平县| 驻马店市| 龙口市| 齐齐哈尔市| 汕头市| 增城市| 通河县| 宜宾县| 宜兴市| 共和县| 缙云县| 志丹县| 阜宁县| 永仁县| 休宁县| 南召县| 延川县| 静安区| 大悟县| 依安县| 喜德县|