在过去的一年里,数万新用户选择了 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 功能。数据库
云引擎统计结果展现也进行了优化,如今开发者能够在控制台按照总览、网站托管请求以及单个云函数来分别查看请求数(按分钟聚合)和响应时间的变化趋势,还能够看到总体的 CPU、内存以及流量消耗,但愿在程序运行情况和代码优化上给你们提供更多参考信息。编程
云引擎命令行工具也发布了 0.21.0 版,修复了一些 bug,也支持指定 --prod
参数直接部署到生产环境,以及本地调试静态网站项目。
云引擎 Java 环境支持指定 Java 版本,开发者能够选用 Java 八、十一、十二、1三、14 来开发项目。
云引擎 Node.js 环境新增了 internal
选项,用来禁止在客户端调用云函数。
咱们还推出了一个经常使用功能和示例汇总代码仓库,其中包括推荐的最佳实践和经常使用的代码片断,每一个文件中都有较为详细的注释,适合云引擎的开发者阅读、参考,也能够将代码片断复制到你的项目中使用。
Android 混合推送现已支持 vivo、oppo、小米推送国际版,能够覆盖更多终端用户。
咱们还对即时通信和推送服务作了一些其余改进和优化,以便为开发者提供更稳定的服务、更灵活的功能:
unique
参数,更贴合大多数应用的使用场景。mention_all
和 mention_client_ids
参数)了。flow_control
参数)进行更精细的控制。为了更好服务较大规模的游戏开发者,咱们推出了多人对战 GameServer 的独立部署版本。独立部署的后端服务节点(集群),让业务彻底独享全部的物理资源,以便给开发者带来更好的稳定性和灵活度。
相比于共享集群模式,独立部署的 GameServer 有以下优点:
此外,游戏解决方案迎来了如下改进:
咱们对控制台进行了改版,目前存储服务部分已经完成并上线。新版本的控制台,咱们将存储相关的功能(如 LiveQuery、离线分析和应用内搜索)合并到了一块儿,对普通的结构化数据存储、文件、用户系统进行了拆分,而且将数据展现与权限设置、索引和性能优化等内容集中起来,但愿控制台逻辑更清晰,能够给开发者带来便利。上文提到的云引擎统计结果展现界面的改进,就是基于新版控制台从新实现的。
此外,控制台新增了激活归档应用和注销帐号功能,我的实名认证也切换到了基于支付宝客户端的方案。咱们也从新设计了官网的价格页面,更加清晰、全面地展现各项服务的价格方案。
2019 年各 SDK 也发布了很多新版本,除了跟进上文提到的各服务的新功能外,主要还有如下改进:
新推出的统一的 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 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 SDK 的主要改进有:
debug.enable()
和 debug.disable()
。AV.File#save
方法增长了 keepFileName
参数容许保留文件的文件名。AV.Object#revert
方法撤销部分或所有修改了但未保存(save)的改动。MESSAGE_UPDATE
与 MESSAGE_RECALL
事件如今会额外返回一个 reason 参数来指示修改、撤回的缘由(若是有的话)。C# SDK 的主要改进有:
在这一年里,许多用户经过工单、论坛、邮件等各类渠道向咱们反馈问题和意见,也有用户向咱们开源的 SDK 提交代码。上面提到的不少新功能、改进、优化都源于用户的反馈。感谢你们的帮助和信赖,咱们期待在新的一年里为用户提供更好的产品和服务。
本文参与了 SegmentFault思否征文「2019 总结」,欢迎正在阅读的你也加入。