淘寶網系統架構分析以及數據庫架構簡介

    一個成熟的大型網站(如淘寶、京東等)的系統架構須要考慮諸多複雜的因素,由於像淘寶這種大型網站數據量比通常的網站要大的多,因此在設計架構方面也要複雜的多,既要考慮成本因素也要考慮訪問速度安全性等。這裏我簡單的對淘寶的網站系統架構進行一個簡單的分析。前端

   

 

    淘寶做爲一個大型購物網站,其數據量是很大的,因此不像通常網站,淘寶須要用各類方法來保證服務器的正常運行以及用戶購買時的良好體驗。主要由如下方式:1.應用、數據、文件分離 2.利用緩存改善網站性能 3.使用CDN和反向代理提升訪問速度 4.使用分佈式文件系統數據庫

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

    首先隨着做爲大型購物網站,一臺服務器已經確定知足性能需求,所以將應用程序、數據庫、文件各自部署在獨立的服務器上,而且根據服務器的用途配置不一樣的硬件,達到最佳的性能效果。在硬件優化性能的同時,同時也經過軟件進行性能優化,在大部分的網站系統中,都會利用緩存技術改善系統的性能,使用緩存主要源於熱點數據的存在,大部分網站訪問都遵循28原則(即80%的訪問請求,最終落在20%的數據上),因此咱們能夠對熱點數據進行緩存,減小這些數據的訪問路徑,提升用戶體驗。安全

      因爲功能複雜,用戶訪問路徑長,淘寶選擇對這些數據進行緩存以提升用戶的訪問速度。緩存實現常見的方式是本地緩存、分佈式緩存。本地緩存,顧名思義是將數據緩存在應用服務器本地,能夠存在內存中,也能夠存在文件,本地緩存的特色是速度快,但由於本地空間有限因此緩存數據量也有限。分佈式緩存的特色是,能夠緩存海量的數據,而且擴展很是容易,在門戶類網站中經常被使用,速度按理沒有本地緩存快。同時提供均衡負載服務器來分擔主要服務器的壓力。性能優化

    使用CDN和反向代理提升網站性能。因爲淘寶的服務器不能分佈在國內的每一個地方,因此不一樣地區的用戶訪問須要經過互聯路由器通過不一樣長度的路徑來訪問服務器,返回路徑也同樣,因此數據傳輸時間比較長。對於這種狀況,經常使用CDN解決,CDN將數據內容緩存到運營商的機房,用戶訪問時先從最近的運營商獲取數據,這樣大大減小了網絡訪問的路徑。服務器

   在這裏簡單介紹一下CDN的原理。CDN的全稱Content Delivery Network,即內容分發網絡。CDN是一個經策略性部署的總體系統,從技術上全面解決因爲網絡帶寬小、用戶訪問量大、網點分佈不均而產生的用戶訪問網站響應速度慢的根本緣由。CDN目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡「邊緣」,使用戶能夠就近取得所需的內容,解決 Internet 網絡擁塞情況,提升用戶訪問網站的響應速度。CDN是一種組合技術,其中包括源站、緩存服務器智能DNS幾個重要部分。restful

源站

 

源站指發佈內容的原始站點。添加、刪除和更改網站的文件,都是在源站上進行的;另外緩存服務器所抓取的對象也所有來自於源站。

 

 

緩存服務器

 

緩存服務器是直接提供給用戶訪問的站點資源,有一臺或數臺服務器組成;當用戶發起訪問時,他的訪問請求被智能DNS定位到離他較近的緩存服務器。若是用戶所請求的內容恰好在緩存裏面,則直接把內容返還給用戶;若是訪問所需的內容沒有被緩存,則緩存服務器向鄰近的緩存服務器或直接向源站抓取內容,而後再返還給用戶。

 

 

智能DNS

 

智能DNS是整個CDN技術的核心,它主要根據用戶的來源,將其訪問請求指向離用戶比較近的緩存服務器,如把廣州電信的用戶請求指向到廣州電信IDC機房中的緩存服務器。經過智能DNS解析,讓用戶訪問同服務商下的服務器,消除國內南北網絡互相訪問慢的問題,達到加速做用。智能DNS的出現,顛覆了傳統的一個域名對應一個鏡像的作法,讓用戶更加便捷的去訪問網站。

 

 

 

 

 

    隨着業務進一步擴展,這時咱們須要將應用程序進行業務拆分。每一個業務應用負責相對獨立的業務運做(因此須要開闢多個服務對不一樣業務進行劃分)。業務之間經過消息進行通訊或者同享數據庫來實現。因此在負載服務器上連接一個B業務服務器在對其業務進行分佈式劃分(如用戶,訂單,支付等),而後B級業務服務器經過消息隊列服務器來與A業務服務區進行實時通訊已經共享數據。 諸如此類的A,B服務器有許多,相互之間均可以進行共享數據。網絡

 


下面簡單介紹一下淘寶的數據庫架構。對於淘寶來講,最重要的就是數據庫的架構。
架構

 

    按照數據的流向來劃分,咱們把淘寶數據產品的技術架構分爲五層(如上圖所示),分別是數據源、計算層、存儲層、查詢層和產品層。位於架構頂端的是咱們的數據來源層,這裏有淘寶主站的用戶、店鋪、商品和交易等數據庫,還有用戶的瀏覽、搜索等行爲日誌等。在數據源層實時產生的數據,經過淘寶自主研發的數據傳輸組件準實時地傳輸到一個Hadoop集羣上,這個集羣稱之爲「雲梯」,是計算層的主要組成部分。不得不提的是,一些對實效性要求很高的數據,例如針對搜索詞的統計數據,咱們但願能儘快推送到數據產品前端。這種需求再採用「雲梯」來計算效率將是比較低的。爲此咱們作了流式數據的實時計算平臺,稱之爲「銀河」。「銀河」也是一個分佈式系統,它接收來自前端的實時消息,在內存中作實時計算,並把計算結果在儘量短的時間內刷新到NoSQL存儲設備中,供前端產品調用。分佈式

  咱們針對前端產品設計了專門的存儲層。在這一層,咱們有基於MySQL的分佈式關係型數據庫集羣MyFOX和基於HBase的NoSQL存儲集羣Prom。存儲層異構模塊的增多,對前端產品的使用帶來了挑戰。爲此,咱們設計了通用的數據中間層glider來屏蔽這個影響。glider以HTTP協議對外提供restful方式的接口。數據產品能夠經過一個惟一的URL獲取到它想要的數據。

 

 

      整體來講淘寶網站的架構十分複雜,由於淘寶這種大型購物網站的數據量比通常網站要大的多,並且涉及到鉅額的財產交易,因此網絡的安全性,穩定性天然是必需要保證的。並且儘可能要下降運行成本,提升用戶體驗。如此多的要求對於一個團隊來講確實十分困難,可是淘寶的技術團隊經過各類技術手段很好的解決了這些問題。整體來講不管是淘寶的網站架構仍是它的數據庫架構都是同行業的標杆。

相關文章
相關標籤/搜索