<ul id="g60s4"><pre id="g60s4"></pre></ul>
<strong id="g60s4"><nav id="g60s4"></nav></strong>
<ul id="g60s4"></ul>
  • <tr id="g60s4"></tr>
  • 
    
  • 或者

    優化網站性能必備的6種架構方案,你知道嗎?

    作者:創客工作室 瀏覽:138 發布時間:2017-10-11
    分享 評論 0

    一個成熟的大型網站(如淘寶、天貓、騰訊等)的系統架構并不是一開始設計時就具備完整的高性能、高可用、高伸縮等特性的,它是隨著用戶量的增加,業務功能的擴展逐漸演變完善的,在這個過程中,開發模式、技術架構、設計思想也發生了很大的變化,就連技術人員也從幾個人發展到一個部門甚至一條產品線。所以成熟的系統架構是隨著業務的擴展而逐步完善的,并不是一蹴而就;不同業務特征的系統,會有各自的側重點,例如:淘寶,要解決海量的商品信息的搜索、下單、支付,例如騰訊,要解決數億用戶的實時消息傳輸,百度它要處理海量的搜索請求,他們都有各自的業務特性,系統架構也有所不同。盡管如此我們也可以從這些不同的網站背景下,找出其中共用優化的技術,這些優化技術和手段廣泛運用在大型網站系統的架構中,下面讓我們來認識這些優化性能的技術和手段。


    改善網站性能的幾大手段



    最開始的網站架構


    最初業務量不大,訪問量小,此時的架構,應用程序、數據庫、文件都部署在一臺服務器上,有些甚至僅僅是租用主機空間。



    1. 應用、數據、文件分離


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



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


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


    2.1 本地緩存

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



    2.2 分布式緩存

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



    2.3 反向代理

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



    2.4 CDN

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



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


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

    應用服務器前面部署負載均衡服務器調度用戶請求,根據分發策略將請求分發到多個應用服務器節點。



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

    軟件的有LVS、Nginx、HAProxy。LVS是四層(傳輸層)負載均衡,根據目標地址和端口選擇內部服務器,Nginx和HAProxy是七層(應用層)負載均衡,可以根據報文內容選擇內部服務器,因此LVS分發路徑優于Nginx 和HAProxy,性能要高些,而Nginx和HAProxy則更具配置性,如可以用來做動靜分離(根據請求報文特征,選擇靜態資源服務器還是應用服務器)。



    4. 數據庫優化


    4.1 讀寫分離和分庫分表

    隨著用戶量的增加,數據庫成為最大的瓶頸,改善數據庫性能常用的手段是進行讀寫分離以及分庫分表,讀寫分離顧名思義就是將數據庫分為讀庫和寫庫,通過主備功能實現數據同步。分庫分表則分為水平切分和垂直切分,水平切分則是對一個數據庫特大的表進行拆分,例如用戶表。垂直切分則是根據業務的不同來切分,如用戶業務、商品業務相關的表放在不同的數據庫中。



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


    對于海量數據的查詢和分析,我們使用nosql數據庫加上搜索引擎可以達到更好的性能。并不是所有的數據都要放在關系型數據中。常用的NOSQL有mongodb、hbase、redis,搜索引擎有lucene、solr、elasticsearch。



    5. 將應用服務器進行業務拆分


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



    6.使用分布式系統


    6.1 分布式文件系統

    用戶一天天增加,業務量越來越大,產生的文件越來越多,單臺的文件服務器已經不能滿足需求,這時就需要分布式文件系統的支撐。常用的分布式文件系統有GFS、HDFS、TFS。



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


    ? 適合部署在廉價的普通硬件上
    ? 提供容錯功能


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


    ? 運行在通用硬件(commodityhardware)
    ? 高度容錯
    ? 適合部署在廉價的機器上


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


    ? 高可擴展、高可用、高性能
    ? 面向互聯網服務
    ? 適合海量小文件存儲


    6.2 分布式服務

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



    小結


    完整的系統架構圖如下:



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


    亚洲国产福利精品一区二区| 国产啪精品视频网站免费尤物| 精品一区二区ww| 91全国探花精品正在播放| 久久精品国产9久久综合| 日韩精品在线观看| 精品日韩在线视频一区二区三区| 日韩在线播放中文字幕| 人妻在线日韩免费视频| 国产在线午夜卡精品影院| 在线观看国产精品麻豆| 成人精品视频一区二区三区尤物| 中文精品一区二区三区四区| 国产精品入口麻豆免费观看| 亚洲91精品麻豆国产系列在线| 久久香综合精品久久伊人| 无码欧精品亚洲日韩一区| 久久久亚洲精品视频| 四虎国产精品永久在线观看| 久久久久久亚洲精品| 久久亚洲伊人中字综合精品| 久久精品国产99久久99久久久| 久久91综合国产91久久精品| 亚洲精品中文字幕乱码三区| 国语精品一区二区三区| 精品视频在线免费观看| 久久精品一区二区国产| 国产精品ⅴ无码大片在线看| 国产精品区免费视频| 亚洲av永久无码精品古装片| 久久青草精品一区二区三区| 日本精品久久久中文字幕| 久久久国产精品网站| 亚洲精品国产精品国自产观看| 五月天婷婷精品免费视频| 亚洲精品456播放| 国产乱色精品成人免费视频| 中日韩产精品1卡二卡三卡 | 国产精品亚洲四区在线观看| 国产人成精品香港三级在| 亚洲国产精品免费观看|