天天看點

幾條原則談談存儲系統開發

國記憶體儲界現在是百花齊放,非常熱鬧。軟體定義存儲,雲存儲,超融合等各種創新企業也在各自領域快速的發展。關于各方面的概念解釋和技術分析很多,但是我感覺關于存儲系統的開發方面,實踐性的文章非常少。我就據自己多年的存儲開發經驗,寫幾條原則,希望能抛磚引玉,讓各位開發人員和架構師能進行更廣泛的讨論。

幾條原則談談存儲系統開發

1. 重視中繼資料的備援安全。很多人說存儲的穩定性是第一位的,其實任何人為的系統都是有可能出錯的,存儲的資料安全性才是第一位的。出錯不可避免,當機不可避免,任何軟體都是有bug的,但是一定要避免出錯後資料丢失,特别是中繼資料丢失,要把這個機率降到最低最低。是以,設計中繼資料方案就像造飛機一樣,要有2套以上的獨立備援方案。這個是架構師第一個要考慮的問題。

2. 産品有定位,功能有取舍,要簡單突出。存儲的穩定性非常關鍵,複雜的東西很難穩定,除非不計成本。是以,我們首先要清楚産品的定位和市場應用,針對這個定位和市場應用來設計開發,其他的輔助功能一定建立在這個基礎之上。如果一個産品開始設計的時候就考慮到了很多功能都要做到最好,那麼很有可能主要的架構設計複雜,影響穩定性,最後影響最主要的功能點。是以,研發要對産品部門和銷售部門的要求有取舍,并且一定要堅持,這個在設計中非常關鍵。

3. 抽象,抽象,再抽象。其實這個和上一條的簡單原則有關系,抽象了,那麼架構就會非常簡單。子產品之間的耦合度就低,這個其實是軟體開發的共性。存儲軟體的基礎架構其實是和協定,和os,和硬體驅動都是無關的。如果相關了,那麼這個架構一定出了問題。

4. 資料驅動,不是功能驅動。這個可以參考linux核心設計,核心負責功能機制,但是使用者态負責資料驅動來做出各種應用。應用一定是和資料相關而不是和功能相關的,功能是非常共性的東西,由上層的資料來決定了具體的應用。

幾條原則談談存儲系統開發

5. 我們能碰到的所有的問題都是别人解決過的問題,碰到架構或者其他方面的問題參考現有的linux核心架構,block/scsi中間層,各種協定,看看他們是如何解決的,參考這些業界标準基本不會出錯。發明創造是科學家的工作,不是工程師的工作。

6. debug系統做好了,産品就不會做不好。這個是軟體開發的共性,不用多費筆墨。隻是存儲開發有兩個問題debug起來非常難,一個是一緻性問題,一個是性能問題。由于它的難度和全局影響性,這兩個debug系統最好要由系統架構師親自設計甚至編寫。

7. 适當打更新檔,但是最後要勇于承認架構有問題,要勇于重新來過,長痛不如短痛。真正穩定的軟體是不會一版成功的。

【編者按】

向程式員緻敬!

作者介紹:江松,storwind創始人,具有超過16年的國内外企業級存儲系統研發經驗。storwind專注于軟體定義存儲,相繼研發和釋出了leadio ssd緩存加速軟體,ipsan/nas軟體,商業級軟raid, 對象存儲和雲存儲網關cloudstation,獲得了衆多合作夥伴和客戶的高度認可。

本文作者:江松

來源:51cto

繼續閱讀