技術(shù)人攻略:你這種不迷信權威,獨立思考的思維方式,是從什么時(shí)候形成的?這種思維方式給你帶來(lái)了哪些益處?
從初中起,我就發(fā)現大人們有時(shí)也會(huì )做出不可理喻的決定,于是就開(kāi)始有了獨立思考的習慣。核心就是一句話(huà):凡事都要問(wèn)個(gè)為什么,要有打破沙鍋問(wèn)到底的精神,不可人云亦云。所以在學(xué)習的時(shí)候,我不喜歡簡(jiǎn)單地去記老師教的結論,而是用推演的方式,研究書(shū)上的公式和理論到底是怎么來(lái)的。
進(jìn)大學(xué)之后,接觸到《理論物理》這門(mén)課,學(xué)到拉普拉斯方程,能解高中所有物理問(wèn)題。這個(gè)方程給了我很深的觸動(dòng),牛頓經(jīng)典力學(xué)幾個(gè)公式看起來(lái)并沒(méi)有推導關(guān)系,但其背后卻原來(lái)有非常自然的內在關(guān)聯(lián)。
另一門(mén)《現代數學(xué)》也讓我受益很深,它對多維幾何、群論、分形學(xué)、混沌理論比較現代化的數學(xué)分支都有涉獵。其中分形幾何實(shí)際上是一面數學(xué)和計算機圖形學(xué)的交叉學(xué)科,讓我很想往深去挖,于是把圖書(shū)館所有關(guān)于分形和混沌的書(shū)都看了一遍,還寫(xiě)了一個(gè)程序,把接觸過(guò)的分形模型都用計算機模擬了一遍。
這兩門(mén)課讓我看到了許多事物從不相關(guān)到相關(guān)的內在聯(lián)系,也推動(dòng)了我去思考和探究背后的原因。長(cháng)此以往,我發(fā)現從某種意義上看,這個(gè)世界沒(méi)有學(xué)科之分,計算機、代數、物理,并沒(méi)有非常明顯的邊界。
這種思維方式對我后來(lái)的工作有很大影響,舉個(gè)例子,蠻多人會(huì )認為,存儲不就是把東西存到磁盤(pán)里嗎,跟數學(xué)有什么關(guān)系呢?實(shí)際上往高深去做,存儲系統和數學(xué)有非常緊密的關(guān)聯(lián)。通常的存儲服務(wù)要保證數據不丟,必須存多份,存多份就會(huì )增加存儲成本,經(jīng)典的3副本存儲,冗余度是3。想用更低的成本去存,就要用到域代數。
域代數遵循自然代數的加減乘除規律,但數據值控制在有限區域,不管怎么算,結果都在0到255這個(gè)域里面,所以叫域代數。存儲文件可以認為是0到255的一個(gè)序列,舉個(gè)例子,一個(gè)100K的文件拆成10份,每份是10K,存在10個(gè)地方,但文件仍然是一份。這時(shí)候用域代數里的加法(其實(shí)就是計算機中的異或操作),從這10份數據里取出一份校驗數據,數據變成了11份,它的冗余度是1.1。這是一種基于校驗碼的存儲方式,成本比較低,但效果和雙副本差不多,其中任何一個(gè)數據丟了,都能恢復回去。
利用域代數降低成本,在存儲領(lǐng)域是發(fā)展的必然方向,七牛的存儲2.0已經(jīng)采用了這種方式。由此可以發(fā)現,任何一個(gè)方向的技術(shù)要做到頂峰,都必須橫向地去理解,因為世界上所有的事情都有關(guān)聯(lián)。想要對云存儲理解得更透徹,你必須理解整個(gè)世界,而不光是云存儲。所以學(xué)技術(shù)實(shí)際上是不能專(zhuān)精的,在專(zhuān)精的過(guò)程中遇到瓶頸,就要往廣度方向去挖掘。
技術(shù)人攻略:除了用域代數降低存儲成本,存儲的未來(lái)還會(huì )有哪些趨勢?
從降低存儲成本的角度看,算數冗余已經(jīng)在算法上做到了比較極致的狀況,存儲領(lǐng)域接下來(lái)的突破,應該發(fā)生在材料科學(xué)上。生活中各種東西都在電子化,現實(shí)世界會(huì )逐步映射到比特世界,如果以這種方式瘋狂使用,必然會(huì )面臨能源危機。如何能讓存儲系統在常溫、不耗能的情況下運行,是接下來(lái)我們要面臨的一個(gè)重要問(wèn)題。
可能大家會(huì )覺(jué)得七牛談這件事有點(diǎn)奇怪,但我卻認為未必。創(chuàng )業(yè)是一個(gè)不斷降低不確定性的過(guò)程,剛開(kāi)始創(chuàng )業(yè)的時(shí)候,充滿(mǎn)了各種不確定性和不可控性,但不能停滯不前。這個(gè)過(guò)程中最麻煩的,是不能把自己看成必須怎樣做,要完全放空,不從各種可能性上去限制自己。至少走一步,大不了發(fā)現錯了回頭,其實(shí)也不晚。
如果七牛真要把存儲做到極致,一定會(huì )往材料這個(gè)方向走,因為它關(guān)系到我們能不能把存儲做長(cháng)久。當然現階段,材料不是我們首要的關(guān)注點(diǎn),我們的重點(diǎn)是針對客戶(hù)的訴求點(diǎn),解決數據應用層面的問(wèn)題。
之前網(wǎng)盤(pán)一直在打存儲配額戰,但都停留在把用戶(hù)的數據存下來(lái),沒(méi)把它們用起來(lái),所以網(wǎng)盤(pán)的用戶(hù)粘性很低,這也是我放棄做網(wǎng)盤(pán)產(chǎn)品的其中一個(gè)原因。直到現在我仍然看好個(gè)人云存儲的市場(chǎng)潛力,但我相信最后的產(chǎn)品形態(tài)不會(huì )是網(wǎng)盤(pán),應該是更加垂直化的、由場(chǎng)景驅動(dòng)的、讓數據流動(dòng)起來(lái)的一種形態(tài)。
存儲領(lǐng)域真正的戰爭發(fā)生在應用層面,在數據量越來(lái)越大的情況下,所有公司都會(huì )面臨數據管理的難題。數據一定要流動(dòng)起來(lái)才會(huì )產(chǎn)生價(jià)值,如果僅僅解決存儲,數據最終留在七牛的可能性不是特別高。七牛會(huì )對針對數據的使用場(chǎng)景,幫助客戶(hù)做標準化處理,實(shí)現數據價(jià)值的最大化。例如目前存儲最多的數據是圖片,圖片用戶(hù)的典型使用場(chǎng)景,是需要不同尺寸的縮略圖,我們提供了這樣的功能,用戶(hù)就省心多了,不用去重復去建設這個(gè)過(guò)程。
技術(shù)人攻略:回顧一下你的過(guò)往經(jīng)歷,畢業(yè)后僅用2年時(shí)間,就成為WPS的首席架構師,這個(gè)過(guò)程是如何實(shí)現的?
金山在管理上給員工較大的自由度,所以個(gè)人的成長(cháng)空間也挺大。我2000年加入金山,實(shí)習期間參與了WPS Office 2001的開(kāi)發(fā)。分配給我的任務(wù),是軟件的讀盤(pán)和存盤(pán)模塊。這個(gè)模塊當時(shí)的重要性并不那么高,它看上去簡(jiǎn)單,但我發(fā)現其中有不少有意思的挑戰。挑戰之一,是要求你理解軟件的所有功能,以及每個(gè)功能的數據表達方式。這讓我無(wú)意中觸及到一個(gè)軟件系統最核心的東西——數據。順著(zhù)這條線(xiàn)索,我研究了微軟Office各個(gè)功能模塊的數據存儲方式,并把一些有趣的實(shí)現方法分享給同事們,他們會(huì )吸收其中有益的部分,據此修改原有軟件的設計。
湊巧的是,一年之后,金山開(kāi)始研發(fā)WPS 2002。新版本被稱(chēng)作“格式兼容之戰”,為了實(shí)現對微軟Office文件格式的兼容,I/O成了戰略層面的技術(shù),存盤(pán)功能從邊緣模塊,一下變成了整個(gè)WPS研發(fā)的核心模塊。從2002年底,我領(lǐng)導WPS整體架構設計,開(kāi)始了WPS 2005長(cháng)達3年的研發(fā)。
隨著(zhù)對存儲更深入的理解,我們在軟件架構層面做出了創(chuàng )新,引入了一個(gè)數據層,抽象出所有數據的存儲過(guò)程。數據層誕生之前,傳統的“撤銷(xiāo)/重做”功能,通過(guò)對命令的反操作實(shí)現。這種做法非常笨重,所有新開(kāi)發(fā)的功能,都必須考慮反操作怎么做。而數據層帶來(lái)的好處,是讓所有的數據天然可回滾,可以輕松支持多版本存盤(pán)、Undo/Redo(撤銷(xiāo)/重做),以及各種異步操作。
這個(gè)創(chuàng )新并不是對微軟的簡(jiǎn)單模仿,其靈感來(lái)源于對增量存盤(pán)的思考。Office有個(gè)“快速存盤(pán)”概念,用戶(hù)正在編輯的內容,如果已經(jīng)存過(guò)了一次盤(pán),修改過(guò)后再次存盤(pán),只需要在原來(lái)基礎上補加數據。相當于對同一個(gè)文件,存了兩個(gè)版本的數據。我想既然可以做快速存盤(pán),那么就不必關(guān)心用戶(hù)到底做了幾個(gè)操作,要實(shí)現撤銷(xiāo)和重做功能,只需要基于數據狀態(tài)做前進(jìn)和回退即可。
數據層的架構大大降低了研發(fā)的復雜度,在當時(shí)的金山起到了非常重要的作用。看上去,我像是很幸運,做的東西從邊緣模塊變成了核心模塊。我相信之前很多人接觸過(guò)存盤(pán),但有多少人深入思考過(guò)其中的原理呢?我始終認為,任何一件事情,想要做到極致,必須把它當成一個(gè)學(xué)科來(lái)研究,把它琢磨透。假設這個(gè)東西很好玩,思考如果要把它做到極致,最終應該是什么樣子。如果僅僅當成一個(gè)簡(jiǎn)單的任務(wù)完成,能取得的成果會(huì )很有限。