丨綜合案例電商平臺(tái)技術(shù)架構(gòu)是如何演變的_第1頁(yè)
丨綜合案例電商平臺(tái)技術(shù)架構(gòu)是如何演變的_第2頁(yè)
丨綜合案例電商平臺(tái)技術(shù)架構(gòu)是如何演變的_第3頁(yè)
丨綜合案例電商平臺(tái)技術(shù)架構(gòu)是如何演變的_第4頁(yè)
丨綜合案例電商平臺(tái)技術(shù)架構(gòu)是如何演變的_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

這一講會(huì)包含很多架構(gòu)圖,每一張圖都代表了不同時(shí)期的架構(gòu)設(shè)計(jì),為了方便你更好地理解它們,在每張架構(gòu)圖中,我都用紅色方框圈出了當(dāng)前架構(gòu)存在的問(wèn)題,用綠色實(shí)體部分代表了上一個(gè)架構(gòu)所存在問(wèn)題的解決辦法,希望你聽(tīng)完今天的講解,能夠結(jié)合這些架構(gòu)圖,加深對(duì)技術(shù)架構(gòu)的理解。第一代的系統(tǒng)是一個(gè)單體架構(gòu),所有的代碼都打包在一個(gè)應(yīng)用里,部署的時(shí)候會(huì)有多個(gè)實(shí)例,我們通過(guò)負(fù)載均衡,把用戶請(qǐng)求分發(fā)到具體的實(shí)例中。這個(gè)時(shí)候,所有的數(shù)據(jù)表還在一個(gè)數(shù)據(jù)庫(kù)里。這里的問(wèn)題是發(fā)。隨著單體應(yīng)用的體量越變?cè)酱?,這些問(wèn)題也越來(lái)越突出。SOA針對(duì)單體應(yīng)用體量過(guò)大帶來(lái)的問(wèn)題,我們對(duì)系統(tǒng)進(jìn)行拆分如在圖中,我們把系統(tǒng)拆分為系統(tǒng)和賬戶系統(tǒng),這兩個(gè)系統(tǒng)(或者說(shuō)服務(wù))的負(fù)載均衡進(jìn)行相用,這個(gè)時(shí)候,底層數(shù)據(jù)庫(kù)還沒(méi)有拆分,兩個(gè)系統(tǒng)還是同一個(gè)數(shù)據(jù)通過(guò)拆分,系統(tǒng)整體就變成了SOA架構(gòu),這樣,我們減少了代碼,系統(tǒng)的開(kāi)發(fā)也變得但這里的問(wèn)題是,內(nèi)部服務(wù)通過(guò)中心化的負(fù)載均衡進(jìn)行,中心化的負(fù)載均衡增加了服務(wù)的調(diào)用時(shí)間。此外,在場(chǎng)景下,內(nèi)部的服務(wù)很多,服務(wù)調(diào)用的頻率很高,每秒可能有上百萬(wàn)次,導(dǎo)致了負(fù)載均衡的連接能力不夠。而且負(fù)載均衡是單點(diǎn),如果它出了問(wèn)題,很容易系統(tǒng)整體的可用性問(wèn)題(即使負(fù)載均衡是多實(shí)例,當(dāng)系統(tǒng)流量很大時(shí),也會(huì)因?yàn)槟撑_(tái)負(fù)載有問(wèn)題,導(dǎo)致其他節(jié)點(diǎn)壓力增大而引起雪崩效應(yīng))。務(wù)實(shí)動(dòng)或時(shí),會(huì)自在進(jìn)行或銷服務(wù)戶端和中,直用服每次無(wú)需過(guò),如中問(wèn)題只是服務(wù)實(shí)例無(wú)法,或者是已有的服務(wù)實(shí)例無(wú)法注銷,這對(duì)客戶端調(diào)用服務(wù)的影響是非常有限當(dāng)然,通過(guò)中心和更體系化的微服務(wù)框架,我們還可以實(shí)現(xiàn)完善的服務(wù)治理、熔斷、降級(jí),這些都是對(duì)原來(lái)簡(jiǎn)單的負(fù)載均衡方式的加強(qiáng),能夠進(jìn)一步提升服務(wù)的可來(lái)越大,單個(gè)數(shù)據(jù)庫(kù)(比如Oracle)的性能和容量已經(jīng)需求了。這個(gè)時(shí)候,對(duì)于單個(gè)數(shù)據(jù)庫(kù)性能和容量瓶頸,解決的辦法就是,我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行垂直拆分為數(shù)據(jù)庫(kù)和賬戶數(shù)據(jù)庫(kù),這樣就可以滿足它們各自的容量和性能需求,同時(shí)也避免了不同業(yè)務(wù)數(shù)據(jù)表之間的相互耦合。不過(guò),新的問(wèn)題又來(lái)了統(tǒng)只有單個(gè)數(shù)據(jù)庫(kù)類似,現(xiàn)在系統(tǒng)也只有一個(gè)數(shù)據(jù)庫(kù),它的性能和容量還是有問(wèn)題,并且數(shù)據(jù)庫(kù)單實(shí)例也帶來(lái)了可用性的問(wèn)題,如果數(shù)據(jù)庫(kù)掛了,相應(yīng)的系統(tǒng)也就不可用。針對(duì)單個(gè)數(shù)據(jù)庫(kù)的可用性問(wèn)題,我們可以采用MHA高可用(MasterHighAvailability)方式部署。比如數(shù)據(jù)庫(kù)部署一主多從,通過(guò)MHA機(jī)制,我們可以實(shí)時(shí)檢測(cè)主庫(kù)的可用性,如果主庫(kù)有問(wèn)題,系統(tǒng)會(huì)自動(dòng)Failover(故障轉(zhuǎn)移)到的從庫(kù)。另一方面,我們針對(duì)單個(gè)數(shù)據(jù)庫(kù)的性能和容量問(wèn)題,首先我們可以引入緩存先緩存,大大減輕對(duì)底層數(shù)據(jù)庫(kù)的壓力。然后,我們可以對(duì)數(shù)據(jù)庫(kù)按照某個(gè)維度(用戶維度),進(jìn)行水平拆分,把數(shù)據(jù)記錄分布到多個(gè)實(shí)例中,最終分散主庫(kù)的寫(xiě)壓力以及數(shù)據(jù)的瓶頸(在上一講中,我已經(jīng)具體介紹過(guò)了,你可以點(diǎn)擊去回顧內(nèi)容)。在實(shí)踐中,我們還可以提供多套水平分庫(kù)。比如說(shuō),針對(duì)數(shù)據(jù),我們可以同時(shí)按照用戶維度和商戶維度進(jìn)行水平分庫(kù),用戶維度的庫(kù)用于前臺(tái)用戶下單的場(chǎng)景,商戶維度的庫(kù)用于商家履單的場(chǎng)景。這里,只有用戶維度的分庫(kù)會(huì)支持寫(xiě)當(dāng)系統(tǒng)體量發(fā)展到了一定程度,我們又碰到了新的問(wèn)題到的機(jī)器部署系統(tǒng)和賬戶系統(tǒng)。對(duì)于單機(jī)房服務(wù)器不夠的問(wèn)題我們?cè)谛路坎渴鹣蒂~戶,為地方所有還是到舊的心,還是在舊的據(jù)庫(kù)戶數(shù)這樣,我們通過(guò)在新機(jī)房部署應(yīng)用,對(duì)應(yīng)用節(jié)點(diǎn)進(jìn)行水平擴(kuò)展,從而解決了單機(jī)房機(jī)器不足的問(wèn)題。但這里產(chǎn)生了跨機(jī)房的問(wèn)題:首我們一個(gè),服例一部署在老機(jī)房,一部分部署在新機(jī)房,對(duì)于服務(wù)調(diào)用者來(lái)說(shuō),它會(huì)同時(shí)新舊機(jī)房的服務(wù)實(shí)例;其次,數(shù)據(jù)庫(kù)部署在老機(jī)房,新機(jī)房的應(yīng)用會(huì)舊機(jī)房的數(shù)據(jù)庫(kù)。這兩種情況,都會(huì)產(chǎn)生大量的跨機(jī)房,我們知道,根據(jù)機(jī)房物理距離的不同,跨機(jī)房訪問(wèn)的網(wǎng)絡(luò)延時(shí)在數(shù)十毫秒到數(shù)百毫秒之間,是機(jī)房?jī)?nèi)部通信耗時(shí)的上千倍,這會(huì)對(duì)能產(chǎn)生很大影響,而且跨機(jī)房的網(wǎng)絡(luò)可用性也經(jīng)常是一個(gè)問(wèn)題。為了避免服務(wù)的跨機(jī)房,我們?cè)谛聶C(jī)房也單獨(dú)部署了服務(wù)中心,個(gè)機(jī)服務(wù)到同機(jī)房的中心。這樣,客戶端的服務(wù)調(diào)用會(huì)路由到同機(jī)房的服務(wù)端,實(shí)現(xiàn)了服務(wù)調(diào)用的本地化,大大降低了跨機(jī)房通信帶來(lái)的延時(shí)和不可用性問(wèn)題。隨著業(yè)務(wù)越來(lái)越復(fù)雜,新的問(wèn)題又來(lái)了:系統(tǒng)會(huì)依賴很多周邊服務(wù)。比如下單我們給用積分,系同步積分。但步調(diào)分服一方面會(huì)影響下單的性能,另一方面如果積分服務(wù)不可用,會(huì)導(dǎo)致的下單功能失敗。對(duì)于外部服務(wù)依賴的可用性問(wèn)題,我們的解決辦法是,針對(duì)這些外部依賴進(jìn)行分級(jí)管理?yè)?jù)依賴功能的重要性不同,把它們分為強(qiáng)依賴和弱依賴。對(duì)于大量的弱依賴,我們以異步消息過(guò)柔性事務(wù)來(lái)保證數(shù)據(jù)的最終一致性,這樣大大提升了系統(tǒng)的性能和可用性。不過(guò),這里存在的問(wèn)題是,新機(jī)房的系統(tǒng)和賬戶系統(tǒng)都在老機(jī)房的數(shù)據(jù)庫(kù),有跨機(jī)房數(shù)據(jù)庫(kù)的性能問(wèn)題,以及老機(jī)房整體故障帶來(lái)的可用性問(wèn)題。比如說(shuō),機(jī)房斷電,通針對(duì)機(jī)房整體不可用的問(wèn)題,解決方案是,我們?cè)诙鄠€(gè)機(jī)房做對(duì)等的部署、中心和數(shù)據(jù)庫(kù),機(jī)房之間不產(chǎn)生直接的相互依賴,從而實(shí)現(xiàn)了機(jī)房級(jí)別的水平部署。如果系統(tǒng)的單元化做得完善,我們還可以進(jìn)一步支持虛擬機(jī)房統(tǒng)的各種異常情況。另外,最近幾年,容器化技術(shù)的發(fā)展很快,原來(lái)很多的平臺(tái)都是基于虛擬機(jī)部署,現(xiàn)在也紛紛改造為用Docker+K8s的方式部署,這大大提升了資源的利用率、系統(tǒng)的彈性伸縮能力。在資源瓶頸時(shí),你可以考慮用這種方式來(lái)優(yōu)化系統(tǒng)的部署。今天,我基于一個(gè)簡(jiǎn)化的系統(tǒng)模型,與你了平臺(tái)的技術(shù)架構(gòu)發(fā)展過(guò)程,我們是如何通過(guò)一步步的架構(gòu)升級(jí),解決系統(tǒng)各個(gè)階段出現(xiàn)的高可用、高性能和可伸縮問(wèn)題的,相信你現(xiàn)在對(duì)技術(shù)架構(gòu)如何應(yīng)對(duì)各種系統(tǒng)性,有了更深入的認(rèn)識(shí)。值得注意的是階段,對(duì)系統(tǒng)的要求都是不一樣的,這里我給出的只是典型的問(wèn)題和解決,希望你在 售賣。頁(yè)面已增加防盜追蹤,將依法其上一 18|可伸縮架構(gòu)案例:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論