做者:韓偉
PaaS做爲「雲」的概念,已經流行了好久。從使用的角度上看,彷佛就是:寫一個PHP,而後能夠直接傳到服務器上,用戶就能經過某個URL訪問你寫的PHP了。——這確實極大的節省了開發和運維的工做量,由於這幾乎徹底不用去部署安裝任何服務器端的軟件,甚至數據庫也給你裝好了。可是由於各類各樣的緣由,在國內PaaS的使用並不很是普遍,有多是由於沒有好的服務提供商(因爲偉大牆的緣由致使某些服務沒法訪問)。另外,做爲一個遊戲服務器端的開發者,也在試圖從PaaS的概念中,學習如何提升遊戲開發、運營效率的方法。因此就有了如下的研究。數據庫
本文主要的研究對象是Google出品的App Engine,以及Amazone的AWS兩個產品。實際上微軟、IBM也有相似的PaaS(Azure),因爲時間精力緣由只是粗粗瀏覽,並未深刻。另外國內如阿里雲也有一些近似PaaS的服務,但因爲名氣不大,也不在這裏描述了。編程
做爲一個PaaS,咱們能夠注意到,主要會分紅幾個層面來看,能比較準確的把握其特性。不然紛繁的技術名詞,各類支持方案,會讓人眼花繚亂。這幾個層面就是:後端
應用場景緩存
Google本身的Web服務,是具有一整套「基礎設施」的,包括Web應用(如PHP)的運行框架、BigTable、GFS等等廣爲人知的服務器端軟件。因此Google App Engine的設計目標,就是讓用戶能夠很方便的使用這一整套「基礎設施」。從某種意義上來講,爲了使用Google的配套服務,可能會比託管運行本身的Web應用程序,更吸引人。Google的基礎設施,通常都是以「分佈式」爲賣點,提供超大承載量,和高度可用性。若是要本身去重建這一整套體系,對於通常的公司來講都幾乎是不可能的。但實際上真正須要用到這麼大的承載量,也極可能不是「通常的公司」。不過慕名而來的使用者,在Google的保證下得到信心上的安慰,也是一種重要的價值。服務器
Google不愧是以技術著稱的公司,其運行容器,支持Python\Java\PHP\Go等等幾乎全部主流的編程語言,及這些編程語言在Web應用程序方面的標準框架,如Servlet for Java。看到這裏,不由嘆息於,遊戲領域並無什麼「應用框架標準」——因此遊戲服務器程序的模型真是五花八門無奇不有,這也讓遊戲服務的提供變得異常繁複困難。微信
GAE提供的開發工具,能夠幫助開發者很方便的測試和部署代碼到PaaS上。這些開發工具包括一套結合Eclipse的IDE插件,以及一組命令上傳部署工具。用戶可使用這些工具,好像開發測試本地程序同樣來使用。固然使用以前仍是須要配置本身在GAE上的賬號之類的參數。網絡
GAE另一個頗有特點(也許是缺點)的地方,就是開發者只能在「沙箱」裏運行本身的程序,所以你不能用到代碼去操做socket、本地文件、線程等等「原生資源」。由於有這樣的約束,因此開發者上傳的APP能夠被認爲是「無損」的自動部署到不一樣的硬件、網絡環境上。同時,GAE也提供了大量的配套服務,用來補償沙箱環境帶來的功能缺失。app
GAE的運維管理從代碼部署開始就是全套的。首先是支持從Maven這類代碼管理庫拉取程序部署,其次是能夠部署到Google提供的全球機房,期間提供自動擴容和負載均衡。其中比較值得注意的是,它的運維環境還支持負載灰度和資源配額,也就是能夠設置各類參數,來限制緩存空間、實例數、最大線程數、存儲空間、使用帶寬等等。這些配額並非簡單的基於IaaS的功能繼承而來,而是能夠針對應用容器,或者各類配套服務爲目標來設置。負載均衡
GAE另一個很棒的功能是所謂GoogleAnalytics功能。幾乎全部雲服務商都會帶統計功能,可是Google Anlytics由於是針對GAE這種全託管沙箱服務作統計分析的,因此能夠得到不少具體的服務統計的細節指標,而不只僅是操做系統層次的CPU、內存、帶寬這種大路貨。咱們本身部署任何一個服務,對於特定的服務進程,也會想要詳盡的統計分析數據,用以監控問題,若是是用GAE,這些服務都是Google提供的,固然統計也是它的應盡職責。框架
做爲一個Web App的容器,GAE在運維配置工具上,提供了全套Web界面的操做軟件——Google Cloud Platform Console,能夠配置諸如URL、靜態資源、MIME類型、根目錄、SSL等幾乎全部WebServer的配置內容。用了多年的Web Server配置文件終於能夠束之高閣了。固然其餘的管理服務,也都提供了WEB的配置管理工具。若是你不想手工的去配置這些,也可使用GAE提供的Restful接口,去用代碼操做這些服務配置,這樣你能夠本身寫一個喜歡的管理軟件,或者是寫個自動化的工具去作這類的配置工做。
GAE提供的配套服務,都是那些大名鼎鼎的Google系基礎服務,分爲兩大類型,數十種細類:
從上面來看,最值得關注就是存儲類服務,畢竟Google是處理大數據的互聯網鼻祖。因爲通常的商業互聯網服務,都很依賴一個容量大、方便擴容的數據存儲層,因此Google這套東西是很是有價值的。惋惜做爲遊戲領域,數據大卻是大,就是其數據關係通常比較簡單,就是玩家的存檔數據而已,因此遊戲開發商若是用這些BigTable、GFS爲基礎的服務,從延遲性和成本上看,好像都不是特別有必要。
另外從輔助服務來看,細節到連crontab都提供,更不用說各類服務器開發庫,只有你想不到,沒有他沒準備到的。這對於開發者來講是一個很方便的地方,由於一來不須要處處找各類開源庫,二來也無需費口舌去和同事統一各類開發庫,只須要用GAE的就行了。
本文來源於 韓大微信公衆號