名称: 边缘策略 描述: 设计全球分布的CDN和边缘部署策略 - 优化延迟、规划缓存架构,并推荐边缘计算放置 允许工具: 读取、全局搜索、grep、任务、询问用户问题 参数提示: <需求或系统>
边缘策略命令
此命令为全球分布式系统设计CDN和边缘部署策略。
目的
生成边缘架构计划,包括:
- 地理分布需求
- CDN和缓存策略
- 边缘计算放置决策
- 延迟优化计划
- 多区域故障转移设计
工作流程
阶段1:需求收集
了解分布需求:
如果提供需求:
- 解析地理和延迟需求
- 识别用户分布模式
- 确定内容类型和缓存潜力
- 检查合规性/数据驻留限制
如果未提供需求,询问:
您的边缘/CDN需求是什么?
1. 用户地理:
- 主要区域:[美国/欧洲/亚太/全球]
- 用户分布:[集中/分散]
2. 延迟要求:
- 目标P50:[50毫秒/100毫秒/200毫秒/尽力而为]
- 目标P99:[100毫秒/200毫秒/500毫秒/尽力而为]
3. 内容概况:
- 静态内容百分比:[高/中/低]
- API/动态内容:[是/否]
- 实时要求:[是/否]
4. 合规性:
- 数据驻留要求:[GDPR/CCPA/无]
- 特定国家限制:[列表]
阶段2:当前状态分析
如果提供系统,分析当前架构:
当前状态分析:
□ 现有部署区域
□ 当前CDN配置(如有)
□ 内容类型和缓存头部
□ 源站架构
□ 流量模式和容量
□ 当前延迟测量
搜索模式:
- CDN配置:
cdn、cloudfront、cloudflare、akamai、cache-control - 多区域:
region、failover、replica、primary、secondary - 边缘:
edge、lambda@edge、workers、edge function
阶段3:内容分析
为缓存策略分类内容:
内容分类:
静态资源(长缓存):
□ JavaScript捆绑包
□ CSS样式表
□ 图像和媒体
□ 字体
□ 静态HTML
动态内容(短缓存):
□ API响应(可缓存)
□ 生成页面
□ 搜索结果
□ 聚合数据
实时/不可缓存:
□ 用户特定数据
□ 交易端点
□ WebSocket连接
□ 实时订阅源
估计可缓存百分比:[X]%
阶段4:地理分布设计
规划地理架构:
地理分布计划:
用户分布分析:
- 区域1:[X]%的用户
- 区域2:[Y]%的用户
- 区域3:[Z]%的用户
推荐架构:
┌─────────────────────────────────────────────────────────────┐
│ 用户 │
│ [区域1] [区域2] [区域3] │
└────────┬─────────────┬─────────────┬────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ CDN边缘层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 边缘节点 │ │ 边缘节点 │ │ 边缘节点 │ │
│ │ [区域] │ │ [区域] │ │ [区域] │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└───────┼─────────────┼─────────────┼─────────────────────────┘
│ │ │
└─────────────┼─────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ 源站层 │
│ [主要区域] [次要区域] │
└─────────────────────────────────────────────────────────────┘
区域选择理由:
- [区域1]:[理由 - 用户集中、合规性等]
- [区域2]:[理由]
阶段5:CDN架构设计
设计缓存策略:
CDN架构设计:
供应商推荐:[Cloudflare/CloudFront/Akamai/Fastly]
理由:[为什么选择此供应商]
缓存层级:
┌─────────────────────────────────────────────────────────────┐
│ 浏览器缓存(L1) │
│ - 静态资源:max-age=31536000, immutable │
│ - API响应:max-age=0, must-revalidate │
├─────────────────────────────────────────────────────────────┤
│ CDN边缘缓存(L2) │
│ - 静态:1年TTL,版本化URL │
│ - 动态:60秒TTL,stale-while-revalidate │
│ - 个性化:缓存键包含授权头部 │
├─────────────────────────────────────────────────────────────┤
│ 源站屏蔽(L3) │
│ - 位置:[最接近源站的区域] │
│ - 合并缓存未命中 │
│ - 减少源站负载约80% │
└─────────────────────────────────────────────────────────────┘
缓存规则:
| 路径模式 | 缓存位置 | TTL | 可变头部 | 失效 |
|--------------|----------------|-----|--------------|--------------|
| /static/* | 边缘 + 浏览器 | 1年 | 无 | 版本化URL |
| /api/public/*| 仅边缘 | 60秒| Accept | 缓存标签 |
| /api/user/* | 边缘 | 30秒| Authorization| 变更时清除 |
| /api/auth/* | 无 | N/A | N/A | N/A |
阶段6:边缘计算策略
确定边缘计算放置:
边缘计算分析:
边缘计算用例:
□ 身份验证/令牌验证
□ 请求路由和A/B测试
□ 个性化(基础)
□ 安全(WAF、速率限制)
□ 响应转换
□ 基于地理位置的逻辑
推荐边缘函数:
函数1:验证授权
- 位置:边缘(每个节点)
- 目的:在源站前验证JWT
- 延迟节省:约50-100毫秒
- 技术:[Cloudflare Workers/Lambda@Edge]
函数2:地理路由器
- 位置:边缘(每个节点)
- 目的:路由至最佳源站
- 实现:[细节]
函数3:[自定义函数]
- [细节]
边缘与源站决策矩阵:
| 操作 | 边缘 | 源站 | 理由 |
|-----------|------|--------|--------|
| JWT验证 | ✓ | | 快速、无状态 |
| 速率限制 | ✓ | | 分布式执行 |
| 用户查找 | | ✓ | 需要数据库 |
| 交易 | | ✓ | ACID要求 |
| ML推理 | | ✓ | 计算密集型 |
阶段7:延迟预算
创建端到端延迟分配:
延迟预算:[目标]毫秒 P99
┌─────────────────────────────────────────────────────────────┐
│ [总计]毫秒 总预算 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┬──────────┬──────────┬──────────┬──────────┐ │
│ │ 网络 │ 边缘 │ 源站 │ 数据库│ 响应 │ │
│ │ X毫秒 │ X毫秒 │ X毫秒 │ X毫秒 │ X毫秒 │ │
│ └──────────┴──────────┴──────────┴──────────┴──────────┘ │
│ │
│ 预算分配: │
│ ├── 网络(客户端→边缘):[X]毫秒 │
│ ├── 边缘处理:[X]毫秒 │
│ ├── 边缘→源站:[X]毫秒 │
│ ├── 源站处理:[X]毫秒 │
│ ├── 数据库查询:[X]毫秒 │
│ └── 响应序列化:[X]毫秒 │
└─────────────────────────────────────────────────────────────┘
优化策略:
1. 在边缘缓存(消除源站往返)
2. 边缘计算用于验证(减少源站工作)
3. 数据库优化(索引、连接池)
4. 协议升级(HTTP/3、连接重用)
阶段8:多区域故障转移设计
规划故障转移架构:
故障转移架构:
部署模型:[主动-主动 / 主动-被动]
区域配置:
┌─────────────────┐ ┌─────────────────┐
│ [主要] │ │ [次要] │
│ ┌───────────┐ │ ───► │ ┌───────────┐ │
│ │ 主动 │ │ 异步 │ │ [模式] │ │
│ │ 源站 │ │ 复制 │ │ 源站 │ │
│ └───────────┘ │ │ └───────────┘ │
└─────────────────┘ └─────────────────┘
故障转移机制:
- 健康检查:[间隔和阈值]
- 检测时间:[X]秒
- 故障转移时间:[X]秒
- 总RTO:[X]秒
恢复目标:
- RTO(恢复时间目标):[X分钟]
- RPO(恢复点目标):[X分钟]
流量路由:
- 正常:[X]% 主要,[Y]% 次要
- 故障转移:100% 至健康区域
- 故障恢复:逐步移回
数据复制:
- 方法:[同步/异步]
- 延迟容差:[X]毫秒
- 冲突解决:[策略]
阶段9:生成策略文档
创建全面边缘策略:
# 边缘策略:[系统名称]
## 执行摘要
目标:[延迟目标] P99 全球
方法:[CDN供应商] + [X] 源站区域 + 边缘计算
预期改进:[X]% 延迟减少
## 架构概述
[完整架构的ASCII图]
## CDN配置
| 设置 | 值 | 理由 |
|---------|-------|-----------|
| 供应商 | [名称] | [为什么] |
| 边缘节点 | [区域] | [覆盖] |
| 源站屏蔽 | [位置] | [合并未命中] |
| 缓存策略 | [方法] | [令牌效率] |
## 边缘计算
| 函数 | 位置 | 目的 | 技术 |
|----------|----------|---------|------------|
| [名称] | 边缘 | [目的] | [技术] |
## 区域部署
| 区域 | 角色 | 服务 | 理由 |
|--------|------|----------|-----------|
| [区域1] | 主要 | 全部 | [理由] |
| [区域2] | 次要 | 全部 | [理由] |
## 实施路线图
### 阶段1:CDN设置(第1-2周)
- [ ] CDN供应商配置
- [ ] DNS迁移
- [ ] 缓存规则实现
- [ ] 源站屏蔽设置
### 阶段2:边缘计算(第3-4周)
- [ ] 边缘函数开发
- [ ] 测试和验证
- [ ] 逐步推出
### 阶段3:多区域(第5-8周)
- [ ] 次要区域配置
- [ ] 数据复制设置
- [ ] 故障转移测试
- [ ] 上线
## 监控
| 指标 | 目标 | 告警阈值 |
|--------|--------|-----------------|
| 缓存命中率 | >90% | <80% |
| 边缘延迟P50 | <20毫秒 | >30毫秒 |
| 源站延迟P99 | <100毫秒 | >150毫秒 |
| 可用性 | 99.99% | <99.9% |
使用示例
# 为需求设计边缘策略
/sd:edge-strategy "全球用户,<100毫秒 P99,静态密集型网站"
# 分析现有系统
/sd:edge-strategy @src/infra/
# 审查当前CDN配置
/sd:edge-strategy "审查并优化当前CloudFront设置"
# 规划多区域扩展
/sd:edge-strategy "从美国扩展到欧洲和亚太"
交互元素
使用AskUserQuestion来:
- 澄清地理需求
- 理解延迟目标
- 识别合规限制
- 验证CDN供应商偏好
- 确认故障转移要求
输出
命令生成:
- 地理分布计划 - 区域选择和理由
- CDN架构 - 缓存策略和配置
- 边缘计算策略 - 函数放置和设计
- 延迟预算 - 端到端延迟分配
- 故障转移设计 - 多区域弹性计划
- 实施路线图 - 分阶段推出计划
相关技能
此命令利用:
cdn-architecture- CDN设计模式edge-computing- 边缘函数设计multi-region-deployment- 全球分布策略latency-optimization- 延迟减少技术
相关代理
用于持续边缘架构咨询:
edge-architect- CDN和边缘专业知识