# 架构特点
# 一、产品功能
微信云托管以容器服务为核心,提供方便易用的存储体系、微信生态、安全鉴权等服务能力;搭配简单易懂的操作面板,集成资源监控,资源告警,流水线等自动化功能,是一站式的后端云服务。
# 二、底层架构
微信云托管使用目前主流的容器平台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,免鉴权调用服务端接口 |