云引擎

云引擎可以托管开发者自己编写的网站或后端程序,部署到云引擎后,会自动进行构建和运行,并提供负载均衡、弹性扩容和日志监控,不必自己准备维护服务器。云引擎可以通过云函数、定时任务和 Hook 扩展数据存储的行为,实现那些只能在服务端完成的逻辑。

此外云引擎还提供了 Redis、MySQL 等托管数据库,开发者可以在云引擎上部署可移植的后端程序,而没有供应商锁定。

功能

云函数

把一段逻辑放到服务端运行,客户端 SDK 按名字调用,参数和返回值可以直接使用数据存储里的对象。

Hook 函数

对象被创建、更新、删除,用户注册登录,或者即时通讯收发消息时,先运行开发者的代码,用来补充校验和额外的处理。

定时任务与云队列

云函数可以按 crontab 表达式或固定间隔运行,也可以放进云队列排队执行,支持重试、去重和延时。

托管数据库

Redis 和 MySQL 由云引擎托管,主从结构,主节点失效时自动切换,应用用通常的客户端类库连接,不必自己运维。

分组与环境

一个应用可以建多个分组,各自部署代码、绑定域名、设置环境变量。每个分组带一个预备环境,可以拿线上数据试运行之后再发布。

多种部署方式

用命令行工具上传本地代码,或者让云引擎从 Git 仓库拉取。每次部署都留下一个版本,可以随时回滚。

优势和特色

基于 Docker 的容器云

项目代码运行在独立的 Docker 容器中,资源隔离,可以平滑部署、弹性扩容。

自动负载均衡

基于自动服务发现技术,多个云引擎实例之间实时进行负载均衡,在系统意外发生时会自动进行故障转移,提供超过 99.9% 的高可用性。

支持主流开发语言

支持 Node.js、Python、Java、PHP 等主流后端语言和运行时,并提供多种类型项目模版,10 分钟内即可完成项目发布。

运行环境

Web 前端

仅网站托管NPM / Yarn

Node.js

SDK 与云函数NPM / Yarn

Python

SDK 与云函数pip

Java

SDK 与云函数Maven / Gradle

PHP

SDK 与云函数Composer

.NET

SDK 与云函数dotnet

Go

SDK 与云函数go mod

C++

Bazel / CMake

技术介绍

云引擎是进程级别的运行环境,应用只关心自己的进程,不涉及操作系统。整体设计接近 12-Factor:进程本身不保存数据,配置从环境变量读取,日志写到标准输出,横向扩展靠多开进程。

代码上传之后先经过构建。云引擎按项目的结构判断运行环境,根目录有 package.json 就当作 Node.js 项目,据此安装依赖、编译可执行文件,产出一个带编号的「版本」。构建采用分层缓存,某一步要执行的操作没有变化,就直接沿用上一次的结果。

版本部署到实例上运行,一个实例对应宿主机上的一个容器,请求由负载均衡按服务发现的结果分发过来。部署、重启和系统发起的实例迁移都是逐个更换容器:新容器工作正常之后,旧容器至少再运行 30 秒,把正在处理的请求执行完,其间进程可以接收 SIGTERM 做退出前的清理。云函数和 Hook 由云引擎 SDK 实现,与应用跑在同一个进程、同一个端口上,部署时云引擎向 SDK 取得云函数的列表,据此把调用转发到对应的分组。

价格方案

以中国节点的价格为例。实例和数据库按规格计费,按天扣费,不足一天按一天算。MongoDB 与 Elasticsearch 在服务关停之前已经下线,列出的是它们还在售时的价格。

价格
云引擎实例2 元 / 天起(512 MB,1 CPU),开发版应用赠送一个体验版实例,闲置一段时间后休眠
云引擎流量每个付费实例免费 1 GB / 天,超出部分 0.8 元 / GB
云引擎加速流量0.36 元 / GB,开发版应用免费 1 GB / 天
LeanCache(Redis)1 元 / 天起(128 MB)
MySQL2.5 元 / 天起(512 MB 内存),20 GB 存储空间免费
MongoDB5 元 / 天起(512 MB 内存,1 GB 存储空间)
Elasticsearch3 元 / 天起(512 MB 内存,1 GB 存储空间)

更新历史

  1. 支持自动伸缩

    标准版云引擎的实例数量可以交给云引擎按需调整,CPU 用量高时扩容、低时缩容。控制台上设定实例数量的上下限,以及成本优先或性能优先的伸缩策略。

    云引擎平台功能

  2. 支持预览环境

    每个 Pull request 自动部署成一个独立环境,PR 更新后重新部署,合并或关闭后自动删除。绑定一个泛域名后,各个预览环境会自动分到子域名上。

    云引擎支持预览环境

  3. 增加 C++ 运行环境

    用 Bazel 或者 CMake 组织的 C++ 项目可以在云引擎上构建和运行,也可以上传预先编译好的可执行文件。C++ 没有对应的云引擎 SDK,不支持云函数和 Hook。

    LeanCloud 2022 回顾

  4. 命令行工具发布 1.0

    经过了 63 个版本,lean-cli 终于发布了 1.0 版本,包含了很多积压已久的不兼容改动。

    2022 年 3 至 4 月更新

  5. 命令行工具可以连接线上数据库

    lean db 能打开线上数据库的交互式 shell,也能把实例代理到本地端口,供图形客户端连接,用于开发者本地调试。

    使用 lean-cli 连接云端的 LeanDB

  6. 支持私密环境变量

    环境变量增加 Secret 类型,值在控制台和日志里都不显示。

    2021 年 8 月更新

  7. 托管数据库增加 Elasticsearch

    云引擎里提供托管的 Elasticsearch 实例。

    云引擎增加对 ElasticSearch 的支持

  8. 托管数据库增加 MongoDB

    继 Redis 和 MySQL 之后,云引擎的托管数据库增加 MongoDB。

    云引擎增加对 MongoDB 数据库的支持

  9. 增加 Go 运行环境

    Go 项目可以在云引擎上构建和部署,云函数和 Hook 也能用 Go 编写。

    LeanCloud Go SDK 首个版本现已发布

  10. 所有分组都支持云函数和 Hook

    云函数、Hook 和定时任务可以运行在任意分组上。含云函数的服务能按分组拆开部署,一个应用里也可以用不同语言编写云函数,客户端调用时由云引擎按名称路由到对应的分组。

    云引擎在所有分组上支持云函数、取消分组管理费用

  11. 支持绑定加速域名

    除普通域名外,云引擎可以绑定加速域名。加速域名指向 CDN 节点,可缓存的资源就近返回,并带基础 DDoS 防护。一个分组可以两种各绑一个,静态资源走加速域名,API 走普通域名。

    云引擎支持绑定加速域名

  12. 推出云队列

    云队列在云引擎之外调度云函数,支持重试、去重、延时任务和结果查询,未运行的任务不会因为实例重启而丢失。定时任务基于它重新实现。

    LeanCloud 2019 回顾

  13. 托管数据库增加 MySQL

    华北节点开始提供 MySQL 托管,云引擎里用通用的 MySQL 客户端类库访问。

    LeanCloud 2019 回顾

  14. 支持自助绑定自定义域名

    云引擎的自定义域名可以在控制台上自助绑定,域名的 SSL 证书由 LeanCloud 自动申请和续期。

    为结构化数据存储、文件和云引擎服务设置自定义域名的通知·域名绑定 Q&A

  15. 增加 .NET Core 运行环境

    ASP.NET Core 这类项目可以部署和托管在云引擎上。

    云引擎开始支持 .NET Core

  16. 推出分组管理

    一个应用可以建多个云引擎分组,访问同一份数据,各自部署代码、绑定域名、设置环境变量,并各带一个预备环境。用户界面和管理后台可以拆成两个项目,也可以用 Node.js 写云函数、用 PHP 写网站。

    云引擎组管理功能正式上线

  17. 增加 Java 和 PHP 运行环境

    Java 项目以 war 包的方式在 Jetty 中运行,网站托管、云函数和自定义域名都可以用。同年 8 月 PHP 应用也能部署到云引擎,运行环境增至 Node.js、Python、Java、PHP 四种。

    LeanCloud Java SDK 及云引擎 Java 运行环境正式发布·PHP SDK 0.4.0 版发布,支持云引擎并更新了类名

  18. 支持自主配置实例规格与数量

    应用可以自己决定启动多少个实例、每个实例什么规格,请求分摊到多个实例上,单个实例失效不影响整体服务。此次更新还提供了镜像回滚能力,可以快速回滚到之前部署过的版本。

    云引擎即将升级,应用可自主配置资源来提升服务性能

  19. LeanCache 发布

    基于 Redis 的托管内存存储,供云引擎连接。主从热备,主节点失效时自动切换。实例在账号内全局可见,多个应用可以共享同一份数据。

    高效内存存储服务 LeanCache 正式发布

  20. 云代码升级为云引擎

    去掉沙箱之后可以运行标准的 Node.js 项目,用 Express 这样的 Web 框架,引入 SDK 即可定义云函数。同时增加 Python 运行环境,云引擎不再只有一种语言。

    云代码正式更名「云引擎」,3.0 版本重磅上线

  21. 支持在控制台里编写云函数

    开发者可以在控制台里创建云函数、Hook 和全局变量,保存即部署到测试环境,发布后进入生产环境。每个函数保留历史版本,也可以在线传参调用看结果。

    更 lean 更便捷,云代码「精益模式」上线

  22. 云代码改在 Docker 容器中运行

    代码运行在各自的 Docker 容器里,隔离和容错更好,依赖也不再限于白名单,可以自由引入第三方类库。

    2014 年 8 月上旬更新

  23. 支持定时任务

    控制台可以创建、启动和停止定时任务,用 crontab 表达式或固定间隔触发已定义的云函数。

    2014 年 5 月第三周更新

  24. 命令行工具发布

    支持在本地创建、部署、发布、回滚和查询云代码项目。

    2013 年 12 月第二周更新

  25. 支持网站托管

    云代码可以托管网站,每个应用有一个 avosapps.com 下的二级域名,静态页面和调用云端数据的动态请求都可以放上去。

    2013 年 8 月 15 日更新

数据来源

功能介绍与价格参考了 LeanCloud 官网的 云引擎产品页开发文档;「优势和特色」段落原文摘录自官网。MongoDB 与 Elasticsearch 的价格取自官网价格页 2022 年 5 月 31 日的历史快照。

更新历史整理自 LeanCloud Blog 的产品更新汇总、月度通讯和单独发布的公告。自动伸缩没有对应的公告,日期取自开发文档中最早出现该功能的存档快照。