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