第十三章 运维与成本优化
成本优化不是“少花钱”,而是在不牺牲关键体验和可靠性的前提下,把资源花在真正产生价值的地方。
产品矩阵平台的成本通常来自四类:
| 类型 | 示例 |
|---|---|
| 计算 | API、Worker、AI 推理 |
| 存储 | 数据库、对象存储、日志 |
| 网络 | CDN、跨区流量、出口带宽 |
| 人力 | 运维、排障、发布、客服 |
13.1 集群成本结构分析
先建立成本账本,而不是凭感觉优化。
| 资源 | 成本驱动 |
|---|---|
| CPU | API 峰值、批处理、加密压缩 |
| 内存 | 缓存、连接池、运行时开销 |
| 存储 | 数据增长、日志保留、备份 |
| GPU | AI 训练或推理 |
| 网络 | CDN 回源、跨云同步 |
成本要按租户、App 和服务拆分。否则一个大客户的异常用量可能被全平台平均掉。
13.2 自动化部署与滚动更新
滚动更新要设置:
| 参数 | 说明 |
|---|---|
maxUnavailable | 更新时最多不可用实例 |
maxSurge | 更新时最多新增实例 |
| Readiness Probe | 新实例真正可用后再接流量 |
| PreStop Hook | 优雅退出 |
数据库迁移要先于代码还是后于代码,取决于兼容性。推荐迁移流程:
新增兼容字段 -> 发布双写代码 -> 回填历史数据 -> 切换读取 -> 删除旧字段
13.3 服务拆分与冷启动优化
不是所有服务都值得拆。拆分会带来网络、部署、监控和数据一致性成本。
适合拆分的信号:
| 信号 | 说明 |
|---|---|
| 伸缩特征不同 | AI Worker 与 API 完全不同 |
| 故障隔离需要 | 支付、通知、搜索 |
| 团队边界清晰 | 独立团队维护 |
| 资源消耗特殊 | GPU、长任务、大内存 |
冷启动优化:
- 减少启动时同步外部请求;
- 延迟加载非核心依赖;
- 缓存模板和配置;
- 镜像瘦身;
- 保留最小常驻实例。
13.4 监控数据可视化仪表板
仪表板不是越多越好。推荐四类:
| 仪表板 | 关注 |
|---|---|
| 业务健康 | 注册、订单、支付、活跃 |
| 服务健康 | QPS、错误率、延迟 |
| 资源健康 | CPU、内存、磁盘、连接池 |
| 成本健康 | 租户用量、服务成本、趋势 |
每张图都应该能回答一个问题。不能回答问题的图,只会制造噪音。
13.5 弹性伸缩与定时资源调度
伸缩策略:
| 服务 | 推荐指标 |
|---|---|
| API | CPU、P95 延迟、QPS |
| Worker | 队列长度、处理耗时 |
| AI 任务 | GPU 利用率、任务等待时间 |
| 报表任务 | 定时扩容 |
如果业务有明显日夜波峰,可以使用定时伸缩。比如每天 9 点前扩容后台服务,凌晨降低报表 Worker。
13.6 数据归档与冷存储
不是所有数据都应该永远留在热库。
| 数据 | 热存周期 | 归档方式 |
|---|---|---|
| 操作日志 | 30 到 90 天 | 对象存储 |
| 行为明细 | 90 到 180 天 | ClickHouse 冷分区 |
| 账单记录 | 长期 | 压缩归档 |
| 文件历史版本 | 按套餐 | 冷存储 |
归档前要确认查询需求。财务和审计数据即使归档,也要能按工单恢复查询。
13.7 容量规划
容量规划不是一年做一次。它应该和业务增长同步。
基础公式:
峰值请求 = DAU * 人均请求数 * 峰值系数 / 活跃窗口秒数
存储增长 = 新增对象数 * 平均大小 * 副本系数
队列容量 = 峰值生产速率 - 消费速率
容量规划要留安全余量,但不能无限堆资源。建议为核心服务保留 30% 到 50% 峰值余量,为非核心服务保留可降级方案。
13.8 节点选型与混合云方案
节点选择要按负载类型:
| 节点 | 适合 |
|---|---|
| N100 / 低功耗节点 | 本地开发、边缘轻量服务 |
| ARM | 高性价比 Web 和 Worker |
| EPYC / 高核数 | 并发 API、批处理 |
| GPU | AI 推理和训练 |
| 高 IO 节点 | 数据库、日志、搜索 |
混合云适合成本和合规并重的场景:核心数据在私有环境,公共静态资源和边缘加速走云服务,AI 或批处理按需使用弹性资源。
13.9 成本优化清单
| 检查项 | 标准 |
|---|---|
| 成本归因 | 能按租户、App、服务拆分 |
| 资源利用 | 有低利用率资源清单 |
| 伸缩 | API、Worker、AI 分别伸缩 |
| 日志 | 保留周期合理,有冷归档 |
| 数据 | 热冷分层 |
| 节点 | 按负载类型选型 |
| 发布 | 滚动更新和回滚自动化 |
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。