# 云托管概念说明

云托管使用与云函数不同的一些概念，下面将对这些概念进行介绍。

### 端口监听

云托管需要显式配置监听 HTTP 请求的端口，默认为 80。如果使用自己的容器，需要确定监听的端口与版本配置的端口号一致，才能让请求正确的路由到容器内部应用中。

在[示例应用](introduction)中，我们在代码指定了监听端口，即 80 端口。

### 开发模式

云托管可以使用任何语言、任何框架编写应用，甚至直接使用公共的容器镜像。与云函数不同的是，为了提供应用所需要的基本运行环境，需要编写 `Dockerfile` 指定所使用的容器镜像。

### 流量分配

云托管中流量分配策略与云函数相近。在创建版本的时候，默认该版本不会被分配流量，需要在稍后版本创建成功后，点击「分配流量比例」，为新的版本分配流量。

在创建版本时，也可以直接选择「开启 100% 流量」将版本直接设置为全部流量的版本。

为了版本的迭代安全，建议待容器正确启动，且按比例灰度一段时间后，再切换流量到新的版本。

### Dockerfile

容器 Dockerfile 是云托管为应用创建基础环境所用到的配置文件。

### 构建目录

在云托管构建镜像时，默认使用根目录构建。如果需要构建的文件在子文件夹内部，可以在此指定。

### 容器规格

云托管支持指定多种容器规格，支持的规格如下：

CPU 核心数量 | 支持的内存
-- | --
0.25 | 0.5GB 
 1GB 
 2GB
0.5 | 1GB 
 2GB 
 3GB 
 4GB
1 | 1 - 8 GB（整数）
2 | 4 - 16 GB（整数）
4 | 8 - 32 GB （整数）
8 | 16 - 32 GB （整数）
12 | 24 - 48 GB （整数）
12 | 32 - 64 GB （整数）

可以根据容器需要进行选择。

### 实例数量

指当前服务版本在自动扩缩容时可达到的最大实例数及最小实例数。最小值下限为 0，最大值上限为 50。默认最小值为 0，最大值为 50。

### 扩缩容条件

当达到某个条件时，云托管会自动会创建/删除一个实例，冷却 15 秒后，检测是否再次达到条件，如果满足条件则继续扩缩容，如此反复直至实例数量达到副本个数的最小值/最大值，或不再满足扩缩容条件时停止自动扩缩容。

目前仅支持 CPU 使用率作为扩缩容条件，即当前实例 CPU 使用率超过设定值后，若实例数小于最大副本个数，则创建出一个新的实例。默认值为 60%。

### 日志采集路径

可设置目录或文件，支持设置多个路径。采集到的日志可以在日志中查看。默认路径为 stdout。

### 环境变量

用户所需的环境变量，直接传入容器中。以 key value 的形式可配置多个。

### 云调用令牌

云托管服务使用云调用时所需的 access-token。

1. **订阅** 用户在微信开发者工具云开发控制台创建容器服务版本时，可勾选开启 access_token 自动同步能力。

2. **推送** 用户开启后，微信开始定时周期性进行 access_token 推送，并确保推送成功，access_token 将被推送到用户云托管环境下用户资源中进行存储。**access_token** 有效期为 **30 分钟**，推送间隔为 **10 分钟**。

3. **使用** 用户云托管环境中的 access_token 将会以只读权限挂载到用户容器中，挂载路径为：**/.tencentcloudbase/wx/cloudbase_access_token** 。微信推送新的 access_token 后容器中的 access_token 会同步更新。用户可以读取 access_token 并在请求时放到请求参数上，用户需要主动在 access_token 更新后替换，如定时轮询文件或 watch 文件变化，或每次读取文件。

4. **取消订阅** 用户删除全部开启推送的版本后，取消订阅。
