幾條原則談?wù)劥鎯ο到y(tǒng)開發(fā)
國內(nèi)存儲界現(xiàn)在是百花齊放,非常熱鬧。軟件定義存儲,云存儲,超融合等各種創(chuàng)新企業(yè)也在各自領(lǐng)域快速的發(fā)展。關(guān)于各方面的概念解釋和技術(shù)分析很多,但是我感覺關(guān)于存儲系統(tǒng)的開發(fā)方面,實踐性的文章非常少。我就據(jù)自己多年的存儲開發(fā)經(jīng)驗,寫幾條原則,希望能拋磚引玉,讓各位開發(fā)人員和架構(gòu)師能進(jìn)行更廣泛的討論。
1. 重視元數(shù)據(jù)的冗余安全。很多人說存儲的穩(wěn)定性是***位的,其實任何人為的系統(tǒng)都是有可能出錯的,存儲的數(shù)據(jù)安全性才是***位的。出錯不可避免,宕機(jī)不可避免,任何軟件都是有bug的,但是一定要避免出錯后數(shù)據(jù)丟失,特別是元數(shù)據(jù)丟失,要把這個概率降到******。所以,設(shè)計元數(shù)據(jù)方案就像造飛機(jī)一樣,要有2套以上的獨(dú)立冗余方案。這個是架構(gòu)師***個要考慮的問題。
2. 產(chǎn)品有定位,功能有取舍,要簡單突出。存儲的穩(wěn)定性非常關(guān)鍵,復(fù)雜的東西很難穩(wěn)定,除非不計成本。所以,我們首先要清楚產(chǎn)品的定位和市場應(yīng)用,針對這個定位和市場應(yīng)用來設(shè)計開發(fā),其他的輔助功能一定建立在這個基礎(chǔ)之上。如果一個產(chǎn)品開始設(shè)計的時候就考慮到了很多功能都要做到***,那么很有可能主要的架構(gòu)設(shè)計復(fù)雜,影響穩(wěn)定性,***影響最主要的功能點(diǎn)。所以,研發(fā)要對產(chǎn)品部門和銷售部門的要求有取舍,并且一定要堅持,這個在設(shè)計中非常關(guān)鍵。
3. 抽象,抽象,再抽象。其實這個和上一條的簡單原則有關(guān)系,抽象了,那么架構(gòu)就會非常簡單。模塊之間的耦合度就低,這個其實是軟件開發(fā)的共性。存儲軟件的基礎(chǔ)架構(gòu)其實是和協(xié)議,和OS,和硬件驅(qū)動都是無關(guān)的。如果相關(guān)了,那么這個架構(gòu)一定出了問題。
4. 數(shù)據(jù)驅(qū)動,不是功能驅(qū)動。這個可以參考linux內(nèi)核設(shè)計,內(nèi)核負(fù)責(zé)功能機(jī)制,但是用戶態(tài)負(fù)責(zé)數(shù)據(jù)驅(qū)動來做出各種應(yīng)用。應(yīng)用一定是和數(shù)據(jù)相關(guān)而不是和功能相關(guān)的,功能是非常共性的東西,由上層的數(shù)據(jù)來決定了具體的應(yīng)用。
5. 我們能碰到的所有的問題都是別人解決過的問題,碰到架構(gòu)或者其他方面的問題參考現(xiàn)有的linux內(nèi)核架構(gòu),block/scsi中間層,各種協(xié)議,看看他們是如何解決的,參考這些業(yè)界標(biāo)準(zhǔn)基本不會出錯。發(fā)明創(chuàng)造是科學(xué)家的工作,不是工程師的工作。
6. Debug系統(tǒng)做好了,產(chǎn)品就不會做不好。這個是軟件開發(fā)的共性,不用多費(fèi)筆墨。只是存儲開發(fā)有兩個問題debug起來非常難,一個是一致性問題,一個是性能問題。由于它的難度和全局影響性,這兩個debug系統(tǒng)***要由系統(tǒng)架構(gòu)師親自設(shè)計甚至編寫。
7. 適當(dāng)打補(bǔ)丁,但是***要勇于承認(rèn)架構(gòu)有問題,要勇于重新來過,長痛不如短痛。真正穩(wěn)定的軟件是不會一版成功的。
【編者按】
向程序員致敬!
作者介紹:江松,Storwind創(chuàng)始人,具有超過16年的國內(nèi)外企業(yè)級存儲系統(tǒng)研發(fā)經(jīng)驗。Storwind專注于軟件定義存儲,相繼研發(fā)和發(fā)布了LeadIO SSD緩存加速軟件,IPSAN/NAS軟件,商業(yè)級軟RAID, 對象存儲和云存儲網(wǎng)關(guān)Cloudstation,獲得了眾多合作伙伴和客戶的高度認(rèn)可。
本文來源:微信公眾號“樂生活與愛IT”