架構(gòu)概述:架構(gòu)演化、模式與核心要素

- 前言 -

- 架構(gòu)演化發(fā)展歷程 -
初始階段

應(yīng)用和數(shù)據(jù)分離

使用緩存


- 使用應(yīng)用服務(wù)器集群 -

讀寫分離

反向代理和CDN

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

分布式數(shù)據(jù)庫是網(wǎng)站數(shù)據(jù)庫拆分的最后手段,只有在單表數(shù)據(jù)規(guī)模非常龐大的時候才使用。不到不得已時,網(wǎng)站更常用的數(shù)據(jù)庫拆分手段是業(yè)務(wù)分庫,將不同業(yè)務(wù)的數(shù)據(jù)庫部署在不同的物理服務(wù)器上。
使用NoSQL和搜索引擎

業(yè)務(wù)拆分

分布式服務(wù)


- 架構(gòu)模式 -
分層
通過分層,可以更好地將一個龐大的軟件系統(tǒng)切分成不同的部分,便于分工合作開發(fā)和維護(hù)。各層之間具有一定的獨(dú)立性,只要維持調(diào)用接口不變,各層可以根據(jù)具體問題獨(dú)立演化發(fā)展而不需要其他層必須做出相應(yīng)調(diào)整。分割
分布式
意味著服務(wù)調(diào)用必須通過網(wǎng)絡(luò),這可能會對性能造成比較嚴(yán)重的影響。 服務(wù)器越多,宕機(jī)的概率也就越大,造成的服務(wù)不可用可能會導(dǎo)致很多應(yīng)用不可訪問,使網(wǎng)站可用性降低。 數(shù)據(jù)在分布式的環(huán)境中保持?jǐn)?shù)據(jù)一致性非常困難,分布式事務(wù)也難以保證。 系統(tǒng)依賴錯綜復(fù)雜,開發(fā)管理維護(hù)困難。
集群
緩存
異步
提高系統(tǒng)可用性。消費(fèi)者服務(wù)器發(fā)生故障,數(shù)據(jù)會在消息隊列服務(wù)器中存儲堆積,生產(chǎn)者服務(wù)器可以繼續(xù)處理業(yè)務(wù)請求,系統(tǒng)整體表現(xiàn)無故障。 消費(fèi)者服務(wù)器恢復(fù)正常后,繼續(xù)處理消息隊列中的數(shù)據(jù)。 加快網(wǎng)站響應(yīng)速度。處在業(yè)務(wù)處理前端的生產(chǎn)者服務(wù)器在處理完業(yè)務(wù)請求后,將數(shù)據(jù)寫入消息隊列,不需要等待消費(fèi)者服務(wù)器處理就可以返回,響應(yīng)延遲減少。 消除并發(fā)訪問高峰。用戶訪問網(wǎng)站是隨機(jī)的,存在訪問高峰和低谷。 使用消息隊列將突然增加的訪問請求數(shù)據(jù)放入消息隊列中,等待消費(fèi)者服務(wù)器依次處理,就不會對整個網(wǎng)站負(fù)載造成太大壓力。
冗余
自動化與安全

- 架構(gòu)核心要素 -
性能
瀏覽器: 瀏覽器緩存、使用頁面壓縮、合理布局頁面、減少Cookie傳輸?shù)?/span> CDN和反向代理 本地緩存和分布式緩存 異步消息隊列 應(yīng)用層: 服務(wù)器集群 代碼層: 多線程、改善內(nèi)存管理等 數(shù)據(jù)層: 索引、緩存、SQL優(yōu)化等,以及合理使用NoSQL數(shù)據(jù)庫
可用性
伸縮性
擴(kuò)展性
安全性
作者:與昊
來源:segmentfault.com/a/1190000039969525

評論
圖片
表情
