云引擎平台功能
云引擎是一个托管后端程序的平台,开发者可以将 Web 应用(例如一个网站),或者 Node.js、Python、Java、PHP、.NET、Go、C++ 等语言的后端程序(例如一个 RESTful API 服务器)部署到云引擎上,云引擎会自动从源代码构建出可运行的「版本」,然后将它运行在独立的容器中,同时提供日志和监控、负载均衡、平滑发布、弹性扩容等能力。此外,云引擎还提供了定时任务、域名和证书管理和 Redis、MySQL 等多种托管数据库供开发者使用。
这篇文档会帮助了解云引擎平台提 供的功能,有关具体运行环境的详情请查看专门的文档页面:
云引擎可以部署什么
云引擎是一个进程级别的运行环境,开发者只需关注应用的进程本身(如 node
进程或 Go 项目编译出的可执行文件)、专注于实现业务逻辑,而不需要关注操作系统级别的环境。
部署到云引擎的应用只需遵循业界通常的项目结构(例如 Node.js 项目需要有 package.json
),云引擎就可以自动地为其准备运行环境,可以在 总览 中查看特定运行环境的文档来了解详情。
云引擎对应用进程内部几乎没有干预,你可以选用你喜欢的开发框架和第三方组件库、自行组织项目的目录结构。云引擎的负载均衡会转发绑定域名下的所有 HTTP 请求,你可以在应用内使用 Web 框架来自行设计 HTTP API 中的路径、请求和响应的格式。
目前云引擎主要为无状态的 HTTP 服务而优化,不支持在文件系统上持久地存储数据,应用可以将数据存储到 数据存储 或 LeanDB 提供的 Redis 和 MySQL 中。
要将一个已有的项目关联到云引擎应用,可以使用 tds switch
:
$ tds switch
[?] Please select an app:
1) my-engine-app
=> 1
Switching to my-engine-app (group: web)
查看日志
运行日志
在 开发者中心 > 你的游戏 > 游戏服务 > 云服务 > 云引擎 > 管理部署 > 云引擎分组 > 日志 中可以查看云引擎的部署和运行日志,还可以通过环境(预备环境、生产环境)、类型(标准输出、标准错误)、实例、日期时间进行筛选。
可以使用命令行工具将运行日志导出至本地,详见 命令行工具使用指南 § 查看日志。
查看统计数据
开发者中心 > 你的游戏 > 游戏服务 > 云服务 > 云引擎 > 管理部署 > 云引擎分组 > 统计 页面显示出当前应用下所有实例资源的使用情况,开发者由此可以判断实例资源是否即将或已经超限。
每分钟请求数
一段时间内云引擎每分钟处理的请求数。可以通过左上角的下拉菜单选择按不同请求类型(网站托管、云函数)和不同 HTTP 状态码分别查看。
响应时间
若曲线图升高,说明 CPU 使用量达到或超过限制,实例的 CPU 资源紧张。同样可以按不同请求类型(网站托管、云函数)和不同 HTTP 状态码分别查看。
CPU
曲线图展现出在一段时间内应用实际 CPU 的使用量。如果 CPU 接近或达到限制,应用表现为请求响应时间延长。
内存
曲线图展现出在一段时间内应用内存的实际使用量。如果内存使用量达到限制,则相关的业务进程(比如 Node.js 进程或者 Python 进程)会因为内存溢出(OOM)而重启,从而导致业务处理中断,并且该实例在启动期间服务不可用。如果内存曲线图频繁地接近限制然后忽然下降,就说明内存使用超限导致了进程重启。
显示各实例详情(勾选框) 勾选后会在 CPU、内存图表中为每个实例单独绘制一条线(不勾选默认显示所有实例合计的数值)。
图表右上角可以切换时间范围:今天、昨天、过去 7 天。
部署与发布
预备环境和生产环境
标准版云引擎对每个分组提供了「生产环境」和「预备环境」,生产环境设计用来接收和处 理线上请求;预备环境则提供了和生产环境几乎相同的环境、访问相同的数据,可以绑定单独的域名供开发者进行测试。TDS 的客户端 SDK 在调用云函数或进行可能触发 Hook 的数据存储操作时,可以设置请求的环境(X-LC-Prod
)。
在开发过程中,你可以先将改动部署到预备环境,使用线上数据测试通过后再发布到生产环境。如果你希望有一个独立数据源的测试环境,建议单独创建一个应用。
体验版云引擎没有预备环境。
预览环境
云引擎可以自动将 Pull request 部署到预览环境,每个预览环境有单独的域名,允许你在接近生产的环境中测试通过后再合并 PR。
预览环境的生命周期和 PR 绑定,在创建 PR 后,云引擎会自动创建一个预览环境并部署改动,在 PR 有更新后会自动部署最新的改动,PR 合并或关闭一段时间后,预览环境也会自动删除。
和预备环境类似,预览环境使用和生产环境相同的环境变量、访问相同的数据;和预备环境不同的是,预览环境可以同时存在多个,且自动和 PR 保持同步,而预备环境每个分组最多只有一个,且需要手动部署要测试的代码。
在使用预览环境之前,你需要先在 开发者中心 > 你的游戏 > 游戏服务 > 云服务 > 云引擎 > 管理部署 > 你的分组 > 设置 中绑定一个泛域名,如 *.previews.example.com
。所有预览环境都会自动分配这个泛域名下的子域名,类似 pr-123.previews.example.com
。
预览环境目前只支持在 GitLab CI 或 GitHub Actions 中使用命令行工具部署,需要配置 CI 才能使 用,详见 命令行工具使用指南 § 使用预览环境。后续会支持不用配置 CI 自动同步的功能。
命令行部署
在你的项目根目录运行:
tds deploy
就会开始上传本地的代码,会交互式地询问要部署到生产环境还是预备环境,如需直接部署生产环境可以加上 --prod
参数,更多命令行工具的用法请查看 命令行工具使用指南 § 从本地代码部署。