这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
监控告警
完善的监控和告警是保证分布式 ID 系统稳定运行的关键。
监控指标
1. 核心指标
QPS(每秒查询数):
QPS = 每秒生成的 ID 数量
阈值:
- 正常:> 10,000
- 警告:< 10,000
- 严重:< 1,000延迟(Latency):
P50:50% 的请求延迟
P99:99% 的请求延迟
P999:99.9% 的请求延迟
阈值:
- 优秀:P99 < 1ms
- 良好:P99 < 10ms
- 警告:P99 < 100ms
- 严重:P99 ≥ 100ms错误率(Error Rate):
错误率 = 失败请求数 / 总请求数 × 100%
阈值:
- 优秀:< 0.01%
- 良好:< 0.1%
- 警告:< 1%
- 严重:≥ 1%可用性(Availability):
可用性 = (总时间 - 停机时间) / 总时间 × 100%
阈值:
- 优秀:≥ 99.99%
- 良好:≥ 99.9%
- 警告:≥ 99%
- 严重:< 99%2. 资源指标
CPU 使用率:
阈值:
- 正常:< 70%
- 警告:70-90%
- 严重:> 90%内存使用率:
阈值:
- 正常:< 70%
- 警告:70-90%
- 严重:> 90%网络带宽:
阈值:
- 正常:< 70%
- 警告:70-90%
- 严重:> 90%3. 业务指标
Buffer 使用率:
Buffer 使用率 = 已分配 ID / Buffer 总容量 × 100%
阈值:
- 正常:< 50%
- 警告:50-80%
- 严重:> 80%号段获取频率:
号段获取频率 = 每秒获取号段次数
阈值:
- 正常:< 10 次/秒
- 警告:10-50 次/秒
- 严重:> 50 次/秒监控实现
1. 使用 Prometheus
配置:
配置要点
- 配置表达的是环境差异和运行参数,不是业务规则本身。
Java 实现:
2. 使用 Micrometer
配置:
告警策略
1. 告警级别
P0 - 严重告警:
- 系统完全不可用
- QPS = 0
- 错误率 > 10%
响应时间:立即处理(< 5分钟)P1 - 高级告警:
- 系统部分故障
- QPS < 1,000
- 错误率 > 1%
响应时间:1小时内处理P2 - 中级告警:
- 性能下降
- QPS < 10,000
- 延迟 P99 > 100ms
响应时间:24小时内处理P3 - 低级告警:
- 资源使用率偏高
- Buffer 使用率 > 50%
响应时间:持续观察2. 告警规则
Prometheus 告警规则:
配置要点
- 配置表达的是环境差异和运行参数,不是业务规则本身。
告警通知
1. 通知方式
邮件:
短信:
钉钉/企业微信:
2. 告警聚合
聚合策略:
同一类型的告警在 5 分钟内只发送一次
严重告警立即发送
其他告警批量发送日志追踪
1. 结构化日志
实现:
2. 分布式追踪
使用 Sleuth + Zipkin:
监控面板
1. Grafana 面板
关键指标:
- QPS 趋势图
- 延迟分布图
- 错误率趋势图
- 资源使用率图
- Buffer 使用率图
2. 自定义面板
示例:
配置要点
- 配置表达的是环境差异和运行参数,不是业务规则本身。
- 队列、缓存、存储和服务参数决定系统在高峰期的缓冲能力。
最佳实践
1. 完善的监控
✅ 监控所有核心指标
✅ 设置合理的阈值
✅ 实现多级告警
✅ 支持多种通知方式2. 及时的告警
✅ P0 告警立即处理
✅ P1 告警 1 小时内处理
✅ P2 告警 24 小时内处理
✅ P3 告警持续观察3. 完整的日志
✅ 结构化日志
✅ 分布式追踪
✅ 日志聚合
✅ 日志分析总结
完善的监控和告警系统是保证分布式 ID 系统稳定运行的关键。
课程总结
恭喜你完成了《系统设计 - 分布式 ID 生成器》课程!
你学到了: ✅ 分布式 ID 的多种方案 ✅ 各方案的优缺点和适用场景 ✅ 生产级系统的设计原则 ✅ 完整的系统架构 ✅ 监控和告警策略
下一步
建议继续学习:
- 系统设计其他主题
- 分布式系统设计
- 微服务架构
- 高可用系统设计
感谢学习!🎉