\\之所以會從儲存系統先開始,是因為資料儲存是最根本的需求。不管你做什麼,你都需要儲存。所以,通常都是先做儲存系統,然後才是其他系統。我們做乙個大規模儲存系統,它就已經在推動整個系統的架構發生了變化。
\
\\從單使用者多工到多使用者單任務,帶來了系統架構的變化,然後帶來了軟體設計理念的變化。那麼,資料中心裡面使用的這些系統,無論是分布式的檔案系統也好,資料庫也好——實際上我們也不需要區分它是檔案系統還是資料庫,它們都是分布式的儲存系統——它們整體設計理念是發生了變化的。
\
在林仕鼎看來,這種軟體設計理念的變化包含很多方面,但最基本的一點就是:分層。
\
\\這個「機器」裡面是乙個有層次的架構。有些東西是比較緊密的,比如說我這些機器正好在同乙個盒子,即同一臺物理機器裡面,這時候我們的交換是通過記憶體,而不是通過網路,我們就可以做共享記憶體,而不是訊息。也可能我們在同乙個機架裡面,那麼我們的交換基本可以做到1:1。也有可能我們分散在不同的機架上,這時候我就不能毫無限制的把資訊扔給另一台機器了,因為這時候會有個收斂比。綜合考慮這些資訊,我就可以根據整個物理的情況來選擇乙個平衡:成本和軟體複雜度的平衡。
\
「所以,」林仕鼎補充到,「因為不同層下的限制不同,你的軟體本身必須要能夠去適應。」
\
\\乙個儲存系統有三個層:block層,stream層,以及table層。ccdb的設計是,我把這三個層放在一塊兒,放在一台機器上面去。然後,機器和機器之間連起來,就把每個層直接擴充套件到多機了。這樣,你由軟體上的層次,對映到物理機器的架構上的時候,就可以嘗試多種不同的設計方案出來。就像我剛才說的,我們有同一臺機器裡面通過記憶體交換的架構,有同乙個交換機下1:1交換的架構,有跨交換機的、有一定收斂比的架構。我們需要選擇合適的單元對映到合適的硬體上。不同的對映方式會帶來很多種不同的變化。
\
除了物理結構上的層次和儲存軟體本身的層次之外,這個分層在單機的儲存裝置上也有所體現:
\
\\我們看到儲存,有硬碟,有ssd,有記憶體。所以還有乙個需要考慮的因素就是,我們需要把什麼東西分別放在這不同的介質上面?
\
林仕鼎介紹了現在希捷的乙個做法:把ssd和機械硬碟打包,做成混合硬碟:
\
\\它在乙個盤裡同時有記憶體這樣的cache,有ssd的cache,而它把這些記憶體、ssd、硬碟都給隱藏了起來,做成乙個裝置。
\
\\資料中心裡面,我們本身就把這兩個分開來考慮。你把它並到一塊,反而會限制它的範圍,導致你這邊資料的cache只能放到這塊盤裡面。而如果我把它分來的話,我就可以跨多機建乙個邏輯上的ssd層。在物理上,我在這塊盤的ssd上cache的東西,可以弄到另一塊盤上去。
\
所以,ccdb的做法是這樣的:把block層存在硬碟上,把stream層放在ssd上(這層是可選的),而記憶體則用於做寫緩衝。
\ 於是,就變成這樣:
\ (來自林仕鼎在深圳的分享資料)
\ 將多機資源合併成邏輯上的乙個層,乙個最直接的好處就是可以實現另一種意義上的高可靠性:
\
\\因為我們把多機的記憶體放在一塊兒,這就意味著同乙份資料我可以寫到不同的記憶體上面去。這種實現的可靠性級別和我從記憶體寫入硬碟的可靠性級別是不同的,但很多情況下,我有這種多機記憶體級的可靠性級別就夠了,不一定要到硬碟上去,那樣效能成本太高了。
\ 我們一旦把整個設計的理念從軟體這個層面來考慮的話,那麼在設計上存在的可能性,以及架構層面的考慮,是完全不一樣的,因為你什麼都可以去做,而且可以很靈活的去調整。
\
在4月25日qcon北京的主題演講上,林仕鼎將會帶來主題為《架構設計與架構師》的分享,就系統領域中基本的儲存、計算、分布式技術以及服務模型進行分析,從另一種視角看待這些領域問題。敬請期待!
\ 感謝馬國耀對本文的審校。
林仕鼎 大資料需要三類人才
在這裡,資料科學家是一種狹義上的定義,指的是那些具有資料分析能力,精通各類演算法,直接處理資料的人員。經資料科學家加工和分析後得到的資訊可以作為業務處理流程的輸入資料,用來驅動業務的發展。資料架構師則要精通業務,了解業務的需求和業務系統的架構,這樣才可能把資料和業務進行對接。還有一類大資料人才是資料...
林仕鼎 大資料需要三類人才
在這裡,資料科學家是一種狹義上的定義,指的是那些具有資料分析能力,精通各類演算法,直接處理資料的人員。經資料科學家加工和分析後得到的資訊可以作為業務處理流程的輸入資料,用來驅動業務的發展。資料架構師則要精通業務,了解業務的需求和業務系統的架構,這樣才可能把資料和業務進行對接。還有一類大資料人才是資料...
談資料中心SDN與NFV
看到一篇談論sdn與nfv的文章,分析的還不錯,貼過來方便自己後續查閱 論資料中心sdn與nfv技術關係 原文如下 一提到大名鼎鼎的sdn,在資料中心圈裡,幾乎無人不知無人不曉。這幾年,sdn概念很火,有人甚至認為sdn是第二次的資訊科技革命,sdn中文名叫軟體定義網路,這一技術的目的就是要消除網路...