標籤:
[info:文章出自個人網站 www.wilson-loo.com] 遊戲伺服器架構與互連網產品的認識
我以前進入要玩,其實很大一部分工作還是在提升c++的編程技能、多進程通訊、遊戲邏輯 這幾方面的學習研究;整個人的視野和思維還定位於程式開發 和 程式設計;說的簡單點,就是如何將一個程式碼寫好,沒有機會、時間和精力 擴寬認知視野和深度。 離職後,接觸了遊戲開發和互連網 兩大領域的面試。在遊戲開發方面,會更多涉及伺服器架構,也就是端遊的架構啊,加一些指令碼啊,用一些現成的架構;還好,主要能夠知曉資料流的處理即可,很大的一個原因是,面試公司一般都有自己的一套架構,進入後熟悉下就能上手,剩下的各種時間,就是堆邏輯、堆功能;另外,一般的遊戲公司受於投資的壓力,會趨向於快速開發成本,很少有研究性的態度 -- 像我以前的一些遊戲公司,直接要求玩家人數累積達到一千人、不論是否活躍,就開新服,我們coders 哪有激情澎湃去深造 -- 也許這也是造成我在更高層面的成長較薄,累積的知識商務邏輯經驗 -- 不過,一步一個腳印兒,至少要能增值。 另外是大型互連網公司,也主要問架構,但都會涉及容災、擴充機制。我能答上的,就是一個世界伺服器 全權掌管各個情境伺服器的生死;但是萬一這個單點的世界伺服器宕了呢?情境伺服器又如何維護玩家資料的試試有效性呢(例如定期存檔)等等,雖然現在有很多解決方案,但當時面試時,只能忽悠。 後來一段時間的研究才發現, 其實遊戲伺服器架構,也是分布式的一種,只是一直我視野較窄:現在才知道 redis、nginx 在遊戲開發方面的好處,無論是架構還是 coding 複雜度,要是早前我只會覺得,nginx就是開發網站用的嘛,跟遊戲有什麼關係;也知道 為什麼以前會有人用 php、java寫遊戲伺服器,當然如今我開始選擇 golang 了;更重要的是,memcached、hadoop、openstack、redis 都已經提供了很好的分布式、大資料、負載平衡方面的解決方案,此前公司和自己都只是在造輪子。 我的想法是,如果還是做遊戲開發,那也要在心態認知上,將它作為互連網產品來做,很多實現可參考現成的解決方案,而非僅僅是做遊戲。
遊戲伺服器架構與互連網產品的認識