天天看點

2016年終工作總結

今天是2016年的最後一天了,回想起這一年的工作,有成長與快樂,也有自己不滿意的地方,趁着今天是2016年的最後一天,好好回顧下這一年到底做了些什麼

2016年的工作主要是圍繞營運背景的開發來展開,營運背景開發分為三塊:web開發,日志實時擷取,日志資料統計.就這三方面來總結下自己的工作。

年初的時候就設想要把這個背景往大資料方向去做,年初的時候就開始調研storm實時日志處理架構,到三月份完成開發測試,4月份部署到頁遊海外平台,真正實作了實時擷取遊戲的日志資料。起初的架構設計是logstash+redis+storm,采用redis主要為了兼顧之前的遺留系統,最早擷取日志的方式是通過openresty架構定時從redis中擷取,考慮到redis畢竟是記憶體級别的消息隊列,碰到斷電等極端情況可能會存在丢失資料的可能性。不過在storm部署上線後發現了storm和redis的程序cpu使用率會會達到40%,略微有點高,從上線後開始陸陸續續開始調研kafka這種分布式消息隊列,經過上線測試,storm和kafka的cpu負載馬上降到了10%左右,原因應該是redis是單程序的,采用epoll方式運作,不能很好的應對storm這種高密度的請求方式。至此,實時處理平台已經切換成了logstash+kafka+storm,目前這套架構是業界的主流處理架構,可以輕松實作分布式擴充,應對業務的擴充。

資料統計方面,起初的設計是起一個定時腳本去定時統計,随着業務的增長和統計名額的增加,統計完一次需要的時間越來越長,之前一直通過合并遊戲服和删去部分不需要的統計名額來壓縮統計時間,到8月份的時候自己抽出時間來調研大資料統計架構spark,前期準備花了挺長時間的,要自學Scala語言以及部署spark跑個例子測試。真正的開發是從11月份開始的,期間也碰見很多的問題,比如spark程式設計的基本元素是RDD,自己在寫代碼的時候總是或多或少的還是用Scala去做循環而忘了RDD可以輕松實作一些map和reduce的操作,不過遺憾的是到今天為止spark統計還沒完全寫完,預計一月份能完成吧,畢竟要實作的統計名額确實比較多。

web開發方面:今年開始逐漸轉入openresty架構,之前的架構雖說是nginx+lua的,但是真正進行web開發來說還是有很多的限制,而openresty社群有很多封裝好的第三方庫可以借用,而且執行效率都比自己開發的要高,何樂而不為呢,另外自己也關注了openresty讨論組,出現問題的自己解決不了的時候也會發郵件到讨論組裡面問,也會回郵件幫别人解決問題,這也許就是開源社群強大的魅力吧,哈哈,現在我每天早上上班都會去檢視郵件讨論組看有沒有自己感興趣的話題。回到正題,openresty這個架構确實非常強大,本身就是借用了nginx的epoll模型進行開發,可以輕松應對高并發的挑戰,今年我們公司的遊戲業務單日通路量可以達到500w,毫無壓力。說到openresty這裡個人感覺比較遺憾的就是今年一直想去看nginx的源碼,進而更好的能了解openresty架構,但是一直沒看,要麼是沒時間要麼是偷懶去了,年初的目标我就設想2016年我要深入了解一下nginx的代碼結構。可惜這一項我沒有做好。

總結下今年的工作,值得讓我滿意的地方是終于進入到大資料領域,并且将其投入實踐,取得了非常好的效果。另外投身了開源社群,感受了開源項目的魅力,真是那種 衆人拾柴火焰高的感覺,感謝openresty。做的不滿意的地方,感覺自己的學習能力還是不夠強,年初定好的要好好看下nginx源碼的目标沒有實作

給自己定一個2017年的目标吧: 1.繼續投身大資料領域,完成spark項目,同時優化storm+kafka 2.彌補去年的遺憾,深入了解下nginx的源碼 3.繼續投身openresty

繼續閱讀