從單服務(wù)器架構(gòu)如何走向微服務(wù)的分布式服務(wù)架構(gòu),業(yè)務(wù)程度到達(dá)哪個(gè)程度使用哪個(gè)服務(wù)架構(gòu)?
參考《大型網(wǎng)站技術(shù)架構(gòu)》,李智慧著,下面為讀書(shū)筆記
1 初始階段
應(yīng)用程序、數(shù)據(jù)庫(kù)、文件等都在一臺(tái)服務(wù)器上
2 應(yīng)用與數(shù)據(jù)分離
應(yīng)用服務(wù)器需要處理更多的業(yè)務(wù)邏輯,需要更好的CPU;數(shù)據(jù)庫(kù)服務(wù)器和文件服務(wù)器,需要快速檢索磁盤(pán)和數(shù)據(jù)緩存,因此需要更快的硬盤(pán)和更大的內(nèi)存
3 緩存服務(wù)
大部分的業(yè)務(wù)訪問(wèn)集中在小部分的數(shù)據(jù)上,如果把這部分?jǐn)?shù)據(jù)緩存在內(nèi)存中,可以減少數(shù)據(jù)庫(kù)訪問(wèn)壓力,提高整個(gè)網(wǎng)站的數(shù)據(jù)訪問(wèn)速度,改善數(shù)據(jù)庫(kù)的寫(xiě)入性能
緩存分為:
- 應(yīng)用服務(wù)器上的本地緩存(本地緩存受限于應(yīng)用服務(wù)器的資源、水平擴(kuò)展和分布式應(yīng)用服務(wù)器的共享問(wèn)題)
-
分布式緩存服務(wù)器上的遠(yuǎn)程緩存
緩存服務(wù)
4 應(yīng)用集群
集群是網(wǎng)站解決高并發(fā)、海量數(shù)據(jù)問(wèn)題的常用手段
集群是網(wǎng)站橫向擴(kuò)展的方案,可以通過(guò)不斷增加服務(wù)器的方式去改善負(fù)債壓力,應(yīng)用服務(wù)器實(shí)現(xiàn)集群是網(wǎng)站可伸縮集群架構(gòu)中設(shè)計(jì)較為簡(jiǎn)單成熟的一種
5 數(shù)據(jù)庫(kù)讀寫(xiě)分離
將數(shù)據(jù)庫(kù)實(shí)現(xiàn)讀寫(xiě)分離以后,可以將數(shù)據(jù)庫(kù)操作的鎖并發(fā)問(wèn)題帶來(lái)的壓力集中在一臺(tái)中,不影響大部分的數(shù)據(jù)庫(kù)讀操作;讀寫(xiě)分離主要目的是提高系統(tǒng)吞吐量
同時(shí)主數(shù)據(jù)庫(kù)數(shù)據(jù)同步到另一臺(tái)數(shù)據(jù)庫(kù)中。
讀寫(xiě)分離架構(gòu)適用的應(yīng)用:讀操作不要求數(shù)據(jù)強(qiáng)一致,一般對(duì)時(shí)延的容忍在秒級(jí)以上,如電商應(yīng)用
6 反向代理和CDN加速
CDN和反向代理的基本原理都是緩存。
CDN部署在網(wǎng)絡(luò)提供商的機(jī)房,用戶(hù)在請(qǐng)求網(wǎng)站服務(wù)時(shí),可以從距離自己最近的網(wǎng)絡(luò)提供商的機(jī)房中獲取數(shù)據(jù);
反向代理部署在網(wǎng)站的機(jī)房中,用戶(hù)訪問(wèn)代理服務(wù)器以后,如果代理服務(wù)器擁有用戶(hù)請(qǐng)求的資源,將直接返回給用戶(hù)。
這樣的好處是:
- 數(shù)據(jù)盡早盡快的返回給用戶(hù)
- 減輕后端應(yīng)用服務(wù)的壓力
同時(shí)反向代理還可以做到內(nèi)網(wǎng)資源的隔離,保護(hù)應(yīng)用服務(wù)器后端的服務(wù)器網(wǎng)絡(luò)安全
7 分布式文件系統(tǒng)和分布式數(shù)據(jù)庫(kù)系統(tǒng)
8 業(yè)務(wù)拆分/分布式服務(wù)
隨著業(yè)務(wù)越來(lái)越多,需要將每個(gè)業(yè)務(wù)拆分成不同的產(chǎn)品線進(jìn)行管理,拆成多個(gè)應(yīng)用進(jìn)行獨(dú)立部署,這樣的好處是:
- 減少應(yīng)用的邏輯復(fù)雜度,避免應(yīng)用越來(lái)越臃腫
- 加快應(yīng)用的部署
- 適應(yīng)更小更快的業(yè)務(wù)變化和需求更替