溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

漫談大型網(wǎng)站架構(gòu)

發(fā)布時(shí)間:2020-07-11 18:29:02 來源:網(wǎng)絡(luò) 閱讀:347 作者:it_haha 欄目:軟件技術(shù)

大型網(wǎng)站架構(gòu)從來都不是一個(gè)預(yù)先定義的架構(gòu),而是一個(gè)演進(jìn)式的架構(gòu)。很少有一個(gè)網(wǎng)站從建站開始,就能夠因具備大型網(wǎng)站的所有屬性而一成不變的,從最簡(jiǎn)單的LAMP架構(gòu),再到基于IOE的大型集中式應(yīng)用架構(gòu),再演變成時(shí)下的分布式應(yīng)用架構(gòu),隨著網(wǎng)站用戶規(guī)模的擴(kuò)大,架構(gòu)也在不斷演進(jìn)。從實(shí)體機(jī)到虛擬機(jī)再到當(dāng)前流行的Docker技術(shù),從單機(jī)房到同城多機(jī)房再到異地多活,從LAMP到J2EE再到各種分布式中間件如服務(wù)框架、分布式消息隊(duì)列、配置管理中間件、分布式數(shù)據(jù)訪問層,由簡(jiǎn)至繁的艱難蛻變,也正是一個(gè)網(wǎng)站從小變大由弱變強(qiáng)的成長(zhǎng)歷程,哪里有挑戰(zhàn),哪里才會(huì)有變革,這正是作為技術(shù)人建功立業(yè)的時(shí)刻。

 

規(guī)模不斷擴(kuò)大,但成本不可能隨之線性增長(zhǎng),因此,如何利用規(guī)模效應(yīng)降低資源成本,抽取公共部分,避免重復(fù)造輪子,提高開發(fā)效率和響應(yīng)速度,成了必須思考的問題。技術(shù)存在的核心價(jià)值就是為了生產(chǎn)力的提高,當(dāng)技術(shù)架構(gòu)制約了生產(chǎn)力發(fā)展,就需要進(jìn)行技術(shù)變革。當(dāng)前支撐大型網(wǎng)站的幾大核心技術(shù),分布式、服務(wù)化、虛擬化,其中分布式解決的是規(guī)?;瘞淼膯栴},所謂的規(guī)?;窗〝?shù)據(jù)規(guī)模越來越大,訪問量越來越高,也包括開發(fā)團(tuán)隊(duì)規(guī)模越來越大,工程代碼規(guī)模越來越大。

 

單機(jī)的存儲(chǔ)能力以及負(fù)載能力必然有限,從PC到小型機(jī)再到中型機(jī)、大型機(jī),成本將成指數(shù)級(jí)升高,而成百上千人開發(fā)同一個(gè)工程,則導(dǎo)致系統(tǒng)臃腫,開發(fā)、發(fā)布效率極低,互聯(lián)網(wǎng)將喪失了賴以生存的靈活性,回到以前傳統(tǒng)軟件的開發(fā)模式。通過應(yīng)用垂直拆分,集群分布式水平擴(kuò)展,不僅使系統(tǒng)容量得到提升,存儲(chǔ)和負(fù)載將分配到大規(guī)模的廉價(jià)集群上,以降低成本,開發(fā)效率和開發(fā)模式也得到改變。

 

通過公共業(yè)務(wù)抽取,將誕生一批處于系統(tǒng)底層的基礎(chǔ)服務(wù),避免相同的內(nèi)容重復(fù)造輪子,提高開發(fā)效率。作為大型網(wǎng)站架構(gòu)中最重要的中間件,服務(wù)化框架簡(jiǎn)化了服務(wù)調(diào)用所涉及的對(duì)象序列化與反序列化,通信協(xié)議,服務(wù)路由等操作,以及到后來誕生的一個(gè)新名詞—服務(wù)治理,去梳理服務(wù)的依賴關(guān)系、調(diào)用鏈路、強(qiáng)弱依賴等等更復(fù)雜的問題。

 

除此之外,在架構(gòu)師的武器庫(kù)中,還有眾多不同應(yīng)用場(chǎng)景下使用的中間件,如消息中間件、 分布式數(shù)據(jù)訪問層、配置管理中心、數(shù)據(jù)遷移工具、分布式文件系統(tǒng)等等,這些都是日常系統(tǒng)架構(gòu)中的粘合劑。大型網(wǎng)站的另外一個(gè)核心技術(shù)就是資源的虛擬化,從實(shí)體機(jī)到Xen、KVM再到基于LXC的輕量級(jí)虛擬化方案,再到Docker,技術(shù)的更新?lián)Q代使得資源的利用率越來越高,集群的運(yùn)維、部署和管理越來越方便。

 

另外不同的場(chǎng)景下如何選擇存儲(chǔ)也十分重要,高并發(fā)和大數(shù)據(jù)往往都不會(huì)單獨(dú)出現(xiàn),到底是采用磁盤、SSD還是采用內(nèi)存,到底是采用分布式文件系統(tǒng),關(guān)系數(shù)據(jù)庫(kù),還是NOSQL,還是采用內(nèi)存分布式緩存,不同的場(chǎng)景下方案會(huì)大相徑庭,分布式文件系統(tǒng)存儲(chǔ)容量幾乎可以理解為無限,但是吞吐低,關(guān)系型數(shù)據(jù)庫(kù)有嚴(yán)謹(jǐn)?shù)膕chema以及功能強(qiáng)大的SQL語句,可以滿足各種復(fù)雜的查詢條件,但無奈擴(kuò)展太麻煩,為了應(yīng)對(duì)高并發(fā)讀寫訪問,master-slave、讀寫分離、分庫(kù)分表一折騰,不僅工作量大增,且查詢維度受限,還需要引入垂直化搜索引擎來擴(kuò)展查詢維度,NOSQL雖然能自動(dòng)分區(qū)擴(kuò)容,但無奈不支持SQL,而緩存雖快,內(nèi)存條又太貴,架構(gòu)就是要不斷的權(quán)衡取舍。

 

大公司之所以不如小公司響應(yīng)速度快,原因在于大公司有太多積累,有時(shí)候積累多了也會(huì)成為包袱,現(xiàn)有的模型會(huì)使得新業(yè)務(wù)難以快速融入。當(dāng)遇到問題和挫折的時(shí)候,就是思考改進(jìn)和系統(tǒng)變革的時(shí)候,從來沒有哪個(gè)系統(tǒng)在設(shè)計(jì)好之后就封存代碼永不改變的,技術(shù)永遠(yuǎn)是不斷發(fā)展,需求和市場(chǎng)也是不斷變化的,因此不要指望用一種架構(gòu)滿足所有的需求,系統(tǒng)設(shè)計(jì)需要滿足一段時(shí)間內(nèi)的可擴(kuò)展性,但千萬不要過度設(shè)計(jì),因?yàn)檫^了半年之后你回過頭來重新review,你會(huì)發(fā)現(xiàn)需求早已改變,這就是互聯(lián)網(wǎng)的快節(jié)奏。

 

對(duì)于系統(tǒng)的架構(gòu)來說,一段時(shí)間之內(nèi)架構(gòu)的演變,常常會(huì)經(jīng)歷從清晰,再到模糊混亂,再重構(gòu),再清晰,然后又變得模糊的過程,市場(chǎng)環(huán)境總是瞬息萬變的,因此,系統(tǒng)的設(shè)計(jì)要遵循對(duì)擴(kuò)展開放,對(duì)修改封閉的原則,做到這點(diǎn)即可方便及時(shí)的接入新流程,又能夠不影響既有的流程。從宏觀來看,各個(gè)系統(tǒng)間的關(guān)系一定不是煙囪與煙囪的關(guān)系,而是猶如城市里的高樓大廈,通過公路連接起來,因此,要提高建房子的速度,就要充分利用已有的基礎(chǔ)設(shè)施,已有的中間件,來降低系統(tǒng)構(gòu)建的成本和風(fēng)險(xiǎn)。

 

架構(gòu)設(shè)計(jì)的幾個(gè)層次,沒有架構(gòu)也是架構(gòu),專注于解決現(xiàn)有問題也能稱為架構(gòu),而好的架構(gòu)應(yīng)該是即能夠約束開發(fā)者又能夠解放開發(fā)者使其專注于功能的設(shè)計(jì)。盡量將復(fù)雜的事情變的簡(jiǎn)單,而不要將簡(jiǎn)單的事情變的復(fù)雜,技術(shù)從來都不是用來炫的,而是用來解決實(shí)際問題的,因此我們不需要花拳繡腿,洛克希德·馬丁公司的著名飛機(jī)設(shè)計(jì)師凱利·約翰遜所提出的KISS原則,就是最好的詮釋。風(fēng)險(xiǎn)驅(qū)動(dòng)的架構(gòu)理念告訴我們,避免失敗是所有工程技術(shù)的核心,架構(gòu)也是技術(shù),運(yùn)用架構(gòu)技術(shù)去緩解風(fēng)險(xiǎn),避免走極端,是架構(gòu)師的最根本職責(zé)。

微信公眾號(hào):IT哈哈。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI