優(yōu)化網站性能必備的6種架構方案

嘮叨幾句

一個成熟的大型網站(如淘寶描扯、天貓、騰訊等)的系統架構并不是一開始設計時就具備完整的高性能趟薄、高可用绽诚、高伸縮等特性的,它是隨著用戶量的增加杭煎,業(yè)務功能的擴展逐漸演變完善的恩够,在這個過程中,開發(fā)模式羡铲、技術架構蜂桶、設計思想也發(fā)生了很大的變化,就連技術人員也從幾個人發(fā)展到一個部門甚至一條產品線也切。所以成熟的系統架構是隨著業(yè)務的擴展而逐步完善的扑媚,并不是一蹴而就;不同業(yè)務特征的系統雷恃,會有各自的側重點疆股,例如:淘寶,要解決海量的商品信息的搜索倒槐、下單旬痹、支付,例如騰訊导犹,要解決數億用戶的實時消息傳輸唱凯,百度它要處理海量的搜索請求,他們都有各自的業(yè)務特性谎痢,系統架構也有所不同磕昼。盡管如此我們也可以從這些不同的網站背景下,找出其中共用優(yōu)化的技術节猿,這些優(yōu)化技術和手段廣泛運用在大型網站系統的架構中票从,下面讓我們來認識這些優(yōu)化性能的技術和手段。

改善網站性能的幾大手段

最開始的網站架構

最初業(yè)務量不大滨嘱,訪問量小峰鄙,此時的架構,應用程序太雨、數據庫吟榴、文件都部署在一臺服務器上,有些甚至僅僅是租用主機空間囊扳。

1. 應用吩翻、數據兜看、文件分離

將應用程序、數據庫狭瞎、文件各自部署在獨立的服務器上细移,并且根據服務器的用途配置不同的硬件,達到最佳的性能效果熊锭。

2. 利用緩存改善網站性能

大部分網站訪問都遵循28原則,即80%的訪問請求弧轧,最終落在20%的數據上,所以我們可以對熱點數據進行緩存,減少熱點數據的訪問路徑碗殷,提高用戶體驗精绎。緩存實現常見的方式是本地緩存、分布式緩存亿扁。當然還有CDN捺典、反向代理鸟廓。

2.1 本地緩存

本地緩存从祝,顧名思義是將數據緩存在應用服務器本地,可以存在內存中引谜,也可以存在文件牍陌,組件。本地緩存的特點是速度快员咽,但因為本地空間有限所以緩存數據量也有限毒涧。OSCache就是常用的本地緩存。

2.2 分布式緩存

分布式緩存的特點是贝室,可以緩存海量的數據契讲,并且擴展非常容易,在門戶類網站中常常被使用滑频,速度按理沒有本地緩存快捡偏,常用的分布式緩存是Memcached、Redis峡迷。

2.3 反向代理

部署在網站的機房银伟,當用戶請求達到時首先訪問反向代理服務器,反向代理服務器將緩存的數據返回給用戶绘搞,如果沒有緩存數據才會繼續(xù)訪問應用服務器獲取彤避,這樣做減少了獲取數據的成本。反向代理有Squid夯辖,Nginx琉预。

2.4 CDN

假設我們的服務器都部署在杭州的機房,對于浙江的用戶來說訪問是較快的蒿褂,而對于北京的用戶訪問是較慢的圆米,這是由于浙江和北京分別屬于電信和聯通的不同發(fā)達地區(qū)尖阔,北京用戶訪問需要通過互聯路由器經過較長的路徑才能訪問到杭州的服務器,返回路徑也一樣榨咐,所以數據傳輸時間比較長介却。對于這種情況,常常使用CDN解決块茁,CDN將數據內容緩存到運營商的機房齿坷,用戶訪問時先從最近的運營商獲取數據,這樣大大減少了網絡訪問的路徑数焊。比較專業(yè)的CDN運營商有藍汛永淌、網宿。

3. 使用集群+負載均衡改善應用服務器性能

應用服務器作為網站的入口佩耳,會承擔大量的請求遂蛀,我們往往通過應用服務器集群來分擔請求數。

應用服務器前面部署負載均衡服務器調度用戶請求干厚,根據分發(fā)策略將請求分發(fā)到多個應用服務器節(jié)點李滴。

常用的負載均衡技術硬件的有F5,價格比較貴一般都在15W以上蛮瞄。

軟件的有LVS所坯、Nginx、HAProxy挂捅。LVS是四層(傳輸層)負載均衡芹助,根據目標地址和端口選擇內部服務器,Nginx和HAProxy是七層(應用層)負載均衡闲先,可以根據報文內容選擇內部服務器状土,因此LVS分發(fā)路徑優(yōu)于Nginx 和HAProxy,性能要高些伺糠,而Nginx和HAProxy則更具配置性蒙谓,如可以用來做動靜分離(根據請求報文特征,選擇靜態(tài)資源服務器還是應用服務器)退盯。

4. 數據庫優(yōu)化

4.1 讀寫分離和分庫分表

隨著用戶量的增加彼乌,數據庫成為最大的瓶頸,改善數據庫性能常用的手段是進行讀寫分離以及分庫分表渊迁,讀寫分離顧名思義就是將數據庫分為讀庫和寫庫慰照,通過主備功能實現數據同步。分庫分表則分為水平切分和垂直切分琉朽,水平切分則是對一個數據庫特大的表進行拆分毒租,例如用戶表。垂直切分則是根據業(yè)務的不同來切分箱叁,如用戶業(yè)務墅垮、商品業(yè)務相關的表放在不同的數據庫中惕医。

4.2 使用NoSql數據庫和搜索引擎

對于海量數據的查詢和分析,我們使用nosql數據庫加上搜索引擎可以達到更好的性能算色。并不是所有的數據都要放在關系型數據中抬伺。常用的NOSQL有mongodb、hbase灾梦、redis峡钓,搜索引擎有l(wèi)ucene、solr若河、elasticsearch能岩。

5. 將應用服務器進行業(yè)務拆分

隨著業(yè)務的擴展,應用程序變得非常臃腫萧福,這時我們需要將應用程序進行業(yè)務拆分拉鹃,如百度分為新聞、網頁鲫忍、圖片等業(yè)務膏燕。每個業(yè)務應用負責相對獨立的業(yè)務運作。業(yè)務之間通過消息進行通信或者共享數據庫來實現饲窿。

6.使用分布式系統

6.1 分布式文件系統

用戶一天天增加煌寇,業(yè)務量越來越大焕蹄,產生的文件越來越多逾雄,單臺的文件服務器已經不能滿足需求,這時就需要分布式文件系統的支撐腻脏。常用的分布式文件系統有GFS鸦泳、HDFS、TFS永品。

GFS(Google File System)可以給大量的用戶提供總體性能較高的服務

? 適合部署在廉價的普通硬件上

? 提供容錯功能

HDFS(Hadoop Distributed File System)能提供高吞吐量的數據訪問做鹰,非常適合大規(guī)模數據集上的應用

? 運行在通用硬件(commodityhardware)

? 高度容錯

? 適合部署在廉價的機器上

TFS(Taobao Flies System)主要針對海量的非結構化數據,提供高可靠和高并發(fā)的存儲訪問

? 高可擴展鼎姐、高可用钾麸、高性能

? 面向互聯網服務

? 適合海量小文件存儲

6.2 分布式服務

各個業(yè)務應用都會使用到一些基本的業(yè)務服務,例如用戶服務炕桨、訂單服務饭尝、支付服務、安全服務献宫,這些服務是支撐各業(yè)務應用的基本要素钥平。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。阿里的Dubbo是一個不錯的選擇姊途。

小結

完整的系統架構圖如下:

大型網站的架構是根據業(yè)務需求不斷完善的涉瘾,根據不同的業(yè)務特征會做特定的設計和考慮知态,本文只是講述一個常規(guī)大型網站會涉及的一些優(yōu)化技術和手段。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末立叛,一起剝皮案震驚了整個濱河市负敏,隨后出現的幾起案子,更是在濱河造成了極大的恐慌秘蛇,老刑警劉巖原在,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異彤叉,居然都是意外死亡庶柿,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門秽浇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮庐,“玉大人,你說我怎么就攤上這事柬焕∩蟛校” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵斑举,是天一觀的道長搅轿。 經常有香客問我,道長富玷,這世上最難降的妖魔是什么璧坟? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮赎懦,結果婚禮上雀鹃,老公的妹妹穿的比我還像新娘。我一直安慰自己励两,他們只是感情好黎茎,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著当悔,像睡著了一般傅瞻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盲憎,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天嗅骄,我揣著相機與錄音,去河邊找鬼焙畔。 笑死掸读,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播儿惫,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼澡罚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肾请?” 一聲冷哼從身側響起留搔,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铛铁,沒想到半個月后隔显,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡饵逐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年括眠,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倍权。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡掷豺,死狀恐怖,靈堂內的尸體忽然破棺而出薄声,到底是詐尸還是另有隱情当船,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布默辨,位于F島的核電站德频,受9級特大地震影響,放射性物質發(fā)生泄漏缩幸。R本人自食惡果不足惜壹置,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桌粉。 院中可真熱鬧蒸绩,春花似錦、人聲如沸铃肯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽押逼。三九已至,卻和暖如春惦界,著一層夾襖步出監(jiān)牢的瞬間挑格,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工沾歪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留漂彤,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像挫望,于是被迫代替她去往敵國和親立润。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容