小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【大型網(wǎng)站技術(shù)架構(gòu)筆記】(一)演化過程

 曾淼Mark 2019-09-09

開篇明義:

【大型網(wǎng)站技術(shù)架構(gòu)筆記】系列是閱讀《大型網(wǎng)站技術(shù)架構(gòu)核心原理與實(shí)踐》一書的一些筆記,記錄了原書的一些重要內(nèi)容以及我的個(gè)人理解。其中很多內(nèi)容網(wǎng)上都能找得到。其實(shí)整本書,我最贊同的是作者闡述的網(wǎng)站架構(gòu)的價(jià)值觀——“業(yè)務(wù)成就技術(shù),而不是相反”。在沒有業(yè)務(wù)場(chǎng)景的時(shí)候就一味追逐架構(gòu),為技術(shù)而技術(shù),或者一上來就想要設(shè)計(jì)出一個(gè)可以適用所有場(chǎng)景的解決方案,是不理智的。我們有的時(shí)候可能會(huì)陷入技術(shù)的怪圈而忘了考慮業(yè)務(wù)本身。我曾經(jīng)看到的一句我很喜歡的話,在這邊也與諸君分享:好的架構(gòu)都是進(jìn)化來的,不是設(shè)計(jì)來的。

 

以下為 (一)演化過程 內(nèi)容:

 

一、初始階段

初始階段考慮到使用量規(guī)范較小,且快速開發(fā)等原因,采用單服務(wù)器,將文件、數(shù)據(jù)庫(kù)與應(yīng)用程序一起部署即可。語(yǔ)言可以采用LAMP。如下圖:

 

 

 

二、應(yīng)用服務(wù)于數(shù)據(jù)服務(wù)分離

隨著訪問量的增多,導(dǎo)致存儲(chǔ)空間不足,所以需要將應(yīng)用與數(shù)據(jù)存儲(chǔ)分離部署。文件和數(shù)據(jù)庫(kù)存儲(chǔ)需要分開。以避免由于大文件io而導(dǎo)致實(shí)時(shí)數(shù)據(jù)庫(kù)服務(wù)的長(zhǎng)響應(yīng)延時(shí)。文件服務(wù)器需要更多的磁盤空間,數(shù)據(jù)庫(kù)服務(wù)由于需要進(jìn)行磁盤檢索和數(shù)據(jù)緩存,所以需要較多的磁盤和內(nèi)存。而應(yīng)用服務(wù)器由于需要業(yè)務(wù)邏輯帶來的頻繁密集計(jì)算,所以需要較好的CPU。如下圖。




三、使用緩存改善網(wǎng)站性能

網(wǎng)站訪問中,對(duì)訪問頻率比較高的數(shù)據(jù)進(jìn)行本地緩存和分布式緩存,能夠很好地提高網(wǎng)站性能。什么時(shí)候采用本地緩存,什么時(shí)候采用分布式緩存呢?一些公司會(huì)選擇將熱點(diǎn)數(shù)據(jù)存入本地緩存,同時(shí)異步寫入分布式緩存。而更多時(shí)候,我們較少采用本地緩存,因?yàn)槠鋾?huì)占用寶貴的應(yīng)用程序的內(nèi)存空間。采用本地緩存只有那種占用少量?jī)?nèi)存,且使用率非常高的數(shù)據(jù)。比如每次請(qǐng)求都需要判斷用戶是否在黑名單中。此時(shí)就可以把名單加載入本地緩存。分布式緩存我們常用的就是memcached和redis。二者的伸縮性都非常優(yōu)秀。

 

 

 

四、應(yīng)用服務(wù)集群化

單一的服務(wù)器存在著并發(fā)處理能力不足,高峰期負(fù)載過高,單點(diǎn)等問題。此時(shí)可以用過簡(jiǎn)單的同構(gòu)集群化部署來解決這一問題。

 

 

 五、數(shù)據(jù)庫(kù)讀寫分離

    隨著網(wǎng)站的發(fā)展,數(shù)據(jù)庫(kù)的負(fù)載會(huì)變得越來越大。而且讀、寫數(shù)據(jù)庫(kù)的操作本身就不是一個(gè)時(shí)間量級(jí)上的操作。如果都混在一起處理,則將很可能導(dǎo)致操作長(zhǎng)時(shí)間阻塞等其他問題。大部分的主流數(shù)據(jù)庫(kù)都自帶主從熱備的功能,所以部署起來還是比較簡(jiǎn)單的。而讀寫分離以及下面將提到的分庫(kù)之后,我們常會(huì)采用一些中間件來對(duì)這個(gè)底層數(shù)據(jù)訪問進(jìn)行封裝,從而對(duì)應(yīng)用透明。比如mybatis有阿里巴巴的cobar client框架。讀寫分離后,我們的應(yīng)用服務(wù)的設(shè)計(jì)中,就需要慎重考慮,讀寫同步的延時(shí)這一最終一致性的保證,對(duì)用戶體驗(yàn)帶來的影響是否可以接受。



 

六、采用其他緩存代理技術(shù)

以上說的基本都是服務(wù)器端的優(yōu)化,而用戶訪問網(wǎng)站時(shí)候,帶寬、地域等其他因素會(huì)對(duì)訪問體驗(yàn)帶來不可忽視的影響。來改善這一體驗(yàn),加快網(wǎng)站訪問速度的辦法主要有cdn加速和反向代理。可以認(rèn)為cdn是一種特殊的反向代理,其也是基于反向代理的原理過來實(shí)現(xiàn)的緩存和加速。其主要緩存一些靜態(tài)資源到離用戶最近的網(wǎng)絡(luò)提供商的機(jī)房。而此處的反向代理則是部署在網(wǎng)站服務(wù)端的機(jī)房。其既可以進(jìn)行一些靜態(tài)數(shù)據(jù)的高速緩存,也由于采用了SSL與內(nèi)部服務(wù)器進(jìn)行交互從而節(jié)省了大量開銷。



 

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

隨著網(wǎng)站規(guī)模的增大,單一的數(shù)據(jù)庫(kù)和文件服務(wù)器已經(jīng)無法很好迎合業(yè)務(wù)場(chǎng)景。所以同理地,也會(huì)將其集群化部署。



 

八、采用nosql和搜索引擎

隨著數(shù)據(jù)需求越來越復(fù)雜,比如需要對(duì)log進(jìn)行存儲(chǔ)和分析以及檢索。此時(shí)可以引入nosql數(shù)據(jù)庫(kù)(如mongodb、hbase等)和搜索引擎技術(shù)(如lucense等)。同時(shí),此時(shí)的數(shù)據(jù)源可能已經(jīng)比較多,可以來自關(guān)系型數(shù)據(jù)庫(kù)集群、非關(guān)系型數(shù)據(jù)庫(kù)、緩存、文件系統(tǒng)甚至從消息隊(duì)列訂閱的數(shù)據(jù)等等。所以需要一個(gè)統(tǒng)一的數(shù)據(jù)訪問模塊(DAL)來統(tǒng)一對(duì)這一過程進(jìn)行封裝和管理。



 

九、業(yè)務(wù)拆分與分布式化

前面我們提到,對(duì)業(yè)務(wù)服務(wù)進(jìn)行同構(gòu)部署來實(shí)現(xiàn)業(yè)務(wù)的并發(fā)處理。而我們知道這樣簡(jiǎn)單的加機(jī)器在前期確實(shí)可以實(shí)現(xiàn)服務(wù)性能的線性增長(zhǎng),但是到了后期,并發(fā)量上來了之后,會(huì)發(fā)現(xiàn)這一處理將會(huì)很快達(dá)到瓶頸。而且于此同時(shí),各個(gè)子業(yè)務(wù)的差異性帶來的架構(gòu)以及請(qǐng)求量方面的差異將日趨明顯,如果還這樣進(jìn)行同構(gòu)化的混部,其服務(wù)的性能將可能最終跟不上業(yè)務(wù)的發(fā)展,甚至可能導(dǎo)致雪崩。所以最好的做法,就是對(duì)業(yè)務(wù)服務(wù)進(jìn)行垂直拆分。同時(shí)對(duì)基礎(chǔ)服務(wù)進(jìn)行水平拆分。真正實(shí)現(xiàn)SOA。



 

如此,便是一個(gè)網(wǎng)站架構(gòu)演化的常見路徑

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多