项目三:云原生高可用服务平台
把前两个项目部署到 Kubernetes,加入渐进发布、OpenTelemetry、SLO、安全供应链和故障演练,形成生产级交付证据。
1. 本文覆盖范围
- Kubernetes 与资源治理
- CI/CD 与迁移
- 可观测/SLO/值班
- 安全与灾难恢复
2. 核心知识详解
1. 平台部署
使用不可变签名镜像、Deployment/Stateful 依赖、Service/Gateway、Secret、NetworkPolicy 和 autoscaling。
- 多可用区分布。
- requests/limits 和连接预算。
- 探针与优雅停机。
正确性边界: 副本数增加不等于高可用,下游、控制面和故障域仍需设计。
2. 发布和数据
流水线 build once,自动测试扫描,canary 按 SLI 晋级;数据库使用 expand/contract,事件 schema 兼容。
- 制品可追溯。
- 发布有回滚/前向修复。
- 迁移可暂停和重入。
正确性边界: 镜像回滚不能撤销 schema 和外部副作用。
3. SRE 闭环
OTel 收集日志、指标和 trace,SLO/error budget 驱动告警与发布;runbook、演练和复盘改进系统。
- 业务与技术 SLI。
- 多窗口 burn-rate。
- 事故角色和时间线。
正确性边界: 仪表盘多不代表可运营,关键是用户导向目标和可行动告警。
4. 安全与恢复
OIDC、最小权限、secret rotation、SBOM/签名、备份恢复和跨区域策略构成纵深防护。
- 定期恢复演练验证 RPO/RTO。
- 审计不可由业务管理员篡改。
- 依赖漏洞和密钥泄露有流程。
正确性边界: 有备份文件不等于可恢复,必须执行恢复和数据一致性验证。
3. 工程链路
flowchart LR
G["Git"] --> CI["Test/Scan/Build/Sign"]
CI --> REG["Registry"]
REG --> K["Kubernetes Canary"]
K --> O["OTel/SLO"]
O -->|门禁| K
K --> DR["Backup/Restore/Runbook"]
4. 最小可运行示例
下面的示例只保留关键路径。把它放入对应版本的最小工程,先运行测试或命令确认行为,再逐步加入重试、超时、监控和异常分支。
public sealed interface Command permits CreateOrder {}
public record CreateOrder(UUID requestId, long customerId) implements Command {}
public interface CommandHandler<C extends Command, R> {
R handle(C command);
}
5. 实践与验证
- 用 IaC/manifest 从空环境部署。
- 执行 canary 自动回滚和兼容迁移。
- 演练节点故障、密钥轮换和数据库恢复并记录 RTO/RPO。
6. 掌握检查
- 环境可重建。
- 发布可渐进和停止。
- SLO 可行动。
- 恢复经过实际验证。