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 总结」,欢迎正在阅读的你也加入。
相关文章
相关标签/搜索