LeanEngine
云引擎
云引擎可以托管开发者自己编写的网站或后端程序,部署到云引擎后,会自动进行构建和运行,并提供负载均衡、弹性扩容和日志监控,不必自己准备维护服务器。云引擎可以通过云函数、定时任务和 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) |
| MySQL | 2.5 元 / 天起(512 MB 内存),20 GB 存储空间免费 |
| MongoDB | 5 元 / 天起(512 MB 内存,1 GB 存储空间) |
| Elasticsearch | 3 元 / 天起(512 MB 内存,1 GB 存储空间) |
更新历史
2023.09
2023.03.29
2023.01.18
增加 C++ 运行环境
用 Bazel 或者 CMake 组织的 C++ 项目可以在云引擎上构建和运行,也可以上传预先编译好的可执行文件。C++ 没有对应的云引擎 SDK,不支持云函数和 Hook。
2022.05.11
2021.11.11
2021.09.07
2021.06.11
2021.05.10
2021.03.08
2020.10.16
所有分组都支持云函数和 Hook
云函数、Hook 和定时任务可以运行在任意分组上。含云函数的服务能按分组拆开部署,一个应用里也可以用不同语言编写云函数,客户端调用时由云引擎按名称路由到对应的分组。
2020.08.10
支持绑定加速域名
除普通域名外,云引擎可以绑定加速域名。加速域名指向 CDN 节点,可缓存的资源就近返回,并带基础 DDoS 防护。一个分组可以两种各绑一个,静态资源走加速域名,API 走普通域名。
2020.01.03
2020.01.03
2019.06.26
2018.08.14
2017.04.07
推出分组管理
一个应用可以建多个云引擎分组,访问同一份数据,各自部署代码、绑定域名、设置环境变量,并各带一个预备环境。用户界面和管理后台可以拆成两个项目,也可以用 Node.js 写云函数、用 PHP 写网站。
2016.07.28
增加 Java 和 PHP 运行环境
Java 项目以 war 包的方式在 Jetty 中运行,网站托管、云函数和自定义域名都可以用。同年 8 月 PHP 应用也能部署到云引擎,运行环境增至 Node.js、Python、Java、PHP 四种。
LeanCloud Java SDK 及云引擎 Java 运行环境正式发布·PHP SDK 0.4.0 版发布,支持云引擎并更新了类名
2016.03.08
支持自主配置实例规格与数量
应用可以自己决定启动多少个实例、每个实例什么规格,请求分摊到多个实例上,单个实例失效不影响整体服务。此次更新还提供了镜像回滚能力,可以快速回滚到之前部署过的版本。
2015.12.01
LeanCache 发布
基于 Redis 的托管内存存储,供云引擎连接。主从热备,主节点失效时自动切换。实例在账号内全局可见,多个应用可以共享同一份数据。
2015.05.26
云代码升级为云引擎
去掉沙箱之后可以运行标准的 Node.js 项目,用 Express 这样的 Web 框架,引入 SDK 即可定义云函数。同时增加 Python 运行环境,云引擎不再只有一种语言。
2014.11.25
支持在控制台里编写云函数
开发者可以在控制台里创建云函数、Hook 和全局变量,保存即部署到测试环境,发布后进入生产环境。每个函数保留历史版本,也可以在线传参调用看结果。
2014.08.19
2014.05.24
2013.12.13
2013.08.15
数据来源
功能介绍与价格参考了 LeanCloud 官网的 云引擎产品页 和 开发文档;「优势和特色」段落原文摘录自官网。MongoDB 与 Elasticsearch 的价格取自官网价格页 2022 年 5 月 31 日的历史快照。
更新历史整理自 LeanCloud Blog 的产品更新汇总、月度通讯和单独发布的公告。自动伸缩没有对应的公告,日期取自开发文档中最早出现该功能的存档快照。