手游開(kāi)發(fā)如何選擇后端服務(wù)

【 玩轉(zhuǎn) LeanCloud 】開(kāi)發(fā)者經(jīng)驗(yàn)分享:
作者:趙天澤

作為一個(gè)通過(guò) LeanCloud 入門后端開(kāi)發(fā)的小白系冗,一年多的開(kāi)發(fā)歷程讓我收獲滿滿纪挎。多個(gè)項(xiàng)目也在 LeanCloud 可靠的服務(wù)支撐下取得了不錯(cuò)的發(fā)展玻募,其中用戶量最大的項(xiàng)目的云引擎每分鐘請(qǐng)求量在1.2W 次左右熄云,每日調(diào)用存儲(chǔ)服務(wù) API 在 300W+ 次葫录。在此過(guò)程中剧董,我不僅得到了 LeanCloud 各路技術(shù)大俠的指點(diǎn)兔仰,得以提高數(shù)據(jù)可靠性并優(yōu)化了邏輯執(zhí)行效率茫负,而且 LeanCloud 的高可用性和對(duì)突發(fā)異常處理的高效也讓我對(duì)運(yùn)維工作和服務(wù)穩(wěn)定性沒(méi)有絲毫的顧慮;再加上簡(jiǎn)潔好用斋陪、響應(yīng)及時(shí)的工單系統(tǒng)朽褪,可以這么說(shuō),我的工作由此變得美好愜意无虚。

海外節(jié)點(diǎn)和高效的技術(shù)支持是 LeanCloud 最大的優(yōu)勢(shì)

其實(shí)使用 LeanCloud 之前缔赠,我一直在做 iOS 應(yīng)用和手游客戶端開(kāi)發(fā),沒(méi)有半點(diǎn)后端開(kāi)發(fā)的經(jīng)驗(yàn)友题,也未曾碰過(guò) JavaScript嗤堰,直到后來(lái)參與過(guò)幾款網(wǎng)游的開(kāi)發(fā),才對(duì)游戲后端大概的架構(gòu)和接口設(shè)計(jì)有所了解。接著我們的項(xiàng)目需要為單機(jī)游戲增加網(wǎng)絡(luò)存檔和每日任務(wù)分發(fā)功能踢匣,可我們一位后端程序員也沒(méi)有告匠,而且也不具備從頭搭建和部署一套可靠的后臺(tái)服務(wù)的能力,所以可行的方案就是找到一套現(xiàn)成的第三方服務(wù)离唬。當(dāng)時(shí)國(guó)內(nèi)國(guó)外也有不少的后端服務(wù)提供商后专,最終敲定 LeanCloud 主要是考慮到:

  1. 成熟穩(wěn)定的海外節(jié)點(diǎn)和配套服務(wù)。我們的游戲主要是在海外推廣输莺,雖然海外有不少專門針對(duì)游戲的后端云服務(wù)戚哎,但是實(shí)際使用下來(lái)發(fā)現(xiàn)它們的開(kāi)發(fā)自由度并不高,達(dá)不到我們的標(biāo)準(zhǔn)嫂用。

  2. 與技術(shù)支持人員的溝通效率型凳。大多的海外服務(wù)商只能通過(guò)郵件或者論壇溝通,效率十分低下嘱函,真要是遇到了問(wèn)題遲遲不能解決就會(huì)非常麻煩甘畅。而 LeanCloud 技術(shù)支持的響應(yīng)非常之快,即使最初大家只在 QQ 群里溝通還沒(méi)有使用工單系統(tǒng)往弓,所有回復(fù)都不拖沓疏唾,使用者當(dāng)然高興啦。

  3. 清晰詳實(shí)的技術(shù)文檔函似。LeanCloud 提供的文檔相比其他服務(wù)商也更加詳實(shí)荸实,分類比較清晰,非常適合入門學(xué)習(xí)缴淋。

另外,我們還特地調(diào)研了 LeanCloud 的云引擎服務(wù)泄朴,因?yàn)槠涮峁┩暾?jiǎn)便的后臺(tái)部署途徑和工具重抖,實(shí)現(xiàn)線上環(huán)境的一鍵部署,又能讓我們基于 express 任性地開(kāi)發(fā)后臺(tái)邏輯祖灰,所以我們確信 LeanCloud 是最最棒的選擇钟沛。

REST API + 云函數(shù)是萬(wàn)金油

為實(shí)現(xiàn)用戶游戲數(shù)據(jù)存儲(chǔ)和每日任務(wù)分發(fā),我們最先用了存儲(chǔ)服務(wù)和云引擎局扶。不過(guò)我們并沒(méi)有用 LeanCloud 提供的 SDK 來(lái)直接調(diào)用存儲(chǔ)服務(wù)恨统,而是選擇用 LeanCloud REST API 調(diào)用云引擎里面的云函數(shù),然后通過(guò)云函數(shù)調(diào)用存儲(chǔ)服務(wù)來(lái)實(shí)現(xiàn)相應(yīng)的邏輯三妈。這樣做的原因是我們的游戲主要是使用 lua + C++ 開(kāi)發(fā)畜埋,LeanCloud 的 C++ SDK 沒(méi)有持續(xù)維護(hù),使用起來(lái)會(huì)有潛在風(fēng)險(xiǎn)畴蒲;而如果使用 iOS 和 Android SDK悠鞍,又得把需要使用的接口暴露給腳本層,這就多了一道不必要的程序模燥】Ъ溃基于以往開(kāi)發(fā)網(wǎng)游的經(jīng)驗(yàn)掩宜,我們更傾向于按功能模塊向前端提供相關(guān)的 API,讓前端通過(guò) HTTP 協(xié)議將數(shù)據(jù) post 給服務(wù)器么翰,服務(wù)器處理完后返回前端需要更新的那部分?jǐn)?shù)據(jù)就好牺汤。

實(shí)踐下來(lái)我們發(fā)現(xiàn)這樣做的確有優(yōu)勢(shì),把數(shù)據(jù)查詢浩嫌、處理和存儲(chǔ)的邏輯放在后端進(jìn)行檐迟,這樣業(yè)務(wù)的調(diào)整可以變得非常靈活。比如在用戶量起來(lái)之后固该,發(fā)現(xiàn)每日任務(wù)表會(huì)有大量的讀寫(xiě)操作锅减,根據(jù) LeanCloud 技術(shù)支持的建議,我們將一些熱數(shù)據(jù)放到云引擎的緩存服務(wù) LeanCache 中使用伐坏,也就是先去緩存里面查數(shù)據(jù)怔匣,沒(méi)有的話再去存儲(chǔ)服務(wù)里面查,這樣就有效地降低了查詢的時(shí)間桦沉,提高了業(yè)務(wù)處理的效率每瞒,而前端代碼啥都不用變。

云緩存速度快得沒(méi)商量

要單獨(dú)說(shuō)一下云緩存 LeanCache纯露。它實(shí)質(zhì)上就是 Redis剿骨,對(duì)于改善和提升我們項(xiàng)目性能功不可沒(méi)。當(dāng)初我們需要做一個(gè)全區(qū)排行榜埠褪,正好 LeanCache 的官方 Demo 中提供了排行榜的示例代碼(幫我補(bǔ)上了什么是原子性這一課浓利,必須膜拜),于是我們?cè)诖嘶A(chǔ)上實(shí)現(xiàn)了自己的排行榜功能钞速,并把它放在 npm 上方便大家取用「leaderboard-promise」贷掖。接著我們還陸續(xù)在云緩存中實(shí)現(xiàn)了熱數(shù)據(jù)緩存、訂單系統(tǒng)渴语、token 驗(yàn)證系統(tǒng)等等功能苹威,充分去利用 Redis 的優(yōu)勢(shì)來(lái)解決業(yè)務(wù)中可能引起性能瓶頸的情況。

跨時(shí)區(qū)定時(shí)推送通知

我們的用戶來(lái)自全球各地驾凶,有不同的時(shí)區(qū)牙甫,我們需要讓所有用戶在當(dāng)?shù)貢r(shí)間的下午 7 點(diǎn)收到一條通知。通過(guò)云引擎和消息推送服務(wù)调违,我們只需要在每個(gè) installation 對(duì)象下新增一個(gè)用戶的時(shí)區(qū)數(shù)據(jù)窟哺,然后在云引擎中設(shè)置一個(gè)每個(gè)整點(diǎn)觸發(fā)的定時(shí)任務(wù),當(dāng)任務(wù)觸發(fā)時(shí)在推送條件里面設(shè)置對(duì)應(yīng)的時(shí)區(qū)信息翰萨,這樣就達(dá)到了我們的目的脏答。另外通過(guò)云引擎實(shí)現(xiàn)向特定用戶群推送也非常方便。

實(shí)時(shí)對(duì)戰(zhàn)玩法 500 行代碼搞定

最近我們的新項(xiàng)目希望能夠盡快實(shí)現(xiàn)可靠的房間制實(shí)時(shí)對(duì)戰(zhàn)玩法,以便能夠快速投放到市場(chǎng)去驗(yàn)證玩法是否受到玩家歡迎殖告。如果在用戶認(rèn)可之前就耗時(shí)耗力去開(kāi)發(fā)一套實(shí)時(shí)對(duì)戰(zhàn)框架顯然不太明智阿蝶。于是我們向 LeanCloud 求助,竟然很快地得到了一套基于實(shí)時(shí)通信模塊的開(kāi)發(fā)建議黄绩,這樣通過(guò)云引擎搭配實(shí)時(shí)通信模塊羡洁,用了不到 500 行代碼就把一套房間匹配制的實(shí)時(shí)對(duì)戰(zhàn)框架搭建完畢,后續(xù)只需要集合項(xiàng)目中游戲的實(shí)際玩法就可以很快部署上線了爽丹。原以為要洪荒之力筑煮,卻只費(fèi)了吹灰之力,幸福感那是瞬間爆棚粤蝎。

技術(shù)課程直播大長(zhǎng)見(jiàn)識(shí)

我們要特別贊美一下 LeanCloud 一直堅(jiān)持在做的直播課程系列真仲。所有課程不僅涉及到了 LeanCloud 各個(gè)功能的基本使用介紹,還講解了后端開(kāi)發(fā)中常常需要去面對(duì)的問(wèn)題初澎,像如何對(duì)壓力評(píng)估和優(yōu)化秸应、如何設(shè)計(jì)業(yè)務(wù)流程來(lái)保證數(shù)據(jù)的一致性、如何通過(guò)權(quán)限控制保障數(shù)據(jù)的安全碑宴。這些內(nèi)容對(duì)于即使不使用 LeanCloud 服務(wù)的后端開(kāi)發(fā)人員都是十分有用的软啼。

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

  • 想學(xué)習(xí)后端開(kāi)發(fā)延柠,但是卻被復(fù)雜的云服務(wù)器采購(gòu)祸挪、架設(shè)和配置嚇住的同學(xué)。 LeanCloud 有非常高效的開(kāi)發(fā)配套工具贞间,可以快速在本地和云端實(shí)現(xiàn)需要的業(yè)務(wù)邏輯贿条。看著自己的項(xiàng)目上線運(yùn)轉(zhuǎn)起來(lái)的成就感一定會(huì)激勵(lì)你繼續(xù)深入的學(xué)習(xí)增热,以 LeanCloud 為起點(diǎn)闪唆,慢慢的完善的后端開(kāi)發(fā)知識(shí)體系。

  • 另外一種就是雖然有足夠的后端開(kāi)發(fā)經(jīng)驗(yàn)钓葫、但目前著手于初創(chuàng)項(xiàng)目并沒(méi)有完善的運(yùn)維團(tuán)隊(duì)支持的同學(xué)。眾所周知票顾,要建立起一套完善的運(yùn)維保障體系是一件需要投入不少資源的事情础浮,初創(chuàng)項(xiàng)目應(yīng)該把更多的精力投入到實(shí)際的業(yè)務(wù)邏輯開(kāi)發(fā)上面,運(yùn)維這樣的麻煩事兒就完全可以交給 LeanCloud 吧奠骄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豆同,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子含鳞,更是在濱河造成了極大的恐慌影锈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸭廷,居然都是意外死亡枣抱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門辆床,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)佳晶,“玉大人,你說(shuō)我怎么就攤上這事讼载〗窝恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵咨堤,是天一觀的道長(zhǎng)菇篡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)一喘,這世上最難降的妖魔是什么驱还? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮津滞,結(jié)果婚禮上铝侵,老公的妹妹穿的比我還像新娘。我一直安慰自己触徐,他們只是感情好咪鲜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著撞鹉,像睡著了一般疟丙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸟雏,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天享郊,我揣著相機(jī)與錄音,去河邊找鬼孝鹊。 笑死炊琉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的又活。 我是一名探鬼主播苔咪,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柳骄!你這毒婦竟也來(lái)了团赏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耐薯,失蹤者是張志新(化名)和其女友劉穎舔清,沒(méi)想到半個(gè)月后丝里,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡体谒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年杯聚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片营密。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡械媒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出评汰,到底是詐尸還是另有隱情纷捞,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布被去,位于F島的核電站主儡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惨缆。R本人自食惡果不足惜糜值,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坯墨。 院中可真熱鬧寂汇,春花似錦、人聲如沸捣染。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耍攘。三九已至榕栏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕾各,已是汗流浹背扒磁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留式曲,地道東北人妨托。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吝羞,于是被迫代替她去往敵國(guó)和親始鱼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容