溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料

發(fā)布時間:2020-08-04 19:03:31 來源:ITPUB博客 閱讀:187 作者:Java知音 欄目:軟件技術(shù)

阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料


淘寶技術(shù)架構(gòu)變遷

自2003年創(chuàng)立以來的,淘寶業(yè)務(wù)發(fā)展非常迅速,幾乎是每年以100%的速度在成長。創(chuàng)立之初,為了快速上線,搶占市場,選擇了當時流行的LAMP架構(gòu),用PHP作為網(wǎng)站開發(fā)語言, Linux作為操作系統(tǒng),Apache作為Web服務(wù)器,MySQL為數(shù)據(jù)庫,用了三個月不到的時間淘寶就上線了。當時整個網(wǎng)站應(yīng)用服務(wù)器大概10臺左右,MySQL數(shù)據(jù)庫采用了讀寫分離、一主兩備的部署方式。

2004年在淘寶業(yè)務(wù)發(fā)展的推動下,我們參考電信運營商、銀行等的一些企業(yè)解決方案,將LAMP架構(gòu)改造為Oracle+IBM小型機的數(shù)據(jù)庫架構(gòu)和EMC存儲方式(圖2)。雖然方案成本昂貴,但性能非常好。同時,隨著網(wǎng)站流量的增加,系統(tǒng)顯得有些不堪重負。當時最擔(dān)心的問題是網(wǎng)站流量如果持續(xù)增加,交易量持續(xù)增加,網(wǎng)站的系統(tǒng)架構(gòu)怎么設(shè)計?如何選擇數(shù)據(jù)庫?如何選擇緩存?如何構(gòu)建業(yè)務(wù)系統(tǒng)?……后來參考eBay的互聯(lián)網(wǎng)設(shè)計架構(gòu),設(shè)計了一個Java的技術(shù)方案,并使用了非常多的Java開源產(chǎn)品。例如,選擇當時比較流行的JBoss,作為應(yīng)用服務(wù)器;選擇一個開源的IOC容器Spring,來管理業(yè)務(wù)類;封裝了一個數(shù)據(jù)庫訪問工具IBatis,作為數(shù)據(jù)庫和Java類的Object-Reletionship映射工具。另外,對于商品搜索功能,采用自己開發(fā)的ISearch搜索引擎來取代在Oracle數(shù)據(jù)庫中進行搜索,降低數(shù)據(jù)庫服務(wù)器的壓力。做法比較簡單,每天晚上全量將Oracle小型機的數(shù)據(jù)dump出來,Build成ISearch的索引,當時商品量也不大,一臺普通配置的服務(wù)器,基本上可以將所有的索引都放進去,沒做切分,直接做了一個對等集群。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



從2006年開始,淘寶為了改善用戶體驗,開始建立自己的CDN站點,由于淘寶的主要流量來源于各種商品圖片、商品描述等靜態(tài)數(shù)據(jù),自建CDN可以使這些資源離用戶更近,提升用戶訪問速度,改善用戶瀏覽網(wǎng)站的體驗。

2007年,淘寶全年的交易額超過400億元,平均近1億多一天,每天有100多萬筆交易被創(chuàng)建。當時面對的幾個主要問題是:一些系統(tǒng)的流量非常大,如商品詳情等,如果直接訪問數(shù)據(jù)庫,會導(dǎo)致數(shù)據(jù)庫壓力非常大;如用戶信息,訪問一個頁面,都需要查詢買家信息、賣家信息、顯示出買家的信用、賣家的服務(wù)星級等。此時,淘寶采用分布式緩存TDBM(Tair的前身)將這些熱點靜態(tài)數(shù)據(jù)緩存在內(nèi)存中,提高訪問性能。另外,將自己研發(fā)的分布式文件系統(tǒng)TFS部署在多臺x86服務(wù)器上,取代商業(yè)的NAS存儲設(shè)備來存儲淘寶的各種文件信息,如商品圖片、商品描述信息、交易快照信息,來達到降低成本和提高整體系統(tǒng)的容量和性能的目的,同時可以實現(xiàn)更靈活的擴展性。第一期上線大概200臺TFS服務(wù)器。另外,將ISearch搜索引擎改為分布式架構(gòu),支持水平擴展,部署了48個節(jié)點。圖3展示了這一架構(gòu)思路。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



2008年初,為了解決Oracle數(shù)據(jù)庫集中式架構(gòu)的瓶頸問題(連接數(shù)限制、I/O性能),將系統(tǒng)進行了拆分,按照用戶域、商品域、交易域、店鋪域等業(yè)務(wù)領(lǐng)域進行拆分,建立了20多個業(yè)務(wù)中心,如商品中心、用戶中心、交易中心等。所有有用戶訪問需求的系統(tǒng),必須使用業(yè)務(wù)中心提供的遠程接口來訪問,不能夠直接訪問底層的MySQL數(shù)據(jù)庫,通過HSF這種遠程通信方式來調(diào)用業(yè)務(wù)中心的服務(wù)接口,業(yè)務(wù)系統(tǒng)之間則通過Notify消息中間件異步方式完成調(diào)用。圖4是淘寶的分布式架構(gòu)圖。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



從2010年開始,淘寶網(wǎng)重點著眼于統(tǒng)一架構(gòu)體系,從整體系統(tǒng)層面考慮開發(fā)效率、運維標準化、高性能、高可擴展性、高可用、低成本方面的要求,底層的基礎(chǔ)架構(gòu)統(tǒng)一采用了阿里云計算平臺(圖5),使用了SLB、ECS、RDS、OSS、ONS、CDN等阿里云計算服務(wù),并通過阿里云服務(wù)提供的高可用特性,實現(xiàn)雙機房容災(zāi)和異地機房單元化部署,為淘寶業(yè)務(wù)提供穩(wěn)定、高效和易于維護的基礎(chǔ)架構(gòu)支撐。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



在從IOE架構(gòu)最終向云計算平臺技術(shù)架構(gòu)轉(zhuǎn)移的過程中,主要面臨以下幾個技術(shù)挑戰(zhàn)。

■ 可用性:脫離小型機和高端存儲的高冗余機制,采用基于PC服務(wù)器的分布式架構(gòu)的云計算平臺能否做到高可用。

■ 一致性:Oracle基于RAC和共享存儲實現(xiàn)的物理級別一致性,基于RDS for MySQL能否達到同樣的效果。

■ 高性能:高端存儲的I/O能力很強,基于PC服務(wù)器的RDS能否提供同樣甚至更高的I/O處理能力,MySQL和Oracle對SQL的處理性能是否相同。

■ 擴展性:業(yè)務(wù)邏輯如何拆分,如何服務(wù)化,數(shù)據(jù)分多少庫分多少表,什么維度分,后期二次拆分如何更方便等。

基于阿里云計算平臺,通過采用合適的技術(shù)策略和最佳實踐,包括:應(yīng)用無狀態(tài),有效使用緩存(瀏覽器緩存、反向代理緩存、頁面緩存、局部頁面緩存、對象緩存和讀寫分離),服務(wù)原子化,數(shù)據(jù)庫分割,異步解決性能問題,最小化事物單元,適當放棄一致性。以及自動化監(jiān)控/運維手段包括監(jiān)控預(yù)警、配置統(tǒng)一管理,基礎(chǔ)服務(wù)器監(jiān)控,URL監(jiān)控,網(wǎng)絡(luò)監(jiān)控,模塊間調(diào)用監(jiān)控,智能分析監(jiān)控,綜合故障管理平臺,容量管理??梢院芎玫亟鉀Q以上問題,從而達到整體系統(tǒng)的高可擴展性、更低的成本、更高的性能和可用性的實現(xiàn)效果。

遷云架構(gòu)最佳實踐

淘寶的技術(shù)架構(gòu)是一個伴隨業(yè)務(wù)逐漸發(fā)展而逐步演進的過程,中間沉淀了很多寶貴的架構(gòu)最佳實踐。對于大部分企業(yè)級客戶來說,可以結(jié)合自己的業(yè)務(wù)場景選擇合適的技術(shù)架構(gòu)來實現(xiàn)整體IT系統(tǒng)的互聯(lián)網(wǎng)化設(shè)計。不同應(yīng)用場景下的遷云架構(gòu),包括文件存儲、應(yīng)用服務(wù)、OLTP數(shù)據(jù)庫、OLAP數(shù)據(jù)庫。

對于文件存儲方式,可以直接用OSS取代EMC存儲實現(xiàn)海量數(shù)據(jù)文件的存儲,OSS存儲最大容量可以達40PB,同時由于OSS是分布式存儲方式,可以通過多個節(jié)點的并行讀寫顯著提高數(shù)據(jù)訪問性能。對于大文件,還可以通過Multipart Upload的方式,將大文件分塊并行傳輸與存儲,實現(xiàn)高性能。

對于應(yīng)用服務(wù),可通過SLB+多臺ECS實例組合取代IBM小型機(圖6),也可以根據(jù)不同應(yīng)用類型,直接基于ACE、ONS、OpenSearch等阿里云中間件云服務(wù)部署。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



OLTP應(yīng)用的遷移相對復(fù)雜。目前阿里云的RDS實例最高是48GB內(nèi)存,14000IOPS,1TB的存儲容量(SSD存儲),支持MySQL和SQL Server。這個配置作為單數(shù)據(jù)庫服務(wù)器來使用可以滿足很多場景的數(shù)據(jù)庫應(yīng)用需求,可直接取代大部分場景下的IBM小型機+Oracle數(shù)據(jù)庫+EMC存儲。

對于性能要求更高的應(yīng)用,可考慮引入開放緩存服務(wù)OCS,將部分查詢數(shù)據(jù)加載至分布式緩存中,減少RDS的數(shù)據(jù)查詢次數(shù),提升系統(tǒng)的數(shù)據(jù)查詢并發(fā)效率和降低響應(yīng)時間,如圖7所示。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



對于讀的請求遠大于寫請求的場景,可以考慮用多個RDS數(shù)據(jù)庫,采用分布式方式實現(xiàn)讀寫分離,寫交易主要發(fā)生在主庫,讀請求訪問備庫,可以根據(jù)需求對讀庫進行擴展,以實現(xiàn)整體請求性能的提升。

阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



對于數(shù)據(jù)規(guī)模較大的數(shù)據(jù)庫表,可以通過水平切分的方式,將數(shù)據(jù)分布在多個RDS實例上,通過并行的分布式數(shù)據(jù)庫操作來實現(xiàn)性能和容量的提升。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



總的來說,通過遷移到RDS、引入數(shù)據(jù)緩存、分庫分表、讀寫分離等多種方式可以用Scale-Out方式取代原有的IOE架構(gòu),并且獲得更好的性能和擴展性。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



對于OLAP應(yīng)用,可采用ODPS+OTS+RDS/ADS的解決方案取代小型機+Oracle DB+OLAP+RAC+EMC存儲解決方案,如圖11所示??傮w來看,遷云的通用架構(gòu)方案如圖12所示,針對具體業(yè)務(wù)系統(tǒng)的遷云方案還需要根據(jù)實際情況進行分析和合理選擇。


阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料



阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料


以上就是淘寶的技術(shù)架構(gòu)變遷詳解,以下是 最新阿里P8架構(gòu)師談架構(gòu)設(shè)計系列詳解

阿里P8架構(gòu)師談:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!附架構(gòu)資料


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI