国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

大型網(wǎng)站應(yīng)用架構(gòu)對比研究

2018-01-05 10:39李緒成劉鑫
軟件工程 2017年11期
關(guān)鍵詞:搜索大數(shù)據(jù)

李緒成+劉鑫

摘 要:隨著使用互聯(lián)網(wǎng)的人越來越多,網(wǎng)站本身業(yè)務(wù)的擴(kuò)展和用戶的增多,網(wǎng)站面臨著高并發(fā)訪問、大數(shù)據(jù)的壓力,這時(shí)需要對網(wǎng)站進(jìn)行優(yōu)化和改進(jìn)。并發(fā)訪問量和數(shù)據(jù)量的瓶頸也成為評價(jià)一個大型網(wǎng)站性能的標(biāo)準(zhǔn)。然而怎樣改進(jìn)和優(yōu)化網(wǎng)站成為一個問題。本文通過研究現(xiàn)今具有代表性的大型網(wǎng)站應(yīng)用架構(gòu),得出大型網(wǎng)站的通用優(yōu)化方案,以及一套可供參考的大型網(wǎng)站基本架構(gòu),為網(wǎng)站設(shè)計(jì)者提供大型網(wǎng)站優(yōu)化通用方案、網(wǎng)站改進(jìn)思路和改進(jìn)方法。

關(guān)鍵詞:網(wǎng)站架構(gòu);網(wǎng)站優(yōu)化;緩存;大數(shù)據(jù);搜索

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A

Abstract:With more and more people using the Internet,the business expansion of websites and the user increase of websites,websites are facing great pressure of high concurrent access and big data,so it is necessary to optimize and improve websites.The bottleneck of concurrent access and data volume is also a standard to evaluate the performance of a large website.However,how to improve and optimize the website has become a problem.By studying the typical application architecture of large websites,the paper proposes the general optimization scheme of large websites and the basic framework of large-scale websites for reference,providing website designers with general solutions,improvement ideas and improvement methods to large websites.

Keywords:website architecture;website optimization;cache;big data;search

1 引言(Introduction)

大型網(wǎng)站分為三大類:電商網(wǎng)站、視頻網(wǎng)站和大數(shù)據(jù)搜索網(wǎng)站,通過這三類網(wǎng)站來研究大型網(wǎng)站應(yīng)用架構(gòu)。其中最能代表這三類網(wǎng)站的大型網(wǎng)站是:淘寶、京東、優(yōu)酷和百度。淘寶和京東是經(jīng)歷過雙十一考驗(yàn)的,其性能是毋庸置疑的;優(yōu)酷是中國最大的視頻網(wǎng)站之一,日均播放量上億,可見其網(wǎng)站性能很穩(wěn)定;百度網(wǎng)站是全球最大的中文搜索引擎、最大的中文網(wǎng)站,存儲了萬億級的網(wǎng)頁數(shù)量,其對大數(shù)據(jù)的處理是值得學(xué)習(xí)的。這些網(wǎng)站都是研究大型網(wǎng)站的最佳對象。

通過對上述網(wǎng)站進(jìn)行對比研究得出大型網(wǎng)站典型優(yōu)化方案,以及一套可供參考的大型網(wǎng)站基本架構(gòu),為網(wǎng)站設(shè)計(jì)者提供網(wǎng)站改進(jìn)思路和改進(jìn)方法,以及網(wǎng)站優(yōu)化方案。

2 網(wǎng)站基本架構(gòu)(Basic architecture of website)

大型網(wǎng)站架構(gòu)分為網(wǎng)站前端、應(yīng)用端和數(shù)據(jù)庫端。每一個部分都有自己的使命,它們協(xié)同合作形成一個完整的網(wǎng)站[1,2]。大型網(wǎng)站的基本架構(gòu)如圖1所示。

下面從分別從網(wǎng)站前端、應(yīng)用服務(wù)器和數(shù)據(jù)庫三個方面描述改進(jìn)方法。

3 網(wǎng)站前端(Front end)

網(wǎng)站前端的作用是加快用戶訪問速度,過濾惡意請求,實(shí)現(xiàn)負(fù)載均衡。

3.1 CDN服務(wù)器

CDN是通過在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),能夠?qū)崟r(shí)地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況,以及到用戶的距離和響應(yīng)時(shí)間等綜合信息將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上,能夠加快響應(yīng)效率,解決網(wǎng)絡(luò)擁堵問題。

優(yōu)酷網(wǎng)站建立了比較完善的CDN,可以保證分布在全國各地的用戶能訪問到離自己最近的服務(wù)器,并把服務(wù)狀況最好的視頻服務(wù)器地址反饋給用戶,讓用戶可以以最快的速度獲取到視頻資源,這也是優(yōu)酷網(wǎng)站比其他視頻網(wǎng)站更流暢的原因。

淘寶網(wǎng)站也在全國各地建立了數(shù)百個CDN節(jié)點(diǎn)。當(dāng)用戶發(fā)起請求時(shí),瀏覽器訪問DNS服務(wù)器進(jìn)行DNS域名解析。然后根據(jù)用戶的IP將訪問分配到不同的入口。如果客戶的IP屬于電信運(yùn)營商,那么就會被分配到同樣是電信的CDN節(jié)點(diǎn),保證用戶訪問的CDN節(jié)點(diǎn)是離用戶最近的。

一些前段框架能夠?yàn)镃DN提供便利,例如Angular JS技術(shù)[3]。

3.2 反向代理服務(wù)器

通過反向代理服務(wù)器處理HTTP請求,在用戶和Web服務(wù)器之間建立一個屏障,可有效地防止網(wǎng)絡(luò)攻擊,同時(shí)還可以實(shí)現(xiàn)負(fù)載均衡和緩存功能?,F(xiàn)在功能比較完善的反向代理服務(wù)器有Squid和Nginx[4,5]。不過Squid不支持多核,但是磁盤緩存容量比較大,支持外部文件讀取、熱加載和熱啟動,性能中等;而Nginx支持多核、集群,但不支持外部文件讀取,性能較強(qiáng)。反向代理網(wǎng)站架構(gòu)圖如圖2所示。

3.3 負(fù)載均衡調(diào)度服務(wù)器

部署負(fù)載均衡調(diào)度服務(wù)器,專門負(fù)責(zé)負(fù)載均衡,可以將請求分發(fā)到應(yīng)用服務(wù)器集群下的任何一個服務(wù)器上。隨著訪問人數(shù)的增加,增加服務(wù)器就可以,突破了負(fù)載壓力瓶頸[6]。

現(xiàn)在比較常用的技術(shù)是LVS(Linux Virtual Server,Linux虛擬服務(wù)器),LVS技術(shù)是為了解決負(fù)載均衡而存在的一種技術(shù),它主要的功能是在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上建立一個虛擬的服務(wù)器集群系統(tǒng),用廉價(jià)、有效、透明的方法去擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬,增加網(wǎng)站吞吐量,增強(qiáng)對網(wǎng)絡(luò)數(shù)據(jù)的處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。淘寶網(wǎng)站的負(fù)載均衡系統(tǒng)采用的是LVS技術(shù)。只是這種負(fù)載均衡系統(tǒng)的構(gòu)建是在Linux操作系統(tǒng)上,其他操作系統(tǒng)不行,并且需要重新編譯Linux操作系統(tǒng)內(nèi)核,對系統(tǒng)內(nèi)核的了解要求很高。LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù),調(diào)度器具有很好的吞吐率,將請求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,并且調(diào)度器能自動屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個高性能的、高可用的虛擬服務(wù)器。endprint

4 應(yīng)用端(Application end)

應(yīng)用端進(jìn)行業(yè)務(wù)處理,業(yè)務(wù)與業(yè)務(wù)之間需要通過消息隊(duì)列實(shí)現(xiàn)數(shù)據(jù)同步,而對于一些熱點(diǎn)數(shù)據(jù)和常用到的數(shù)據(jù),需要緩存到分布式緩存服務(wù)器上。

4.1 應(yīng)用服務(wù)器

Web應(yīng)用程序駐留在應(yīng)用服務(wù)器(Application Server)上,所以應(yīng)用服務(wù)端需要做好業(yè)務(wù)的拆分,減少業(yè)務(wù)間的聯(lián)系,做到高內(nèi)聚低耦合,即當(dāng)某個業(yè)務(wù)無法正常使用時(shí),不影響其他業(yè)務(wù)的使用。在應(yīng)用服務(wù)器上還應(yīng)該做好本地緩存,對于熱門或常用的數(shù)據(jù)做好本地緩存。

Session在Web應(yīng)用中占有很重要的位置。它的主要功能是用來保存用戶的狀態(tài)信息。Session在集群中存在共享的問題。現(xiàn)在解決Session共享問題有三種方法。第一種方法是通過負(fù)載均衡設(shè)備實(shí)現(xiàn)會話保持,第二種方法是采用Session復(fù)制,第三種方法則是采用集中式緩存。第二種方式嚴(yán)重影響到了集群環(huán)境的可伸縮性,不利于集群的橫向擴(kuò)展,即使是采取兩兩復(fù)制的方式也會造成集群內(nèi)部網(wǎng)絡(luò)負(fù)載嚴(yán)重,還容易造成網(wǎng)絡(luò)垃圾。

大型網(wǎng)站的業(yè)務(wù)拆分是很細(xì)的,也意味著應(yīng)用服務(wù)器會很多,而所有的應(yīng)用都會連接數(shù)據(jù)庫,這會導(dǎo)致數(shù)據(jù)庫連接資源不足,從而拒絕服務(wù),所以應(yīng)該把它們一些共用的業(yè)務(wù)提取出來,獨(dú)立部署,由這些可復(fù)用的業(yè)務(wù)連接數(shù)據(jù)庫,提供共用業(yè)務(wù)服務(wù)。而應(yīng)用系統(tǒng)只需管理用戶界面,通過分布式服務(wù)調(diào)用共用業(yè)務(wù)服務(wù)完成具體業(yè)務(wù)操作。

4.2 消息隊(duì)列服務(wù)器

對于Web網(wǎng)站,高并發(fā)訪問是個大問題,異步能很好地解決這個問題。而異步的核心就是消息隊(duì)列。當(dāng)用戶請求的數(shù)據(jù)發(fā)送到消息隊(duì)列后就可以立即返回,不需要等待寫入數(shù)據(jù)庫完成,這時(shí)進(jìn)程從消息隊(duì)列中獲取數(shù)據(jù),再將數(shù)據(jù)異步寫入數(shù)據(jù)庫,并且消息隊(duì)列服務(wù)器處理速度遠(yuǎn)快于服務(wù)器。Notify是淘寶根據(jù)自身業(yè)務(wù)需要量身定制的一款消息中間件,是支撐“雙十一”最核心的系統(tǒng)之一。消息系統(tǒng)的核心作用是:解耦、異步和并行。

4.3 分布式緩存服務(wù)器

網(wǎng)站的訪問特點(diǎn)也符合二八定律,即80%的業(yè)務(wù)訪問在20%的數(shù)據(jù)上。緩存服務(wù)器是專門用來緩存這20%的數(shù)據(jù)。一般的本地緩存受限于應(yīng)用服務(wù)器內(nèi)存的大小,而專門的緩存服務(wù)器則不受限制,可以將大量的熱點(diǎn)數(shù)據(jù)或者常用到的數(shù)據(jù)緩存在緩存服務(wù)器上,使用分布式進(jìn)行部署,從而緩解數(shù)據(jù)庫服務(wù)器的壓力。

Memcached是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),它可以有效減輕動態(tài)Web應(yīng)用數(shù)據(jù)庫的壓力。它在內(nèi)存中緩存對象和數(shù)據(jù),當(dāng)請求這些數(shù)據(jù)時(shí),直接返回,有效地減少了讀取數(shù)據(jù)庫的次數(shù),從而提高動態(tài)數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度。它的客戶端可以用任何語言來編寫,并且通過Memcached協(xié)議與守護(hù)進(jìn)程通信。淘寶的TAIR就是基于Memcached開發(fā)的key/value數(shù)據(jù)庫。

5 數(shù)據(jù)庫端(Database end)

數(shù)據(jù)庫端主要是完成數(shù)據(jù)和文件的存儲和提取。大型網(wǎng)站的數(shù)據(jù)和文件數(shù)量是巨大的。存儲需要分布式存儲,提取需要搜索引擎協(xié)助完成。

5.1 分布式文件服務(wù)器

分布式文件服務(wù)器主要是用來存儲圖片、視頻一類的文件。分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲資源并不是完全直接連接在本地節(jié)點(diǎn)上,而是利用網(wǎng)絡(luò)和節(jié)點(diǎn)相連接。分布式文件系統(tǒng)支持多臺主機(jī)通過網(wǎng)絡(luò)同時(shí)訪問共享文件和存儲目錄,實(shí)現(xiàn)了多臺計(jì)算機(jī)上的多個用戶能夠共享文件和存儲資源。在分布式文件系統(tǒng)環(huán)境下,客戶端節(jié)點(diǎn)并不直接訪問底層的塊存儲介質(zhì),而是使用網(wǎng)絡(luò)協(xié)議進(jìn)行文件操作交互。因此,分布式文件系統(tǒng)是對存儲數(shù)據(jù)的共享,而不是對存儲物理資源的共享。

一個搜索引擎對于訪問熱點(diǎn)的處理也極其重要。一般的網(wǎng)站對于訪問熱點(diǎn)傳統(tǒng)的解決方案是緩存,包括文件塊緩存、數(shù)據(jù)記錄緩存、查詢結(jié)果緩存;而百度使用分布式文件系統(tǒng)將請求天然地打散到數(shù)千個節(jié)點(diǎn)上,實(shí)現(xiàn)了快速分裂和遷移,緩解了高并發(fā)訪問熱點(diǎn)對數(shù)據(jù)庫服務(wù)器的沖擊,使網(wǎng)站在高并發(fā)訪問熱點(diǎn)時(shí)能夠保證用戶的體驗(yàn)。

5.2 分布式數(shù)據(jù)庫服務(wù)器

大型網(wǎng)站的數(shù)據(jù)是海量的,一個數(shù)據(jù)庫服務(wù)器不可能存儲所有的數(shù)據(jù),所以需要分布式部署數(shù)據(jù)庫服務(wù)器。分布式部署需要對數(shù)據(jù)庫進(jìn)行合理的拆分。優(yōu)酷網(wǎng)站在數(shù)據(jù)庫方面做了很多的優(yōu)化,包括MySQL主從復(fù)制、分區(qū)和分片,將用戶按id以哈希算法進(jìn)行分組,并且把該用戶或者該組用戶的數(shù)據(jù)存儲到一個Sharding中。這樣當(dāng)用戶數(shù)量增加時(shí),只需要增加一臺數(shù)據(jù)庫服務(wù)器就可以。

使用MySQL做數(shù)據(jù)庫,它有主從復(fù)制功能,所以還可以分為主數(shù)據(jù)庫服務(wù)器和從數(shù)據(jù)庫服務(wù)器。主數(shù)據(jù)庫服務(wù)器負(fù)責(zé)數(shù)據(jù)的寫,而從數(shù)據(jù)庫服務(wù)器負(fù)責(zé)數(shù)據(jù)的讀。其實(shí)主從復(fù)制原理簡單地說就是主數(shù)據(jù)庫將操作行為寫在日志文件里,從數(shù)據(jù)庫通過日志文件和主數(shù)據(jù)庫保持一致。這樣做的目的就是實(shí)現(xiàn)讀寫分離,緩解數(shù)據(jù)庫服務(wù)器的壓力。當(dāng)數(shù)據(jù)的存儲和檢索越來越復(fù)雜時(shí),使用NoSQL和搜索引擎也是大型網(wǎng)站解決大數(shù)據(jù)的方案。

百度網(wǎng)站開發(fā)了自己的分布式數(shù)據(jù)庫系統(tǒng)Tera。Tera是一個高性能、可伸縮的結(jié)構(gòu)化數(shù)據(jù)存儲系統(tǒng),被設(shè)計(jì)用來管理搜索引擎萬億量級的超鏈與網(wǎng)頁信息。數(shù)據(jù)需要實(shí)時(shí)的分析和高效的訪問,所以百度使用三維數(shù)據(jù)模型組織數(shù)據(jù)(包括行鍵、列名和時(shí)間戳全局排序);并且百度網(wǎng)站還使用了多級緩存系統(tǒng),將現(xiàn)代服務(wù)器硬件內(nèi)存大、SSD盤和萬兆網(wǎng)卡的性能優(yōu)勢充分利用,實(shí)現(xiàn)了數(shù)據(jù)庫的高吞吐數(shù)據(jù)量和數(shù)據(jù)庫的水平擴(kuò)展。

5.3 搜索引擎服務(wù)器

搜索引擎的作用是在數(shù)據(jù)庫查詢數(shù)據(jù)時(shí)提供一種有效的查詢機(jī)制,確保數(shù)據(jù)能準(zhǔn)確地查找。

電商網(wǎng)站的搜索的特點(diǎn):召回率要求高,電商數(shù)據(jù)結(jié)構(gòu)化,信息更新時(shí)效性高,用戶個性化需求高。京東網(wǎng)站的搜索服務(wù)有三大系統(tǒng):爬蟲系統(tǒng)、離線信息處理系統(tǒng)、索引系統(tǒng)。商品搜索引擎的核心是建立商品索引,而建立索引需要詳細(xì)的商品信息數(shù)據(jù)。京東利用大數(shù)據(jù)平臺的數(shù)據(jù)庫抽取接口和中間件系統(tǒng),實(shí)現(xiàn)了站內(nèi)商品爬蟲系統(tǒng),用來抽取數(shù)據(jù)庫中的商品信息和及時(shí)發(fā)現(xiàn)變化的商品信息。然后利用離線信息處理系統(tǒng)來建立商品搜索引擎的待索引數(shù)據(jù),包括全量待索引數(shù)據(jù)和增量待索引數(shù)據(jù)。索引系統(tǒng)的主要功能是把以商品為維度進(jìn)行存儲的待索引數(shù)據(jù),轉(zhuǎn)換為以關(guān)鍵字為維度進(jìn)行存儲的數(shù)據(jù),用于搜索引擎上層服務(wù)的調(diào)用。對于一些比較熱門如“衣服”“褲子”之類的查詢詞,其查詢結(jié)果會比較多,原始的查詢結(jié)果就有幾千萬個之多,如果對這些結(jié)果進(jìn)行一一地處理,那么性能會變得非常差。這時(shí),需要從用戶的角度進(jìn)行分析,一個查詢只有排在最前面的結(jié)果對用戶來說才是有意義的。通過分析用戶翻頁的次數(shù)等數(shù)據(jù),可以得到截?cái)啾A魌op N的結(jié)果。endprint

百度搜索引擎由四部分組成:蜘蛛系統(tǒng)、監(jiān)控系統(tǒng)、索引數(shù)據(jù)庫和檢索系統(tǒng)。百度網(wǎng)站對搜索請求的處理過程如下:系統(tǒng)在得到搜索關(guān)鍵字后,使用蜘蛛自動搜索超鏈接庫,根據(jù)鏈接從網(wǎng)頁庫中得到相應(yīng)的網(wǎng)頁,在通過PageRank(一種根據(jù)網(wǎng)頁之間相互的超鏈接計(jì)算的技術(shù))得到網(wǎng)頁排名,然后通過正排計(jì)算(將網(wǎng)頁分成一個個的關(guān)鍵詞)得出正排庫,再通過倒排計(jì)算(用網(wǎng)頁中的關(guān)鍵詞來給網(wǎng)頁建立另外一個索引庫)得出倒排索引,這時(shí)候檢索系統(tǒng)將結(jié)果反饋給用戶。百度搜索流程圖如圖3所示。

6 結(jié)論(Conclusion)

通過對各大型網(wǎng)站的研究,得出大型網(wǎng)站通用優(yōu)化方案。網(wǎng)站前端優(yōu)化主要是減少HTTP請求、使用CDN、使用反向代理、使用負(fù)載均衡等;網(wǎng)站應(yīng)用端優(yōu)化主要采用集群、異步、多線程、資源復(fù)用、數(shù)據(jù)結(jié)構(gòu)、分布式、緩存等;網(wǎng)站數(shù)據(jù)端優(yōu)化主要包括數(shù)據(jù)冗余、數(shù)據(jù)庫拆分、分布式存儲、NoSQL等。

該優(yōu)化方案能夠?yàn)榫W(wǎng)站設(shè)計(jì)者提供參考。該方案的一些思想在已經(jīng)在某些系統(tǒng)中使用[7,8]。

參考文獻(xiàn)(References)

[1] 周強(qiáng),謝靖,趙華茗.大型網(wǎng)站的架構(gòu)研究及解決方案[J].計(jì)算機(jī)科學(xué),2017,44(S1):587-590.

[2] 張瑪麗.大型網(wǎng)站分布式架構(gòu)的研究和應(yīng)用[J].山西電子技術(shù),2017(02):73-75;93.

[3] 董英茹.簡談AngularJS在下一代Web開發(fā)中的應(yīng)用[J].軟件工程師,2015,18(05):30-31.

[4] 孫曉林,張新剛.基于Nginx的網(wǎng)站安全優(yōu)化方案[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017,(11):43;45.

[5] 張康.基于Nginx的在線教育平臺架構(gòu)優(yōu)化研究[D].北京工業(yè)大學(xué),2016.

[6] 馬原.基于RPC的高并發(fā)網(wǎng)絡(luò)通信中負(fù)載均衡的研究[D].浙江理工大學(xué),2017.

[7] 付麗梅,鄧?yán)^禹,賈躍.基于騰訊微校平臺的易學(xué)習(xí)APP設(shè)計(jì)與實(shí)現(xiàn)[J].考試周刊,2017(07):112.

[8] 付麗梅,劉英鵬,賈躍.基于騰訊微校平臺的校園移動辦公APP設(shè)計(jì)與實(shí)現(xiàn)[J].信息系統(tǒng)工程,2017(01):156-157.

作者簡介:

李緒成(1977-),男,碩士,副教授.研究領(lǐng)域:Java EE,計(jì)算機(jī)視覺.

劉 鑫(1995-),男,本科,工程師.研究領(lǐng)域:軟件開發(fā).endprint

猜你喜歡
搜索大數(shù)據(jù)
大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路
基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究
優(yōu)惠信息檢索與分析
網(wǎng)上"搜索"泄密,女自領(lǐng)報(bào)復(fù)情敵引來血光之災(zāi)
措勤县| 洞头县| 蓬莱市| 福建省| 额济纳旗| 隆德县| 景洪市| 宽甸| 五常市| 桑日县| 大洼县| 文成县| 新乡市| 钟祥市| 赤壁市| 谢通门县| 响水县| 郎溪县| 长治县| 临夏县| 朝阳区| 祥云县| 偃师市| 隆化县| 民乐县| 霍城县| 扶沟县| 普陀区| 保山市| 鄂尔多斯市| 林西县| 龙山县| 舒兰市| 绵竹市| 佛学| 怀柔区| 乌拉特中旗| 巴彦淖尔市| 竹溪县| 黑河市| 囊谦县|