2009年,我從從事了三年多的互聯網行業轉向嵌入式方向的開發,其中有迫不得已的意味。我嘗試在這個行業發掘一些自己的興趣點,很遺憾,最終還是發現互聯網行業更加適合我一些。于是,在2010年就要到來的時候,毅然提出了離職。很快,也許我就要離開深圳,只為了尋找一個能夠從事自己感興趣職業的發展機會。有幾次面試的時候,面試官都會問我,為什么這么喜歡互聯網,我想都沒想就回答說,當初選擇做軟件就是為了能給他人帶來幫助,而在這個互聯網這個行業里我能找到最大的成就感。
技術方面,今年重點關注了幾個方面:
1) Linux內核。年初剛開始轉行嵌入式的時候,想借著機會學一下Linux內核方面的知識,當時也蠻有決心。但是,后來的工作,與系統底層關系不大,而內核的代碼又太過龐大。坦率的說,閱讀Linux內核給我帶來極大的挫折感,一方面就在于沒有相關的經驗,第二不知道從何看起。所以,暫時這個計劃就被擱置了。雖然如此,閱讀內核的代碼的經歷,也進一步培養了自己探究真相的好奇心,同時,如果能在操作系統層面上思考一些問題,我想會理解起來會更加深入。所以,這個閱讀內核的計劃遲早還是會重新撿起來的。反思這一次的失敗,我想,以后的閱讀首先挑自己感興趣的部分,帶著疑問,步步深入進去吧,比如我目前更加感興趣的部分是:進程調度模塊,內存管理模塊,TCP協議棧實現這幾塊。
2) Nginx代碼的閱讀。Nginx在之前有短暫的接觸,當時已經被它的效率折服,一直想看代碼來著,不過一直沒抽出空來。廣州技術沙龍上,第二期老zhu分享了自己閱讀Nginx的心得,沒趕上沙龍現場,不過就后面看到的文檔,再結合著自己以前閱讀Ligty的經驗,也就相關的部分進行了一些比較分析。個人的感覺,Nginx的代碼寫的很考究,作者是個重視細節,重視編碼優雅的也許有些“代碼潔癖”的人。Nginx的分析,和之前的ligty分析一樣,我只重點關注到服務器I/O架構部分,還有幾個部分需要關注的,比如內存管理,比如模塊設計細節,讀取配置文件等。應該說,Nginx里面可學的不止這些,其他的,等我真要好好研究一個web服務器的實現時,再慢慢看了,都是涉及到具體業務細節的部分了,可以暫時略過。
其實,就我的感覺來看,所謂的“高性能”服務器,在I/O網絡模型設計方面已經有比較成熟的模型了,這方面不會有太多的變化,關鍵在于與業務邏輯相關的架構,服務器集群之間的架構,服務器的可維護性,容錯性,以及后端的存儲等。在閱讀了Nginx/Ligty之后,我想,就單純的I/O網絡模型上,我已經有一些自己的想法了,今后應該會減少單純的服務器項目代碼的閱讀,而轉為其他一些我更加不熟悉部分內容項目的閱讀上去。比如我想閱讀GFS的文檔以及相關的一些開源項目,還有一些分布式相關的項目等,因為這樣涉及到分布式的項目,會更多的考慮服務器之間的關系,我比較缺這方面的經驗。
3)存儲相關的項目。今年的一個收獲是,我找到了自己更加感興趣的方向,就是與高性能存儲相關的部分,比如cache,持久化存儲等。這一部分,之前閱讀過的開源項目是memcached,我也做過類似的開源項目,不過僅是cache方面的。cache的舞臺多是內存,而持久化存儲如tokyocabinet等則多是文件了,存儲介質變了,文件的組織,算法,數據結構都有很大的不同。我最近也開始在看tokyocabinet的實現了,應該最近在比較有把握的情況下會有一些文檔交出來。
這么一看,其實這一年里面,技術上的長進著實不多,更多的我想是在個人心智的成長上。這一年對我而言,更多的是低潮,磨礪,以及自省,有了這些開始看上去不那么愉快的經歷,我想在今后都是一個財富。
另外,我在找C++服務器端的開發工作,有以下幾個小小的要求:
1) 騰訊就算了。我之前從騰訊出來,之后想回去,去面過幾次,技術上算過關了吧,不過現在回流騰訊難度似乎比較大,所以我想還是不要浪費大家的時間了。
2) 做網游開發的就算了。我曾經很喜歡做游戲類的開發,不過當前中國大陸的網游現狀,與我的預想差別還是比較大,每次看到那些在網吧沉迷游戲的孩子,都會覺得是網游害了他們。所以,如果做網游,我想我過不了自己這一關的,還是算了吧。
3) 北京,上海就免了,不太喜歡這兩個大城市,壓力大,同時排外情緒也嚴重一些。
除了以上幾個條件,其他的,都可以談,如果覺得靠譜,就給我博客留言吧,我將盡快回復,謝謝。
2009年,不是一個平靜的年份。