天天看點

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

淘寶技術架構變遷

自2003年創立以來的,淘寶業務發展非常迅速,幾乎是每年以100%的速度在成長。創立之初,為了快速上線,搶占市場,選擇了當時流行的LAMP架構,用PHP作為網站開發語言, Linux作為作業系統,Apache作為Web伺服器,MySQL為資料庫,用了三個月不到的時間淘寶就上線了。當時整個網站應用伺服器大概10台左右,MySQL資料庫采用了讀寫分離、一主兩備的部署方式。

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

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

從2006年開始,淘寶為了改善使用者體驗,開始建立自己的CDN站點,由于淘寶的主要流量來源于各種商品圖檔、商品描述等靜态資料,自建CDN可以使這些資源離使用者更近,提升使用者通路速度,改善使用者浏覽網站的體驗。

2007年,淘寶全年的交易額超過400億元,平均近1億多一天,每天有100多萬筆交易被建立。當時面對的幾個主要問題是:一些系統的流量非常大,如商品詳情等,如果直接通路資料庫,會導緻資料庫壓力非常大;如使用者資訊,通路一個頁面,都需要查詢買家資訊、賣家資訊、顯示出買家的信用、賣家的服務星級等。此時,淘寶采用分布式緩存TDBM(Tair的前身)将這些熱點靜态資料緩存在記憶體中,提高通路性能。另外,将自己研發的分布式檔案系統TFS部署在多台x86伺服器上,取代商業的NAS儲存設備來存儲淘寶的各種檔案資訊,如商品圖檔、商品描述資訊、交易快照資訊,來達到降低成本和提高整體系統的容量和性能的目的,同時可以實作更靈活的擴充性。第一期上線大概200台TFS伺服器。另外,将ISearch搜尋引擎改為分布式架構,支援水準擴充,部署了48個節點。圖3展示了這一架構思路。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

2008年初,為了解決Oracle資料庫集中式架構的瓶頸問題(連接配接數限制、I/O性能),将系統進行了拆分,按照使用者域、商品域、交易域、店鋪域等業務領域進行拆分,建立了20多個業務中心,如商品中心、使用者中心、交易中心等。所有有使用者通路需求的系統,必須使用業務中心提供的遠端接口來通路,不能夠直接通路底層的MySQL資料庫,通過HSF這種遠端通信方式來調用業務中心的服務接口,業務系統之間則通過Notify消息中間件異步方式完成調用。圖4是淘寶的分布式架構圖。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

從2010年開始,淘寶網重點着眼于統一架構體系,從整體系統層面考慮開發效率、運維标準化、高性能、高可擴充性、高可用、低成本方面的要求,底層的基礎架構統一采用了阿裡雲計算平台(圖5),使用了SLB、ECS、RDS、OSS、ONS、CDN等阿裡雲計算服務,并通過阿裡雲服務提供的高可用特性,實作雙機房容災和異地機房單元化部署,為淘寶業務提供穩定、高效和易于維護的基礎架構支撐。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

在從IOE架構最終向雲計算平台技術架構轉移的過程中,主要面臨以下幾個技術挑戰。

■ 可用性:脫離小型機和高端存儲的高備援機制,采用基于PC伺服器的分布式架構的雲計算平台能否做到高可用。

■ 一緻性:Oracle基于RAC和共享存儲實作的實體級别一緻性,基于RDS for MySQL能否達到同樣的效果。

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

■ 擴充性:業務邏輯如何拆分,如何服務化,資料分多少庫分多少表,什麼次元分,後期二次拆分如何更友善等。

基于阿裡雲計算平台,通過采用合适的技術政策和最佳實踐,包括:應用無狀态,有效使用緩存(浏覽器緩存、反向代理緩存、頁面緩存、局部頁面緩存、對象緩存和讀寫分離),服務原子化,資料庫分割,異步解決性能問題,最小化事物單元,适當放棄一緻性。以及自動化監控/運維手段包括監控預警、配置統一管理,基礎伺服器監控,URL監控,網絡監控,子產品間調用監控,智能分析監控,綜合故障管理平台,容量管理。可以很好地解決以上問題,進而達到整體系統的高可擴充性、更低的成本、更高的性能和可用性的實作效果。

遷雲架構最佳實踐

淘寶的技術架構是一個伴随業務逐漸發展而逐漸演進的過程,中間沉澱了很多寶貴的架構最佳實踐。對于大部分企業級客戶來說,可以結合自己的業務場景選擇合适的技術架構來實作整體IT系統的網際網路化設計。不同應用場景下的遷雲架構,包括檔案存儲、應用服務、OLTP資料庫、OLAP資料庫。

對于檔案存儲方式,可以直接用OSS取代EMC存儲實作海量資料檔案的存儲,OSS存儲最大容量可以達40PB,同時由于OSS是分布式存儲方式,可以通過多個節點的并行讀寫顯著提高資料通路性能。對于大檔案,還可以通過Multipart Upload的方式,将大檔案分塊并行傳輸與存儲,實作高性能。

對于應用服務,可通過SLB+多台ECS執行個體組合取代IBM小型機(圖6),也可以根據不同應用類型,直接基于ACE、ONS、OpenSearch等阿裡雲中間件雲服務部署。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

OLTP應用的遷移相對複雜。目前阿裡雲的RDS執行個體最高是48GB記憶體,14000IOPS,1TB的存儲容量(SSD存儲),支援MySQL和SQL Server。這個配置作為單資料庫伺服器來使用可以滿足很多場景的資料庫應用需求,可直接取代大部分場景下的IBM小型機+Oracle資料庫+EMC存儲。

對于性能要求更高的應用,可考慮引入開放緩存服務OCS,将部分查詢資料加載至分布式緩存中,減少RDS的資料查詢次數,提升系統的資料查詢并發效率和降低響應時間,如圖7所示。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

對于讀的請求遠大于寫請求的場景,可以考慮用多個RDS資料庫,采用分布式方式實作讀寫分離,寫交易主要發生在主庫,讀請求通路備庫,可以根據需求對讀庫進行擴充,以實作整體請求性能的提升。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

對于資料規模較大的資料庫表,可以通過水準切分的方式,将資料分布在多個RDS執行個體上,通過并行的分布式資料庫操作來實作性能和容量的提升。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

總的來說,通過遷移到RDS、引入資料緩存、分庫分表、讀寫分離等多種方式可以用Scale-Out方式取代原有的IOE架構,并且獲得更好的性能和擴充性。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

對于OLAP應用,可采用ODPS+OTS+RDS/ADS的解決方案取代小型機+Oracle DB+OLAP+RAC+EMC存儲解決方案,如圖11所示。總體來看,遷雲的通用架構方案如圖12所示,針對具體業務系統的遷雲方案還需要根據實際情況進行分析和合理選擇。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料
阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料

以上就是淘寶的技術架構變遷詳解,以下是最新構師談架構設計系列詳解資料。

阿裡P8架構師談:淘寶技術架構從1.0到4.0的架構變遷!附架構資料
資料領取方法