关键决策

关键决策点

决策 1:存储方案选择

问题: 使用 Redis 还是数据库?

决策树:

任务量 < 10 万/天?
├─ 是 → 数据库轮询(简单)
└─ 否 → 
    ├─ 精度要求秒级?
    │   ├─ 是 → Redis ZSet
    │   └─ 否 → 数据库轮询
    └─ 成本敏感?
        ├─ 是 → 分层方案
        └─ 否 → Redis ZSet

推荐:

  • 小规模:数据库轮询
  • 中等规模:Redis ZSet
  • 大规模:分层方案

决策 2:精度要求

问题: 需要多高的精度?

精度分级:

┌─────────────────────────────────────────┐
│            精度要求分级                 │
├─────────────────────────────────────────┤
│  高精度(毫秒级)                        │
│  ├─ 成本:高                            │
│  ├─ 适用:秒杀倒计时                    │
│  └─ 方案:时间轮                        │
│                                         │
│  中精度(秒级)                          │
│  ├─ 成本:中                            │
│  ├─ 适用:订单超时                      │
│  └─ 方案:Redis ZSet                    │
│                                         │
│  低精度(分钟级)                        │
│  ├─ 成本:低                            │
│  ├─ 适用:定时任务                      │
│  └─ 方案:数据库轮询                    │
└─────────────────────────────────────────┘

决策 3:可靠性保证

问题: 如何保证可靠性?

可靠性方案:

# 三级可靠性
可靠性级别:
├─ L1:单机 + 定期备份
│   └─ 适合:非关键任务

├─ L2:主备 + 实时同步
│   └─ 适合:关键任务

└─ L3:分布式 + 多副本
    └─ 适合:核心业务

决策 4:扩展性设计

问题: 如何支持水平扩展?

扩展方案:

┌─────────────────────────────────────────┐
│            扩展性方案                   │
├─────────────────────────────────────────┤
│  存储扩展                              │
│  ├─ Redis Cluster                     │
│  ├─ 数据库分片                        │
│  └─ 消息队列分区                      │
│                                         │
│  计算扩展                              │
│  ├─ 增加消费者节点                    │
│  ├─ 任务分片调度                      │
│  └─ 负载均衡                          │
│                                         │
│  网络扩展                              │
│  ├─ 多机房部署                        │
│  ├─ 就近访问                          │
│  └─ 降级策略                          │
└─────────────────────────────────────────┘

决策框架

CAP 权衡

延时队列的 CAP 权衡:

一致性(Consistency):
├─ 任务不能重复执行
├─ 任务状态一致
└─ 推荐:最终一致性

可用性(Availability):
├─ 服务始终可用
├─ 任务不丢失
└─ 推荐:高可用

分区容错(Partition Tolerance):
├─ 网络分区时继续工作
├─ 故障自动恢复
└─ 推荐:支持分区容错

选择:AP 或 CP
├─ AP:可用性和分区容错(推荐)
└─ CP:一致性和分区容错