【TechTarget中國原創】淘寶網是亞太最大的網絡零售商圈,其知名度毋庸置疑,吸引着越來越多的消費者從街頭移步這里,成為其忠實粉絲。如此多的用戶和交易量,也意味着海量的信息處理,其背后的IT架構的穩定性、可靠性也顯得尤為重要。那么,他們是怎么辦到的呢?
曾憲傑(花名花黎)是淘寶Java中間件團隊成員,他認為大型網站就是要同時滿足高訪問量和高數據量的要求,核心是通過分布式系統解決數據的處理、存儲及訪問問題。
消息中間件Notify
早期,淘寶並沒有Java中間件,其系統框架比較簡單。下面我們就來看看Java中間件在淘寶的誕生和發展。首先要說的是實現系統松耦合和 異步處理的消息中間件Notify,這是一個高性能、高可靠、可擴展組件,輕量級支持最終一致性和訂閱者集群。所謂訂閱者集群,即將訂閱消息的客戶端分為 多個集群,集群之間采用Topic方式,讓每個集群都能收到消息,集群之中再按照Queue的方式,僅由一個客戶端來處理消息。
對於淘 寶來說,最終一致性至關重要。有過淘寶經驗的人都知道,在我們完成付款之后,訂單狀態會立刻更改為已付款。如果用戶付款之后,淘寶不能通知支付寶為該用戶 的賬號充值,商家也不能知道用戶已經付款,也就是整個交易的所有參與方不能實現最終狀態一致性的話,整個交易也就無法繼續下去。曾憲傑笑言:“如果真的發 生這樣的情況,那么淘寶就不用做了。”
在實現消息的可靠性上,淘寶采用Oracle+小型機(IBM)+高端存儲(EMC)的形式,寫雙份Mysql,同時基於文件和內存。Notify目前每天消息總量達到4.4億,每天消息投遞條次約15億次,總共有78個消息主題,786種消息類型,部分消息訂閱者超過30個集群。下圖是淘寶在應用了Notify之后的系統架構圖:
淘寶服務框架——HSF
應用了消息中間件之后,淘寶仍舊面臨着一系列問題,比如上百人維護一個代碼百萬行的前台核心應用;多個業務系統中的代碼重復編寫以及數據庫連接數接近瓶 頸。那怎么解決呢?服務化成為淘寶的上選。應用服務化解決了業務核心的穩定和一致的問題,重要數據庫的連接數也得到了緩解;此外,系統分解后,效率和穩定 性也得到了顯著提升。
曾憲傑介紹他們的這個服務框架稱之為HSF。目前HSF線上提供的服務數量超過六百個,每日的調用總量達到150億以上,現在甚至更高。下圖是應用了HSF之后的系統架構圖:
淘寶分布式數據層TDDL
在淘寶的數據庫架構演進過程中,為了更好地支持分庫分表以及讀寫分離,進行了一定的封裝。對上層應用而言仍舊操作JDBC,實則是在使用淘寶分布式數據 層(TDDL),它能實現SQL解析、規則路由、數據合並;既可以用jar的方式在客戶端直接連接數據庫,也可以讓客戶端通過DBProxy服務器訪問數 據庫;具備三層的數據源結構,還支持非對稱數據復制。
目前TDDL每日SQL執行量達到30億以上,每日的數據復制量約為2.8億多。下圖是淘寶加上TDDL之后的系統架構:
盡管目前淘寶的Java中間件發展順利,但也並不意味已經解決了一切問題。目前仍舊存在一些問題需要解決,曾憲傑表示在這些問題上,他們希望通過開源的途徑得到解決,同時能夠根據業務需求提供相應的新功能,另外系統的穩定性仍舊是他們要關注的內容。