1. 程式人生 > >Java遊戲伺服器成長之路——2016隨筆總結

Java遊戲伺服器成長之路——2016隨筆總結

寫在開頭

Java遊戲伺服器成長之路的系列,已經很長時間沒寫了,不是不想寫,而是這一年,基本都是在忙別的了,今天特地擠出時間,對我的2016年,做一個不留遺憾的總結。

2016的事件

不知不覺,又到了春節搶票的時候了,這兩天除了盼著年終能發點獎金以外,就是盼著能買一張合適的火車票,今年是離家最久的一年,幸運的是,我成都的小房子要結房了,必須要我本人到場,這就能給我一個理由多請一週的假提前回去幾天,很久沒看到家人了,離家這麼久,還是挺想念的。另外就是,盼著發年終獎了,畢竟工作了一年,也沒什麼存款,哎。。。

網際網路泡沫破滅

這一年,相對於以往來說,是過得比較平淡的,去年,跳槽了,前年,畢業了,今年,既沒跳槽也沒畢業,也沒有漲工資,哎……說起來,今年網際網路行業的整體形勢都不大好,有位做iOS的同學一年跳了三次槽,其中兩次是公司做不下去黃掉的,好在我這個同學的基本功是沒問題的,技術很紮實,要重新找個工作也不難,其實這既是我們這個職業的風險,也是這個職業的機遇,誰知道下一份工作,又會給我們的薪資提升多少個檔次(這是一個跳槽比加薪來錢快的職業……),我們被稱作程式猿,碼農,IT男……話說回來,我們遊戲行業也差不多,一夜之間,就聽說好多遊戲公司開始裁員,這一切都源於政府開始對網際網路行業的整頓,網際網路泡沫終究還是會破滅,從遊戲行業來說,中國區所有的遊戲想要上架應用市場,都需要申請遊戲版號,而版號申請又需要一大堆資質,總之聽公司領導說起來這個流程,是很麻煩的,通常辦下來,至少需要半年時間,還不包括中間如果出現問題打回去重新調整的時間。國家還真的是說到做到,半年前,我們公司的遊戲申請了版號,果然在半年後申請下來了……

公司每況愈下

國家這一舉動,也確實是對不少中小遊戲公司造成毀滅性的打擊,半年前,我們公司開始裁員,裁掉幾個人,一個月前,公司又是一波裁員,又走了幾個人,本來公司人不多,現在裁員過後,人更少了,每天去上班就不到十個人在那兒坐著,我沒被裁掉的原因,大概就是公司就我一個伺服器的開發吧,如果我都走了,公司的所有網路遊戲都要垮掉,就只能做單機了……所以我們剩下幾個人,目前是在做最後的掙扎,希望最後的一搏還能有一點收穫,對公司而言,能收穫一筆錢來運轉,對我個人來說,當然也是錢,賺了錢,肯定能發獎金了,另外還是希望能漲點工資,這也是我2017的願望之一,除了錢之外,對我個人來說,也終於可以有一款上線賺大錢的遊戲專案經驗了,這款遊戲也是從始至終我一個人包攬服務端所有工作的一款遊戲,對我個人的技術成長來說,它的意義也是無可厚非。就算是按照最壞的情況下,遊戲崩了,公司倒閉了,對公司來說,是一個毀滅性的打擊,但是自私點來講,對我個人來說,也不會有太大的影響,並且這一年多的獨立開發遊戲服務端的經驗,也是抹不掉的,所以退一萬步講,無論結果怎麼樣,對我個人的職業生涯來說,都是成長,我要做的,就是做好我的本職工作,好好學學技術,時時更新我的知識資料庫。

主流技術發展迅速

說到技術,不得不說當前軟體技術的飛速發展,實在是超乎了我們的想象:
1.一年前,我還認為,HTML5無非就是html加幾個新的標籤嘛,然而現在的h5,能做遊戲,能做App,能做網站,能做各種酷炫的特效,這些都是HTML4的技術標準無法實現的,用幾個HTML標籤,你能做出來?
2.一年前,我還認為,Javascript不就是個瀏覽器指令碼語言嘛,然而現在的js,不僅能做app,能做遊戲,甚至能做伺服器,能做資料庫,不只是能做,而且各大廠都開始支援js技術。誰能想到,當年大學課堂上,老師一帶而過的瀏覽器指令碼語言,如今已經火便整個網際網路?
3.一年前,我還不知道什麼是大資料,而現在,在這個資訊量爆炸的時代,大資料早不是什麼新鮮事情了,身邊處處都是大資料,像Docker,Hadoop這樣的技術,早就已經耳熟能詳了。
4.一年前,做一個網站的前端,需要用到的技術可能是Html,JQuery;一年後,做一個網站的前端,需要用到的技術可能是HTML5,Css3,es6,Angular,bootstrap……

一年前,JDK的版本還是1.7,tomcat還是7,Spring還是3,Hibernate還是4,而現在…所有的技術的版本號都升了,都或多或少的加入了很多新的特性來支援我們當前這個資訊時代的需要,如果說,我們停止了學習,那我們技術上的思想和思維,就會完全跟不上這個時代的需要,最終只會被淘汰掉。學習一個新技術,不是多難的事,只需要在有空的時候,大致瞭解一下它是做什麼的,有什麼特性,如果有興趣,再寫個Demo來研究研究,當你真的搞懂一個非常的技術的框架的時候,你會非常讚歎這個框架的創作人的這個成果。就比如前段時間,我研究了Pomelo,一個網易的開源遊戲伺服器框架,底層是基於Node.js的,它在github上的文件介紹的非常詳細,我看完它的整個設計的架構,它的整個架構的思想,我特別的欣賞,再回頭想想當初我所設計的架構(就是在當前公司所負責的遊戲的服務端架構),簡直不是一個檔次的,別人家的架構,具有良好的伸縮性,無論是開發效率還是生產高可用,以及伺服器架構中很重要的擴充套件性,都是做的非常好的,而我的架構,我甚至不知道它能夠支撐多久,這真的是看了別人的東西,才知道自己的東西有多垃圾……

其實說到底,還是我們自己的一個思維的固化,我們總是容易跟著固化的思維走,多看看新的技術,學學新的思路,真的會感覺到一個不一樣的視角,你會突然發現,誒,原來這個還能這麼做啊!而且我們的這個行業,有一個跟所有行業不一樣的特性,就是他的發展速度是非常快的,如果我們跟不上,我們就會out掉,就打比方說,人家會新技術,單服承載十幾萬壓力,而你的過時技術,單服只能承載幾千壓力,那用人單位又不傻,單服承載越多當然越為公司省錢啊,那你直接就被out了。時刻保持警惕,任何一個新技術,都可能成為今後的主流,不要活在自己的固化思維裡。回頭看看整個2016年,不知道github上又湧現出了多少的優秀的開源框架,阿里網易這樣大廠又開源了多少它們的元件,這些技術,或許我們不能都掌握,但我們一定要去了解,與時俱進,才是最重要的。

DSC00068.JPG

DSC00059.JPG

工作完成還行

前面也說到了,這一年,基本上,公司感覺快要不行了,但對我個人來說,技術的成長還是不小的,首先,當下開發的這款遊戲,我負責整個服務端,從架構,開發,到上線運維,這對我個人來說,不僅一個學習的過程,更是寶貴的經驗,這之間,爬過多少坑,都只有我自己的知道,對我以後的工作也是非常有幫助的。除了正常工作中給我的需求之外,我也學著去了解各方面的東西,也就是上文說到的與時俱進。我負責公司的遊戲服務端的工作,除了正常的需求開發,關於服務端的運維工作,肯定也是少不了的,我也必然去了解一些Linux環境下的各種操作,再比如服務端程式的一些優化也必須去掌握瞭解(前段時間讀的一本書《深入解析JVM虛擬機器的原理與實踐》,真的是重新整理了我的Java世界觀,因為我在這之前一直只會寫程式碼,並不瞭解JVM層次的原理,讀完整本書,我覺得不瞭解JVM的Java程式設計師不能叫做Java程式設計師),再然後就是要給公司的人提供一些遊戲的管理工具,比如遊戲中改改資料(當然不會瞎改的……),寫寫公告,發發獎勵什麼的,再到遊戲的開服關服的一系列工作,如果在大公司,服務端開發就只是做開發,運維是給運維同學做的,管理工具會交給做管理工具的人做的,然而小公司,只能一個人把所有的都包攬了,當然這對我個人來講,也是好事,我如今能學到這麼多東西,也得感謝公司的平臺,讓我迅速的成長,從一年前,在大公司的打雜性質的寫程式碼,到如今跳到現在這家公司到現在能包攬服務端所有工作,這些成長,都是能夠看見的。除了平時的工作,我也會經常看一些新的技術,有時也會寫一些Demo,像Node.js,Go這些服務端的語言,都有去研究,又比如今年新浪微博開源的Motan Rpc框架,我掌握之後是直接運用到公司的專案中的,因為這款框架已經經過了微博千萬併發壓力的驗證,我就可以毫不猶豫的拿過來用。如果明年我還有機會單獨負責服務端工作,或者做主要負責人,我希望可以在我的專案中引入更多先進的框架和技術,這個不是趕潮流,這是與時俱進。
今年我在工作中的成長,離不開公司給我的平臺,不是所有的人都會有單獨負責所有工作的經歷,其實這不是苦難,我反而會覺得自由,因為在這其中,在保證工作的前提下(像伺服器的穩定性,擴充套件性等),你可以用你想用的技術,寫你想寫的架構。每當我看到工作空間中,所有類檔案的頭部描述的author都是我的名字,所有的svn提交者記錄都是我的名字,就會有一種成就感,就像是一個建築師,一層一層的築起來的高樓,不知不覺,它已經聳入雲端(不管最後專案在市場效應如何,它都是我2016年最大的成果)。

深入解讀Java遊戲服務端開發

這個小標題有點特別,因為他是一本書的名字,這本書的作者,是我。這是我的第一本書,我今年花了一年的時間,最終才出版的這本書,這其中包括半年的寫作和半年的調整校稿,整個寫書的過程,讓我明白了堅持的意義,甚至說,我不認為這是堅持,我只是每天有事沒事的寫一點,但無論如何,這花費了我一年的時間來完成,不敢說是什麼大作,但確實是辛勤勞動的成果。我的這本書,是屬於技術類的書籍,在寫整本書的過程中,很多技術點,我自己都還沒整明白,我必須要自己先弄清楚,然後再用文字描述給我的讀者,這個過程,對我來說,其實也是一個學習的過程,很多東西,我都是從頭到尾自己再研究了一遍的。
這本書算是我的第一本書,內容算不上完美,也有不少小瑕疵,不過對於想要入門遊戲伺服器開發來說,還是足夠了。或許是因為後來我看了幾本書,在大作的面前,感覺到了自己的渺小,李林峰老師的《Netty權威指南》,對我來說,真的是經典,後來看的《深入解讀JVM虛擬機器》那本書,也是一部神作,還有來自國外的《Java效能優化指南》的翻譯版本,以及騰訊GAD出品的系列叢書,以上每一本,都是內容非常豐富,也非常值得一看的。我不能否認我自己一整年的辛勤勞動成果,但也不能絕對偏袒它裡面的內容,跟很多大作來比,確實是由很多不足之處。鑑於以上幾點,加之我16年參與了Cocos CVP的課程,我決定在2017年,結合我在Cocos2d-JS領域的技術探索,再寫一本,基於Cocos2d-JS實戰的書,從專案結合來講一下游戲開發。因為我本身不從事遊戲客戶端開發,所以我覺得這對我來說,也算是一個挑戰,所以2017年的第一個挑戰,就是這本書,多學學多看看,再通過專案實戰來進行講解(其實感覺,寫實戰程式碼,比寫理論描述,要容易得多)。
另外,《深入解讀Java遊戲伺服器開發》,在淘寶京東噹噹亞馬遜等各大網站,直接搜就有的哦。

DSC00048.JPG

DSC00056.JPG

DSC00057.JPG

DSC00060.JPG

book.png

其他

其實還有很多事沒總結完的,2016年,是看似平淡的一年,但我個人,卻感覺積攢了一年的能量,在個人的能力上,有了不少的提升。除了上文說到的工作中的進步以及寫書的成長,在整個2016年,我也完成了不少事情,總結起來,可以列舉以下幾條:
1.用近一年時間完成《深入解讀Java遊戲伺服器》一書
2.複習近半年時間並參加資訊保安工程師考試(上午科目過了,下午沒過,不過也算盡力,不枉此行,來年繼續!)
3.學習Cocos CVP課程(課程還沒出完),基本掌握Cocos2d-JS引擎
4.在Github上搭建hexo個人部落格,並已經寫了48篇博文,主要涉及Cocos2d-JS遊戲前端開發和Java遊戲後端開發
5.簽約騰訊GAD遊戲開發者社群特約撰稿人
6.獲得騰訊GAD手遊伺服器解決方案徵文比賽一等獎(據說獎金就要打過來了,有點小興奮呢)
7.用業餘時間寫了10款專案原始碼(包含一些遊戲前端原始碼,遊戲後端專案模板,框架demo等)開源在Github,填補了Github幾乎為0的記錄
當然,有好的,也有不好的事情,可以列舉以下幾條:
1.吸了一年北京霧霾
2.一年下來,幾乎沒有積蓄,每月工資也不少,但就是莫名其妙的,月底就餘額不足
3.薪資無任何提升
4.在公司努力了一年的專案,最後的市場效應很不好,遊戲付費率低的可憐
5.因第4條,公司接近倒閉,估計明年又要重新找工作了
6.政府對遊戲行業整頓,整個國內遊戲行業不景氣,造成第4,5條的影響
不管怎麼說,2016即將過去,不管是好與不好,都已成為過去,放眼2017年,做更好的自己,不談過去,只看將來!

總結2016

整個2016,在工作和技術上,我的成長還是不錯的,不過相對來說,我在生活上,卻沒什麼變化,依舊不怎麼會說話,不怎麼會處事,17年希望能夠有所改進,多瞭解社會上的交往禮節,世界不因我改變,而我,只能改變我自己。融入社會,是每個想要生活在這個社會的人必須做的事。
最後還要感謝我的家人,在16年的工作上,以及寫書的支援上,都離不開我的家人的鼓勵和支援,同時也很感謝我的女朋友,能容忍包容我的一切不好的缺點和脾氣,來陪伴我,度過我的2016,我如今的一切,都離不開你的陪伴與支援。
希望無論是生活中還是工作中,我在2017年,都能有所突破,引用小學課本的一句話,就是“逆水行舟,不進則退”!,不做井底之蛙,拒絕固步自封,放眼遠方,迎接未來!

展望2017

17年,我的心願就4條:
1. 漲工資
2. 賺錢(1如果達成了,2應該就不遠了)
3. 能出門旅遊一次,帶上父母和女朋友(在2的基礎之上)
4. 生活越來越好,賬戶餘額越來越多,存款越來越多(在2的基礎之上)

寫到最後

時間已過一點,本來想在年前就寫總結的,一直沒找到合適的時間,今天想想,不能拖了,今天一定要寫完,讓2016不留遺憾!文章結尾特地再次感謝一直陪伴我的女朋友……

DSC00088.JPG

DSC00087.JPG