高可用架构 学习笔记(第 11 部分)
6.2 告警策略
javascript
// 告警配置
const alertConfig = {
// CPU 告警
cpu: {
warning: {
threshold: 70,
duration: 300, // 持续 5 分钟
severity: 'warning'
},
critical: {
threshold: 90,
duration: 60, // 持续 1 分钟
severity: 'critical'
}
},
// 可用性告警
availability: {
critical: {
threshold: 99.9,
duration: 300,
severity: 'critical'
}
},
// 错误率告警
errorRate: {
warning: {
threshold: 1, // 1%
duration: 180,
severity: 'warning'
},
critical: {
threshold: 5, // 5%
duration: 60,
severity: 'critical'
}
}
}七、常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 单点故障 | 关键组件无冗余 | 集群部署、主备切换 |
| 数据不一致 | 异步复制延迟 | 同步复制、最终一致性 |
| 故障转移慢 | 手动干预 | 自动故障检测、自动转移 |
| 雪崩效应 | 服务级联失败 | 熔断、降级、限流 |
| 数据丢失 | 异地容灾缺失 | 异地备份、实时同步 |
| 恢复时间长 | 缺乏预案 | 演练、自动化恢复 |
八、学习要点总结
核心要点
-
高可用三大保障场景:
- 本地高可用:硬件故障、系统故障
- 业务逻辑保护:人为失误、软件错误
- 容灾多活:区域性灾难、自然灾害
-
CAP 理论核心:
- C: 一致性
- A: 可用性
- P: 分区容错
- 分布式系统只能满足 CP 或 AP
-
集群 vs 分布式:
- 集群:CA 特性、强一致性、部署简单
- 分布式:CP/AP 特性、可扩展性、复杂度高
-
高可用技术方案:
- 硬件冗余:RAID、双电源、网络冗余
- 数据保护:快照、备份、审计日志
- 容灾多活:主备、双活、多活
-
监控与告警:
- 系统层、应用层、数据层监控
- 及时告警、快速响应
九、延伸学习资源
推荐书籍
- 《高可用架构》 - 李智慧
- 《分布式系统原理》 - 范磊
- 《大型网站技术架构》 - 李智慧
- 《Release It!》 - Michael Nygard
在线资源
- Netflix Hystrix:https://github.com/Netflix/Hystrix
- Redis Sentinel 文档:https://redis.io/topics/sentinel
- Kubernetes 高可用:https://kubernetes.io/
- CAP 定理详解:https://www.ibm.com/topics/cap-theorem
实战练习
- 搭建 MySQL 主从复制
- 配置 Redis Sentinel 高可用
- 实现服务熔断和降级
- 搭建监控系统 Prometheus + Grafana
附录:高可用架构设计清单
javascript
// 高可用架构设计检查清单
const haChecklist = {
// 硬件层
hardware: [
' 服务器冗余(多台服务器)',
' 磁盘冗余(RAID)',
' 网络冗余(双网卡、双交换机)',
' 电源冗余(双电源、UPS、发电机)'
],
// 数据层
data: [
' 数据库主从复制',
' 数据备份策略(全量 + 增量)',
' 数据快照(快速恢复)',
' 异地容灾(主备/双活/多活)'
],
// 应用层
application: [
' 服务多实例部署',
' 负载均衡',
' 服务注册发现',
' 熔断降级限流'
],
// 监控层
monitoring: [
' 实时监控(系统、应用、数据)',
' 告警通知(邮件、短信、电话)',
' 日志收集(ELK)',
' 链路追踪(Jaeger/Zipkin)'
],
// 运维层
operations: [
' 故障演练(定期演练)',
' 应急预案(详细的处理流程)',
' 自动化运维(Ansible/Terraform)',
' 文档完善(架构图、操作手册)'
]
}笔记整理完成!
这份笔记详细讲解了高可用架构的核心概念、三大保障场景、CAP理论、集群与分布式架构对比,并结合实际案例和代码示例,帮助理解高可用架构设计的核心思想。建议结合实际项目进行高可用架构设计和实践。