概述
隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大。需求的激增,帶來的是技術(shù)上的壓力。互聯(lián)網(wǎng)系統(tǒng)架構(gòu)也因此也不斷的演進(jìn)、升級(jí)、迭代。從單一應(yīng)用,到垂直拆分,到分布式服務(wù),到SOA,以及現(xiàn)在火熱的微服務(wù)架構(gòu)等,還有在google帶領(lǐng)下來勢(shì)洶涌的Service Mesh。
作為一名合格的架構(gòu)師,有必要對(duì)架構(gòu)的前世今生足夠了解,這樣方能把握現(xiàn)在,預(yù)見未來。下面一起看一看互聯(lián)網(wǎng)系統(tǒng)架構(gòu)演變的歷程。
單體系統(tǒng)架構(gòu)
這是最傳統(tǒng)最原始的站點(diǎn)系統(tǒng)架構(gòu),互聯(lián)網(wǎng)開啟之初常用的架構(gòu)。單體系統(tǒng)一般功能與流量都很小,只需一個(gè)應(yīng)用,將所有功能都集中在一個(gè)系統(tǒng)中,并部署在一臺(tái)服務(wù)器上,以減少部署節(jié)點(diǎn)和成本。例如,將用戶模塊、問答模塊、考試模塊等都做在一個(gè)系統(tǒng)中,以一個(gè)應(yīng)用的形式部署在一臺(tái)服務(wù)器上。
單體系統(tǒng)架構(gòu)
集群架構(gòu)
當(dāng)站點(diǎn)流量增加而一臺(tái)主機(jī)已無法應(yīng)對(duì)其訪問量時(shí),可通過搭建集群增加主機(jī)的方式提升系統(tǒng)的性能。這種方式稱為水平擴(kuò)展。
集群架構(gòu)
分布式架構(gòu)
當(dāng)站點(diǎn)訪問量逐漸增大,集群架構(gòu)的水平擴(kuò)展所帶來的效率提升越來越小。此時(shí)可以將項(xiàng)目拆分成多個(gè)功能相對(duì)獨(dú)立的子系統(tǒng)以提升效率。例如用戶系統(tǒng)、問答系統(tǒng)、考試系統(tǒng)等。這種稱為垂直擴(kuò)展。
分布式架構(gòu)
微服務(wù)架構(gòu)
當(dāng)子系統(tǒng)越來越多時(shí), 發(fā)現(xiàn)它們可能同時(shí)都擁有某功能相同或相似的模塊,于是將這些在整個(gè)項(xiàng)目中冗余的功能模塊抽取出來作為獨(dú)立的系統(tǒng),這些系統(tǒng)就是專門為那些調(diào)用它們的系統(tǒng)服務(wù)的。那么這些抽取出的功能就稱為微服務(wù),微服務(wù)應(yīng)用稱為服務(wù)提供者,而調(diào)用微服務(wù)的應(yīng)用就稱為服務(wù)消費(fèi)者。這樣的系統(tǒng)架構(gòu)就是微服務(wù)架構(gòu)。
微服務(wù)架構(gòu)
流動(dòng)計(jì)算架構(gòu)
隨著功能的擴(kuò)張,微服務(wù)就需要越來越多;隨著 PV 的增漲,消費(fèi)者系統(tǒng)就需要越來越多;隨著消費(fèi)者的擴(kuò)張,為其提供服務(wù)的提供者服務(wù)器就需要越來越多,且每種提供者都要求創(chuàng)建為集群。這樣的話,消費(fèi)者對(duì)于提供者的訪問就不能再采用直連方式進(jìn)行了,此時(shí)就需要服務(wù)注冊(cè)中心了。提供者將服務(wù)注冊(cè)到注冊(cè)中心,而消費(fèi)者通過注冊(cè)中心進(jìn)行消費(fèi),消費(fèi)者無需再與提供者綁定了。提供者的宕機(jī),對(duì)消費(fèi)者不會(huì)產(chǎn)生直接的影響。
隨著服務(wù)的增多,在一些特殊時(shí)段(例如雙 11)就會(huì)出現(xiàn)服務(wù)資源浪費(fèi)的問題:有些服務(wù)的 QPS 很低,但其還占用著很多系統(tǒng)資源,而有些 QPS 很高,已經(jīng)出現(xiàn)了資源緊張,用戶體驗(yàn)驟降的情況。此時(shí)就需要服務(wù)治理中心了。讓一些不重要的服務(wù)暫時(shí)性降級(jí),或?yàn)槠浞峙漭^低的權(quán)重等,對(duì)整個(gè)系統(tǒng)資源進(jìn)行統(tǒng)一調(diào)配。
于是便產(chǎn)生了流動(dòng)計(jì)算架構(gòu),它是一種高可用、高性能、可伸縮的分布式微服務(wù)架構(gòu)。
這里的資源調(diào)配分為兩種:預(yù)調(diào)配與實(shí)時(shí)調(diào)配。
預(yù)調(diào)配是根據(jù)系統(tǒng)架構(gòu)師的“系統(tǒng)容量預(yù)估”所進(jìn)行的調(diào)配,是一種經(jīng)驗(yàn),是一種預(yù)處理,就像每年雙 11 期間的 PV 與 UV 都會(huì)很高,就需要提前對(duì)各服務(wù)性能進(jìn)行調(diào)配。
實(shí)時(shí)調(diào)配指的是根據(jù)服務(wù)監(jiān)控中心所提供的基于訪問壓力的實(shí)時(shí)系統(tǒng)容量評(píng)估數(shù)據(jù),對(duì)各服務(wù)性能進(jìn)行實(shí)時(shí)調(diào)配的方案。
流動(dòng)計(jì)算架構(gòu)
總結(jié)
架構(gòu)并不是已成不變的,隨著業(yè)務(wù)和技術(shù)的發(fā)展,不同的需求會(huì)催生不同的架構(gòu),不同的架構(gòu)使用不同的業(yè)務(wù)場(chǎng)景。架構(gòu)沒有最好,重要的是合適業(yè)務(wù)需求,符合使用的場(chǎng)景就好。