2月18日,CSDN(微博)在北京舉行了TUP第19期活動:大數據系列研討會——從12306談起。本次研討會匯集了來自百度、豆瓣(微博)網、搜狗、淘寶、土豆、凡客誠品(微博)、新浪微博、IBM等公司的眾多業內技術高管,就大數據及海量并發用戶網絡的需求分析、架構設計、產品研發、系統運維等話題和與會者進行了深度探討。與會者包括來自互聯網/IT公司技術高管、研發精英、運維管理、對高并發網站解決方案有研究的技術人員,共計三百人參與了此次研討會。本次研討會分為上下午兩部分,上午為高端討論,下午為集中講座。
針對網站在突發高負載和高增長的情況下,如何承載巨大訪問量,來自百度(移動·云)的首席架構師林仕鼎帶來了名為《架構設計的一些思考》的精彩演講。

存儲和分布式
林仕鼎首先從存儲、分布式、服務架構、計算模型的例子開始談起。他認為程序組織非常重要,對于存儲這部分來說,它需要考慮包括結構、數據特點、訪問模式、接口性質四大方面的問題。林仕鼎對這四大方面的問題作了詳細闡述,指出每一個問題都面臨若干選擇,比如結構問題就有:File、Object、Table的選擇,然后在同樣一個結構中,還要面臨是實時讀寫、批量寫實時讀之類的訪問模式的選擇,接下來不同訪問模式對系統帶來的影響,數據大小的分布、布局等。林仕鼎表示,正是因為有這么多因素的影響,導致開發者在設計系統時,必需要考慮很多方面。只有在全面掌握這些信息的情況下,才能設計出符合實際要求的系統。
存儲帶來的一些矛盾包括:延遲與吞吐、隨機與順序、規模與實時性。一般來說,系統的規模越大,實時性的保證難度也就越大。要化解矛盾,需要在包括B+tree、Log-based兩類模型建設的基礎上做到弱化需求、發掘局部性、組合模型。


在談到分布式時,林仕鼎表示其實分布式的目標很簡單,只有兩個:擴容和容錯。要實現這些目標需要采用Partition和Replication兩種方法,而協議設計、調試是難點。
服務架構和計算模型
在進行系統設計時,所有系統都會面臨一個極限值,即在給定系統資源情況下,所能提供的最大請求數,這里需要做一個特別設計,以防請求數突破極限值。如果沒有作特別設計,在極端情況下,吞吐量超過一個點,那整個系統將崩潰。

服務架構的目標包括系統的高吞吐能力和在極限壓力下的穩定輸出。要實現這兩個目標離不開服務架構的兩類模型:屬于基本類型的threadpool + queue和屬于復雜類型的event-driven。為了保證整個系統的穩定性,還需要注意:減小資源分配粒度并主動調度、Flow Control、負載反饋,Throttling和延遲截斷這四個方面。
計算模型包含很多不同特點,一般來講分為三類:數據密集型、計算密集型、通訊密集型(即傳統HPC)。林仕鼎表示,首先要分析系統的特點,找到適合的模型。
在很多情況下,在怎么做系統、服務、數據倉庫等問題上,開發者面臨的具體問題都千差萬別。此時,需要建立一些模型,或者有比較好的實踐原則。作為一個架構師,首先是要非常深入地了解自己的業務,再根據業務特點運用一些現行做法。林仁鼎總結了“架構師三板斧”,作為本次演講總結與各位分享。架構師三板斧內容如下。
看清需求:Tradeoff、無法滿足所有需求、無須同等對待所有需求、發現根本需求、抽象、降維、了解需求隨時間的變化、選擇方法、把握節奏。選擇方法:測算 -> 模擬 -> 實現、分解 vs 迭代、設計模式。把握節奏:目標與可達路徑、定期產出。
推薦閱讀
2月18日,CSDN(微博)在北京舉行了TUP第19期活動:大數據系列研討會——從12306談起。本次研討會匯集了來自百度、豆瓣(微博)網、搜狗、 淘寶、土豆、凡客誠品(微博)、新浪微博、IBM等公司的眾多業內技術高管,就大數據>>>詳細閱讀
本文標題:林仕鼎:大數據處理 架構師的三板斧
地址:http://m.sdlzkt.com/a/kandian/20120305/36941.html