LeanCloud 2019 回顧

在過去的一年裏,數萬新用戶選擇了 LeanCloud,開發者在咱們的平臺上建立了數萬新應用。儘管在 6 月遇到了一些因外部因素帶來的困難,2019 年仍然是 LeanCloud 實現總體盈利的第一年。這離不開用戶的長期支持,同時健康的財務對於爲用戶提供持續、穩定、不斷改進的服務也是相當重要的。html

在過去一年裏咱們正式推出了 LeanCloud 國際版,全面支持域名綁定,併爲對穩定性、可控性、靈活性有更高要求的用戶開發了全新的獨立部署方案。多人對戰 Client Engine 正式上線,同時爲規模較大的遊戲提供了獨立部署選項。雲引擎新增了雲隊列和 MySQL 支持。其餘服務和 SDK 也有大量改進和優化。java

國際版正式運行

爲了適應用戶的需求變化以及產品下一步的發展,讓 LeanCloud 正式成爲國際化的產品,咱們推出了 LeanCloud 國際版。 國際版使用獨立的頂級域名 leancloud.app 和帳戶體系,由 LeanCloud 的境外公司做爲主體運營,費用使用美圓結算。 咱們已經初步完成了網站、控制檯、文檔的國際化,也提供英語技術支持,讓英文環境的開發者也可使用 LeanCloud。node

全面支持域名綁定

爲了確保能長期穩定爲開發者提供服務,按照相關法律法規和有關部門的要求,咱們推進了使用 LeanCloud 服務的應用綁定自有域名。 綁定自有域名也有利於從域名層面作好應用隔離,確保業務穩定。 爲了保證安全性,API 域名必須啓用 SSL(雲引擎域名、文件域名推薦啓用 SSL),咱們也推出了自動管理功能,支持 SSL 證書的自動申請和自動續期。mysql

存儲服務

全新獨立部署方案

爲了知足衆多企業客戶對平臺穩定性、後端可控性以及功能多樣性方面的要求,咱們推出了新的獨立部署方案,但願減小使用中的限制,給開發者更大的靈活性,同時也提供一個更加穩定可靠的完整後端,知足業務系統的更高要求。android

新的獨立部署方案裏,咱們會使用「獨立的存儲集羣 + 獨立的 API 集羣 + 獨立的擴展服務集羣」的模式來構建一個完整的、物理隔離的公有云系統,供單個用戶和應用獨享使用。 這裏的「擴展服務」是指基於存儲到雲端的結構化數據,解決特定業務需求的垂直服務,例如並行計算(原離線分析功能)、全文檢索(原應用內搜索功能)等。git

新的 API Server 是徹底從新開發的,咱們針對單應用獨立部署的使用場景進行了功能裁剪和架構優化,取消了共享集羣方式下的一些請求限制(例如數據導入導出、併發線程上限等),增長了更多數據處理接口(例如提供了索引操做和聚合查詢的 REST API),同時還有更好的併發處理性能和彈性伸縮能力。github

雲引擎

雲隊列

咱們推出了雲隊列服務。雲隊列提供了一種在雲引擎以外調度雲函數的能力,它基於雲引擎已有的「雲函數」這個概念實現了重試、去重、結果查詢、延時任務、定時任務等功能,是對雲函數功能的一個補充。還沒有運行的任務會以一種可靠的方式暫存在雲隊列,即便你的雲引擎因部署、過載、崩潰而重啓,任務也不會丟失,雲隊列會等待你的雲引擎實例恢復正常後繼續運行它們。咱們也基於雲隊列從新實現了定時任務,它兼容以前的絕大部分用法,並支持以 JSON 形式向雲函數傳遞自定義的參數,以及配置在超時狀況下的行爲(重試或放棄)。對了,咱們還移除了定時任務的個數限制。sql

MySQL

咱們在華北節點推出了高可用、高性價比的 MySQL 數據庫託管方案
開發者能夠在雲引擎中使用通用的 MySQL 客戶端類庫,訪問完整的 MySQL 功能。數據庫

其餘

雲引擎統計結果展現也進行了優化,如今開發者能夠在控制檯按照總覽、網站託管請求以及單個雲函數來分別查看請求數(按分鐘聚合)和響應時間的變化趨勢,還能夠看到總體的 CPU、內存以及流量消耗,但願在程序運行情況和代碼優化上給你們提供更多參考信息。編程

雲引擎命令行工具也發佈了 0.21.0 版,修復了一些 bug,也支持指定 --prod 參數直接部署到生產環境,以及本地調試靜態網站項目。

雲引擎 Java 環境支持指定 Java 版本,開發者能夠選用 Java 八、十一、十二、1三、14 來開發項目。

雲引擎 Node.js 環境新增了 internal 選項,用來禁止在客戶端調用雲函數。
咱們還推出了一個經常使用功能和示例彙總代碼倉庫,其中包括推薦的最佳實踐和經常使用的代碼片斷,每一個文件中都有較爲詳細的註釋,適合雲引擎的開發者閱讀、參考,也能夠將代碼片斷複製到你的項目中使用。

推送和即時通信

Android 混合推送現已支持 vivooppo小米推送國際版,能夠覆蓋更多終端用戶。

咱們還對即時通信和推送服務作了一些其餘改進和優化,以便爲開發者提供更穩定的服務、更靈活的功能:

  • 即時通信新增了客戶端上下線 hook 支持,在客戶端登陸成功、登出成功、意外下線後調用。
  • 經過 SDK 新建對話默認啓用 unique 參數,更貼合大多數應用的使用場景。
  • 經過 REST API 發送消息如今也支持提醒用戶(mention_allmention_client_ids 參數)了。
  • 即時通信的離線推送記錄如今也加入到推送歷史記錄裏面,能夠在控制檯一併查看。
  • 推送服務如今支持直接指定設備 ID 進行推送,比經過查詢條件推送更快,延遲更低。
  • 開發者如今能對推送時間和推送速度(flow_control 參數)進行更精細的控制。

遊戲解決方案

爲了更好服務較大規模的遊戲開發者,咱們推出了多人對戰 GameServer 的獨立部署版本。獨立部署的後端服務節點(集羣),讓業務徹底獨享全部的物理資源,以便給開發者帶來更好的穩定性和靈活度。

相比於共享集羣模式,獨立部署的 GameServer 有以下優點:

  • 支持經過 hook 函數 的方式來編寫服務端邏輯,業務擴展代碼與 GameServer 在同一個進程內運行,與 Client Engine 方式相比在實時性上有顯著提高。
  • 取消了部分使用限制,例如房間最大人數、最大消息下發頻率、消息體大小限制等,在硬件能力許可範圍內儘量知足業務需求。
  • 對資源獨佔使用,支持自動擴容。

此外,遊戲解決方案迎來了如下改進:

  • Client Engine 在完善底層架構、使用框架、文檔以後,發佈了正式版。
  • 排行榜加強了防做弊的策略,只放行可信環境的數據更新請求,避免被惡意刷榜。
  • 優化了遊戲 SDK,簡化了進入遊戲大廳的邏輯,而且將消息序列化協議所有切換到 Protocol Buffers,進一步下降客戶端的網絡流量和傳輸延時。

控制檯和官網

咱們對控制檯進行了改版,目前存儲服務部分已經完成並上線。新版本的控制檯,咱們將存儲相關的功能(如 LiveQuery、離線分析和應用內搜索)合併到了一塊兒,對普通的結構化數據存儲、文件、用戶系統進行了拆分,而且將數據展現與權限設置、索引和性能優化等內容集中起來,但願控制檯邏輯更清晰,能夠給開發者帶來便利。上文提到的雲引擎統計結果展現界面的改進,就是基於新版控制檯從新實現的。

此外,控制檯新增了激活歸檔應用和註銷帳號功能,我的實名認證也切換到了基於支付寶客戶端的方案。咱們也從新設計了官網的價格頁面,更加清晰、全面地展現各項服務的價格方案。

SDK

2019 年各 SDK 也發佈了很多新版本,除了跟進上文提到的各服務的新功能外,主要還有如下改進:

Java

新推出的統一的 Java SDK 正式取代舊版的 Java SDK 和 Android SDK。
新版的 SDK 全面採用了 Reactive 編程風格,同時也兼容老的 Callback 方式。在 Android 平臺上,新版 SDK 切換到了 AndroidX。

對於開發者擔憂的 Android 應用在客戶端暴露 appKey 可能帶來的潛在風險,咱們如今容許應用程序只經過 appId 來完成 LeanCloud 服務初始化,從而避免了暴露應用核心配置信息的風險。

有些只使用推送服務的客戶但願優化產品移動端體驗,咱們爲此專門推出了精簡版推送 SDK,顯著優化了安裝包大小(1.2 MB -> 180 KB)和啓動時間(59 ms -> 5 ms)。

Swift & Objective C

Swift SDK 增長了對即時通信、推送、雲函數調用的支持,並完善告終構化存儲方面的功能,在功能上基本對齊了 Android、Web 平臺的 SDK。
有許多 iOS 平臺的開發者已經從 Objective C SDK 遷移到 Swift SDK, 還有一些新應用直接基於 Swift SDK 開發。

Swift 語言的演進十分迅捷(swift),Swift SDK 一樣如此,現已支持 Swift 5 和 Swift Package Manager。

Objective C SDK 也增長了一些功能,修復了許多 bug。

另外,爲了精簡代碼和集中資源,Swift SDK 再也不支持 iOS 10 以前的系統,Objective C SDK 再也不支持 iOS 8 以前的系統。

JavaScript

JavaScript SDK 的主要改進有:

  • 小程序用戶系統增長了 UnionId 支持。
  • 增長了手動啓用、停用調試模式的開關:debug.enable()debug.disable()
  • AV.File#save 方法增長了 keepFileName 參數容許保留文件的文件名。
  • 增長了 AV.Object#revert 方法撤銷部分或所有修改了但未保存(save)的改動。
  • MESSAGE_UPDATEMESSAGE_RECALL 事件如今會額外返回一個 reason 參數來指示修改、撤回的緣由(若是有的話)。
  • 修復和完善了大量 TypeScript 定義。

C Sharp

C# SDK 的主要改進有:

  • 簡化、統一 portable 和 Unity 初始化方式,如今只須要在代碼中初始化,不須要在 Unity Editor 拖拽和設置。
  • 增長消息撤回/修改功能。

結語

在這一年裏,許多用戶經過工單、論壇、郵件等各類渠道向咱們反饋問題和意見,也有用戶向咱們開源的 SDK 提交代碼。上面提到的不少新功能、改進、優化都源於用戶的反饋。感謝你們的幫助和信賴,咱們期待在新的一年裏爲用戶提供更好的產品和服務。

本文參與了 SegmentFault思否徵文「2019 總結」,歡迎正在閱讀的你也加入。
相關文章
相關標籤/搜索