999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大型網站應用架構對比研究

2018-01-05 10:39:09李緒成劉鑫
軟件工程 2017年11期
關鍵詞:大數據

李緒成+劉鑫

摘 要:隨著使用互聯網的人越來越多,網站本身業務的擴展和用戶的增多,網站面臨著高并發訪問、大數據的壓力,這時需要對網站進行優化和改進。并發訪問量和數據量的瓶頸也成為評價一個大型網站性能的標準。然而怎樣改進和優化網站成為一個問題。本文通過研究現今具有代表性的大型網站應用架構,得出大型網站的通用優化方案,以及一套可供參考的大型網站基本架構,為網站設計者提供大型網站優化通用方案、網站改進思路和改進方法。

關鍵詞:網站架構;網站優化;緩存;大數據;搜索

中圖分類號:TP311 文獻標識碼: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)

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

通過對上述網站進行對比研究得出大型網站典型優化方案,以及一套可供參考的大型網站基本架構,為網站設計者提供網站改進思路和改進方法,以及網站優化方案。

2 網站基本架構(Basic architecture of website)

大型網站架構分為網站前端、應用端和數據庫端。每一個部分都有自己的使命,它們協同合作形成一個完整的網站[1,2]。大型網站的基本架構如圖1所示。

下面從分別從網站前端、應用服務器和數據庫三個方面描述改進方法。

3 網站前端(Front end)

網站前端的作用是加快用戶訪問速度,過濾惡意請求,實現負載均衡。

3.1 CDN服務器

CDN是通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,能夠實時地根據網絡流量和各節點的連接、負載狀況,以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上,能夠加快響應效率,解決網絡擁堵問題。

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

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

一些前段框架能夠為CDN提供便利,例如Angular JS技術[3]。

3.2 反向代理服務器

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

3.3 負載均衡調度服務器

部署負載均衡調度服務器,專門負責負載均衡,可以將請求分發到應用服務器集群下的任何一個服務器上。隨著訪問人數的增加,增加服務器就可以,突破了負載壓力瓶頸[6]。

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

4 應用端(Application end)

應用端進行業務處理,業務與業務之間需要通過消息隊列實現數據同步,而對于一些熱點數據和常用到的數據,需要緩存到分布式緩存服務器上。

4.1 應用服務器

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

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

大型網站的業務拆分是很細的,也意味著應用服務器會很多,而所有的應用都會連接數據庫,這會導致數據庫連接資源不足,從而拒絕服務,所以應該把它們一些共用的業務提取出來,獨立部署,由這些可復用的業務連接數據庫,提供共用業務服務。而應用系統只需管理用戶界面,通過分布式服務調用共用業務服務完成具體業務操作。

4.2 消息隊列服務器

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

4.3 分布式緩存服務器

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

Memcached是一個高性能的分布式內存對象緩存系統,它可以有效減輕動態Web應用數據庫的壓力。它在內存中緩存對象和數據,當請求這些數據時,直接返回,有效地減少了讀取數據庫的次數,從而提高動態數據庫驅動網站的速度。它的客戶端可以用任何語言來編寫,并且通過Memcached協議與守護進程通信。淘寶的TAIR就是基于Memcached開發的key/value數據庫。

5 數據庫端(Database end)

數據庫端主要是完成數據和文件的存儲和提取。大型網站的數據和文件數量是巨大的。存儲需要分布式存儲,提取需要搜索引擎協助完成。

5.1 分布式文件服務器

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

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

5.2 分布式數據庫服務器

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

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

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

5.3 搜索引擎服務器

搜索引擎的作用是在數據庫查詢數據時提供一種有效的查詢機制,確保數據能準確地查找。

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

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

6 結論(Conclusion)

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

該優化方案能夠為網站設計者提供參考。該方案的一些思想在已經在某些系統中使用[7,8]。

參考文獻(References)

[1] 周強,謝靖,趙華茗.大型網站的架構研究及解決方案[J].計算機科學,2017,44(S1):587-590.

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

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

[4] 孫曉林,張新剛.基于Nginx的網站安全優化方案[J].網絡安全技術與應用,2017,(11):43;45.

[5] 張康.基于Nginx的在線教育平臺架構優化研究[D].北京工業大學,2016.

[6] 馬原.基于RPC的高并發網絡通信中負載均衡的研究[D].浙江理工大學,2017.

[7] 付麗梅,鄧繼禹,賈躍.基于騰訊微校平臺的易學習APP設計與實現[J].考試周刊,2017(07):112.

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

作者簡介:

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

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

猜你喜歡
大數據
基于在線教育的大數據研究
中國市場(2016年36期)2016-10-19 04:41:16
“互聯網+”農產品物流業的大數據策略研究
中國市場(2016年36期)2016-10-19 03:31:48
基于大數據的小微電商授信評估研究
中國市場(2016年35期)2016-10-19 01:30:59
大數據時代新聞的新變化探究
商(2016年27期)2016-10-17 06:26:00
淺談大數據在出版業的應用
今傳媒(2016年9期)2016-10-15 23:35:12
“互聯網+”對傳統圖書出版的影響和推動作用
今傳媒(2016年9期)2016-10-15 22:09:11
大數據環境下基于移動客戶端的傳統媒體轉型思路
新聞世界(2016年10期)2016-10-11 20:13:53
基于大數據背景下的智慧城市建設研究
科技視界(2016年20期)2016-09-29 10:53:22
數據+輿情:南方報業創新轉型提高服務能力的探索
中國記者(2016年6期)2016-08-26 12:36:20
主站蜘蛛池模板: 精品一区二区三区自慰喷水| 国产系列在线| 国产成人精品亚洲日本对白优播| 自拍偷拍欧美日韩| 人妻丰满熟妇AV无码区| 亚洲美女一区| 日本精品影院| 亚洲无码高清一区二区| 久久99国产综合精品1| 99999久久久久久亚洲| 国产一区二区精品高清在线观看| 色网站免费在线观看| 亚洲娇小与黑人巨大交| 精品国产三级在线观看| 99久久国产自偷自偷免费一区| 免费人欧美成又黄又爽的视频| 一区二区三区四区在线| 久久综合久久鬼| 国产在线自乱拍播放| 东京热av无码电影一区二区| 大香伊人久久| 日本高清在线看免费观看| 黄色国产在线| 尤物特级无码毛片免费| 亚洲精品成人片在线观看| 亚洲欧美在线综合图区| 91口爆吞精国产对白第三集 | 熟妇丰满人妻| 国产乱人伦精品一区二区| 午夜日韩久久影院| 国产真实乱子伦视频播放| 亚洲欧美日韩视频一区| 国产自在线播放| 欧美日韩一区二区三区在线视频| 亚洲天堂视频网站| 91精品视频在线播放| 国产成人超碰无码| 99久久精品国产麻豆婷婷| 在线观看91香蕉国产免费| 欧美日韩亚洲综合在线观看 | 国产你懂得| 国产成人禁片在线观看| 色九九视频| 重口调教一区二区视频| 精品国产成人av免费| 色婷婷丁香| 欧美伦理一区| 人妻21p大胆| 看国产毛片| 成人字幕网视频在线观看| 在线观看亚洲天堂| 亚洲精品少妇熟女| 久久国产毛片| 久久精品国产精品一区二区| 国产亚洲欧美在线人成aaaa| 久久精品电影| 国产在线精品99一区不卡| 国产在线观看99| 亚洲bt欧美bt精品| 精品天海翼一区二区| 国产91熟女高潮一区二区| 丁香婷婷激情综合激情| 美女被操91视频| 中国一级毛片免费观看| 精品无码一区二区在线观看| 中文字幕 欧美日韩| 国产在线观看91精品亚瑟| 久久视精品| 狼友视频一区二区三区| 亚洲精品无码日韩国产不卡| 亚洲欧美精品在线| 成人国产免费| 99re经典视频在线| 伊人中文网| 亚洲综合精品第一页| 欧美午夜在线播放| www.91在线播放| 99视频在线免费看| 欧美另类图片视频无弹跳第一页| 无码中文字幕加勒比高清| 国产91九色在线播放| 亚洲第一在线播放|