【淘寶技術這十年】,讀後總結篇
一看就是一天,晚飯忘了吃了。因為裡面涉及的技術確實頗有傳奇色彩。
突然覺得,沒有時間看書,而且需要補充技術營養的技術宅來說,勤奮的渣渣我來提供福利了,萃取一些精華分享給大家吧
--------start----------------------------------------
1.2007年分散式檔案系統TFS(TaoBao File System)---->解決淘寶檔案圖片資源載入慢的問題
2Tair(淘寶自行研發的分散式KV儲存方案)---->寶貝快照
3.淘寶研發了TimeTunnel,用於進行實時的資料傳輸---->為了快速、及時、同步地傳輸日誌資料
4.雲梯的基於
5.MVC框架是阿里的WebX,控制層用了EJB,持久層是ibatis。
6.淘寶網將圖片處理與快取編寫成基於Nginx的模組
7.淘寶網使用GraphicsMagick進行圖片處理,採用了面向小物件的快取檔案系統,前端有LVS+Haproxy將原圖和其所有的縮圖請求都排程到同一臺Image Server(圖片伺服器)。
8.在檔案定位上,記憶體用Hash演算法做索引,最多一次讀盤。另外會有很多相同的圖片重複上傳上來,去除重複檔案也是採用Hash演算法來做
9.ESI是一種資料緩衝/快取伺服器,它提供將Web網頁的部分(這裡指頁面的片段)進行緩衝/快取的技術及服務
10.ESI是一種資料緩衝/快取伺服器,它提供將Web網頁的部分(這裡指頁面的片段)進行緩衝/快取的技術及服務
11.UIC的一個快取系統,取名叫做TDBM。TDBM拋棄了Berkeley DB的持久功能,資料全部存放在記憶體中。
12.由於TDBM、TBstore的資料介面和用途都很相似,開發團隊把二者合併,推出了淘寶自創的Key-Value快取系統——Tair(TaoBao Pair的意思,Pair即Key-Value資料對)。Tair包括緩
存和持久化兩種儲存功能。Tair作為一個分散式系統,由一箇中心控制節點和一系列的服務節點組成,我們稱中心控制節點為
有的Data Server,維護Data Server的狀態資訊。Data Server 對外提供各種資料服務,並以心跳的形式將自身的狀況彙報給ConfigServer。Config Server是控制點,而且是單點,目前採用一主一備
的形式來保證其可靠性。所有的Data Server 地位都是等價的。
13.在商品分類方面,從系統的角度來看,建立了“屬性”這樣一個數據結構,由於除了類目的子節點有屬性外,父節點也可能有屬性,於是類目屬性合起來也是一個結構化的資料物件。
把它獨立出來作為一個服務,叫做Catserver(Category Server)。跟類目屬性密切關聯的商品搜尋功能獨立出來,叫做Hesper(金星)。Catserver和Hesper供淘寶的前後臺系統呼叫。
14.由於季節不同,商品目錄在前臺需要根據運營者制定,後臺還是自然目錄儲存,改造後的類目屬性服務取名為Forest(森林,與類目屬性有點神似。Catserver還用於提供賣家授權、品牌服務、關鍵詞等相關的服務)。
類目屬性的服務化是淘寶在系統服務化方面做的第一個探索。
15.中介軟體系統,一種是實時呼叫的中介軟體(淘寶的HSF,高效能服務框架),一種是非同步訊息通知的中介軟體(淘寶的Notify)
16.HSF
這就是HSF的設計思想,服務的提供者啟動時通過HSF框架向ConfigServer(類似超市的電視機)註冊服務資訊(介面、版本、超時時間、序列化方式等),這樣ConfigServer上面就定義了所有可供呼叫的服務(同一個服務也可能有不同的版本);服務呼叫者啟動的時候向ConfigServer註冊對哪些服務感興趣(介面、版本),當服務提供者的資訊變化時,ConfigServer向相應的感興趣的服務呼叫者推送新的服務資訊列表;呼叫者在呼叫時則根據服務資訊的列表直接訪問相應的服務提供者,而無須經過ConfigServer。我們注意到ConfigServer並不會把服務提供者的IP地址推送給服務的呼叫者,HSF框架會根據負載狀況來選擇具體的伺服器,返回結果給呼叫者,這不僅統一了服務呼叫的方式,也
實現了“軟負載均衡”。平時ConfigServer通過和服務提供者的心跳來感應服務提供者的存活狀態。
17.Notify
NotifyServer在ConfigServer上面註冊訊息服務,訊息的客戶端通過ConfigServer訂閱訊息服務。某個客戶端呼叫NotifyServer傳送一條訊息,NotifyServer負責把訊息傳送到所有訂閱這個訊息的客戶端(這個過程參照HSF一節,原理是一樣的)。為了保證訊息一定能發出,且對方也一定能收到,訊息資料本身就需要記錄下來,這些資訊存放在資料庫中(可以是各種資料庫)。由於訊息具有中間狀態(已傳送、未傳送等),應用系統通過Notify可以實現分散式事物——BASE(基本可用(Basically Available)、軟狀態 (Soft State)、最終一致(Eventually Consistent))。NotifyServer可以水平擴充套件,NotifyClient也可以水平擴充套件,資料庫也可以水平擴充套件,從理論上講,這個訊息系統的吞吐量是沒有上限的,現在Notify系統每天承載了淘寶10億次以上的訊息通知。
18.TDDL
TDDL實現了下面三個主要的特性:
yy資料訪問路由——將針對資料的讀寫請求傳送到最合適的
地方;
yy資料的多向非對稱複製——一次寫入,多點讀取;
yy資料儲存的自由擴充套件——不再受限於單臺機器的容量瓶頸
與速度瓶頸,平滑遷移。
下圖展示了TDDL所處的位置。
簡單的分庫分表資料查詢策略
先吃飯去~,明天再看。。。o(╯□╰)o
19.ODPS -->http://odps.aliyun.com/.
ODPS是開發資料倉庫的平臺工具。
資料倉庫的傳統市場是電信和銀行,傳統解決方案很昂貴。
網際網路運營團隊越來越依賴於大資料分析工具。
雲端計算是技術創新也是業務創新。
對於網路行業,業務資料天然在網上,匯入ODPS更容易。
對於傳統行業,前期可能需要VM、RDS和OTS等兄弟產品開路,逐步引導使用者使用ODPS。
20.飛天體系
21.CDN