手遊開發如何選擇後端服務

【 玩轉 LeanCloud 】開發者投稿分享:前端

做者:趙天澤程序員

做爲一個經過 LeanCloud 入門後端開發的小白,一年多的開發歷程讓我收穫滿滿。多個項目也在 LeanCloud 可靠的服務支撐下取得了不錯的發展,其中用戶量最大的項目的雲引擎每分鐘請求量在1.2W 次左右,每日調用存儲服務 API 在 300W+ 次。在此過程當中,我不只獲得了 LeanCloud 各路技術大俠的指點,得以提升數據可靠性並優化了邏輯執行效率,並且 LeanCloud 的高可用性和對突發異常處理的高效也讓我對運維工做和服務穩定性沒有絲毫的顧慮;再加上簡潔好用、響應及時的工單系統,能夠這麼說,個人工做由此變得美好愜意。express

海外節點和高效的技術支持是 LeanCloud 最大的優點

其實使用 LeanCloud 以前,我一直在作 iOS 應用和手遊客戶端開發,沒有半點後端開發的經驗,也不曾碰過 JavaScript,直到後來參與過幾款網遊的開發,纔對遊戲後端大概的架構和接口設計有所瞭解。接着咱們的項目須要爲單機遊戲增長網絡存檔和每日任務分發功能,可咱們一位後端程序員也沒有,並且也不具有從頭搭建和部署一套可靠的後臺服務的能力,因此可行的方案就是找到一套現成的第三方服務。當時國內國外也有很多的後端服務提供商,最終敲定 LeanCloud 主要是考慮到:npm

成熟穩定的海外節點和配套服務。咱們的遊戲主要是在海外推廣,雖然海外有很多專門針對遊戲的後端雲服務,可是實際使用下來發現它們的開發自由度並不高,達不到咱們的標準。後端

與技術支持人員的溝通效率。大多的海外服務商只能經過郵件或者論壇溝通,效率十分低下,真要是遇到了問題遲遲不能解決就會很是麻煩。而 LeanCloud 技術支持的響應很是之快,即便最初你們只在 QQ 羣裏溝通尚未使用工單系統,全部回覆都不拖沓,使用者固然高興啦。promise

清晰詳實的技術文檔。LeanCloud 提供的文檔相比其餘服務商也更加詳實,分類比較清晰,很是適合入門學習。緩存

另外,咱們還特意調研了 LeanCloud 的雲引擎服務,由於其提供完整簡便的後臺部署途徑和工具,實現線上環境的一鍵部署,又能讓咱們基於 express 任性地開發後臺邏輯,因此咱們確信 LeanCloud 是最最棒的選擇。安全

REST API + 雲函數是萬金油

爲實現用戶遊戲數據存儲和每日任務分發,咱們最早用了存儲服務和雲引擎。不過咱們並無用 LeanCloud 提供的 SDK 來直接調用存儲服務,而是選擇用 LeanCloud REST API 調用雲引擎裏面的雲函數,而後經過雲函數調用存儲服務來實現相應的邏輯。這樣作的緣由是咱們的遊戲主要是使用 lua + C++ 開發,LeanCloud 的 C++ SDK 沒有持續維護,使用起來會有潛在風險;而若是使用 iOS 和 Android SDK,又得把須要使用的接口暴露給腳本層,這就多了一道沒必要要的程序。基於以往開發網遊的經驗,咱們更傾向於按功能模塊向前端提供相關的 API,讓前端經過 HTTP 協議將數據 post 給服務器,服務器處理完後返回前端須要更新的那部分數據就好。服務器

實踐下來咱們發現這樣作的確有優點,把數據查詢、處理和存儲的邏輯放在後端進行,這樣業務的調整能夠變得很是靈活。好比在用戶量起來以後,發現每日任務表會有大量的讀寫操做,根據 LeanCloud 技術支持的建議,咱們將一些熱數據放到雲引擎的緩存服務 LeanCache 中使用,也就是先去緩存裏面查數據,沒有的話再去存儲服務裏面查,這樣就有效地下降了查詢的時間,提升了業務處理的效率,而前端代碼啥都不用變。網絡

雲緩存速度快得沒商量

要單獨說一下雲緩存 LeanCache。它實質上就是 Redis,對於改善和提高咱們項目性能功不可沒。當初咱們須要作一個全區排行榜,正好 LeanCache 的官方 Demo 中提供了排行榜的示例代碼(幫我補上了什麼是原子性這一課,必須膜拜),因而咱們在此基礎上實現了本身的排行榜功能,並把它放在 npm 上方便你們取用「leaderboard-promise」。接着咱們還陸續在雲緩存中實現了熱數據緩存、訂單系統、token 驗證系統等等功能,充分去利用 Redis 的優點來解決業務中可能引發性能瓶頸的狀況。

跨時區定時推送通知

咱們的用戶來自全球各地,有不一樣的時區,咱們須要讓全部用戶在當地時間的下午 7 點收到一條通知。經過雲引擎和消息推送服務,咱們只須要在每一個 installation 對象下新增一個用戶的時區數據,而後在雲引擎中設置一個每一個整點觸發的定時任務,當任務觸發時在推送條件裏面設置對應的時區信息,這樣就達到了咱們的目的。另外經過雲引擎實現向特定用戶羣推送也很是方便。

實時對戰玩法 500 行代碼搞定

最近咱們的新項目但願可以儘快實現可靠的房間制實時對戰玩法,以便可以快速投放到市場去驗證玩法是否受到玩家歡迎。若是在用戶承認以前就耗時耗力去開發一套實時對戰框架顯然不太明智。因而咱們向 LeanCloud 求助,居然很快地獲得了一套基於實時通訊模塊的開發建議,這樣經過雲引擎搭配實時通訊模塊,用了不到 500 行代碼就把一套房間匹配製的實時對戰框架搭建完畢,後續只須要集合項目中游戲的實際玩法就能夠很快部署上線了。原覺得要洪荒之力,卻只費了吹灰之力,幸福感那是瞬間爆棚。

技術課程直播完善

咱們要特別讚美一下 LeanCloud 一直堅持在作的直播課程系列。全部課程不只涉及到了 LeanCloud 各個功能的基本使用介紹,還講解了後端開發中經常須要去面對的問題,像如何對壓力評估和優化、如何設計業務流程來保證數據的一致性、如何經過權限控制保障數據的安全。這些內容對於即便不使用 LeanCloud 服務的後端開發人員都是十分有用的。

最後,我想把 LeanCloud 推薦給兩類人:

想學習後端開發,可是卻被複雜的雲服務器採購、架設和配置嚇住的同窗。 LeanCloud 有很是高效的開發配套工具,能夠快速在本地和雲端實現須要的業務邏輯。看着本身的項目上線運轉起來的成就感必定會激勵你繼續深刻的學習,以 LeanCloud 爲起點,慢慢的完善的後端開發知識體系。

另一種就是雖然有足夠的後端開發經驗、但目前着手於初創項目並無完善的運維團隊支持的同窗。衆所周知,要創建起一套完善的運維保障體系是一件須要投入很多資源的事情,初創項目應該把更多的精力投入到實際的業務邏輯開發上面,運維這樣的麻煩事兒就徹底能夠交給 LeanCloud 吧。

相關文章
相關標籤/搜索