# 架构特点

# 一、产品功能

微信云托管以容器服务为核心,提供方便易用的存储体系、微信生态、安全鉴权等服务能力;搭配简单易懂的操作面板,集成资源监控,资源告警,流水线等自动化功能,是一站式的后端云服务。

产品功能图

# 二、底层架构

微信云托管使用目前主流的容器平台Docker以及容器编排技术Kubernetes(简称K8S),来管理你的项目。 使用微信云托管需要掌握对 Docker 的使用,但你无需掌握K8S的使用方法。因为微信云托管将K8S的运维配置完全接手,你不需要关心K8S和容器服务如何配置和相互作用,只需要操作微信云托管提供的简单操作面板,就可以轻松的部署服务,大大降低了容器化技术的使用门槛。

当你使用微信生态下的客户端(小程序、公众号),向部署在微信云托管上的后端服务发送请求时,会自动经过微信接入层(内网),并附带微信校验的权威用户信息。

非微信生态下的客户端(普通 WEB 网页、APP),向部署在微信云托管上的后端服务发送请求时,会经过微信云托管公网网关层(所有用户共用,由微信云托管团队维护),并根据域名转发到对应的用户服务。 微信云托管提供默认公网域名,也可以接入自己备案好的自定义域名。

产品架构图

# 三、优势&特点

从代码上传到CI/CD流水线部署发布,微信云托管提供全链路、低成本、企业级的云原生解决方案,并有以下优势&特点:

优势&特点 说明
天然鉴权 容器内免鉴权直接获取用户信息 openid,unionid(更多
任意语言/框架 可以使用任意语言和框架进行开发
常驻运行 容器内监听请求,每个实例都常驻运行
自动扩缩 单实例多并发,并自动根据负载情况增加或减少实例数量
缩容至0 无流量时实例副本数可支持缩容至0,做到0成本
20S扩容 突发场景支持20s内快速扩容以支持业务需要
平滑迁移 无需改造/重构现有业务,容器化后即可从服务器或其他容器平台平滑迁移
使用简易 无需理解容器集群复杂概念,免域名配置,小程序 / Web端使用 SDK cloud.callContainer 一行代码即可调用
细粒度规格 超细粒度资源控制,最小规格0.25核0.5G
消息推送 配置一个微信云托管服务即可接收所有类型消息
指定灰度 新版本定向灰度给指定人员进行体验测试
流水线 拥有CI/CD流水线能力,支持多种触发方式

# 四、服务模式对比

# 1. 微信云托管与服务器的对比

相比于服务器资源,微信云托管自身具有弹性扩缩、环境隔离以及监控日志等服务能力。

模块 服务器 微信云托管
安全 公网暴露接口,可能被DDoS 通过微信私有协议走内网,无 DDoS 风险
鉴权 自行鉴权 免鉴权
环境隔离 自建 开箱即用
版本灰度 自建 开箱即用
负载访问 自建或单独购买负载均衡产品 自带能力,无需配置
弹性扩缩 单独购买弹性伸缩产品 支持
监控告警 自建 开箱即用
日志服务 自建或单独购买日志产品 开箱即用
成本 预购 按实际用量计算,精确到秒
容灾 要自建 自带三园区部署

# 2. 微信云托管与 Kubernetes 的对比

面向服务开发而非面向资源开发,无需过多理解集群概念、云内复杂配置,支持缩容到0实现无流程时0成本,可私有部署,便于迁移,开发成本低,高并发大调用量时成本较低。

模块 Kubernetes 微信云托管
面向对象 资源 服务
安全 公网暴露接口 微信私有协议
鉴权 自行鉴权 免鉴权
环境隔离 购买/管理节点 支持
集群/计算节点 自主购买/手动管理 不感知
版本灰度 自建(复杂方式) 支持
负载访问 配置LB 数据流
弹性扩缩 自建 支持
缩容到0 自建 支持
监控告警 自建 支持
日志服务 自建/第三方 支持
成本 Node服务器粒度计费 按实际用量计算,按秒计算

# 3. 微信云托管与云函数的对比

云托管可以看做是云函数的高阶版本,更自由灵活,支持任意语言、任意框架、常驻运行,同时也拥有云函数的微信天然鉴权等优势。

模块 云函数 云托管
请求并发 单实例单并发,多并发时自动拉起多个实例处理 单实例多并发,高负载时自动拉起多实例
语言/框架 开发语言和框架支持有限 任意语言、任意框架
常驻运行 不支持 支持
日志监控 基于函数 基于服务版本
版本灰度 支持按流量灰度 支持按流量比例/按 URL 参数/按 openid 灰度
弹性扩缩容 支持 支持
对外服务 小程序、Web、HTTP 小程序、Web、HTTP
上手难度 简单 中等
计费方式 按请求量计费、按请求次数和每次调用产生的 GBS 按容器运行消耗的 CPU、内存、服务产生的外网出流量、服务构建时长
天然鉴权 免鉴权获取 openid 等信息 免鉴权获取 openid 等信息
云调用 免维护access_token, session_key,免鉴权调用服务端接口 免维护access_token, session_key,免鉴权调用服务端接口