
1) 【一句话结论】
采用“数据库主从热备(主备切换)+ 负载均衡(会话粘性)+ 异地灾备(RPO/RTO)”的混合架构,通过多级冗余、秒级切换和实时数据同步,确保7x24业务连续性,核心是“数据一致性保障+快速切换+冗余资源”。
2) 【原理/概念讲解】
老师:要实现7x24高可用,核心是“冗余”和“快速切换”,具体分三部分:
类比:主备切换像双引擎飞机的备用引擎,负载均衡像交通枢纽的流量分流,灾备像异地备份数据中心,灾难时快速接管。
3) 【对比与适用场景】
| 架构组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 主备切换(数据库热备) | 主库处理写,备库异步同步数据 | 备库不对外服务,切换时数据延迟(秒级),通过事务提交确认保障一致性 | 数据库、核心业务系统 | 需控制同步延迟,切换前验证同步状态 |
| 负载均衡(Nginx) | 分发请求到后端多台服务器 | 均衡负载,支持健康检查和会话粘性 | Web前端、API网关 | 会话粘性配置(如cookie),健康检查频率 |
| 异地灾备(两地三中心) | 主数据中心与异地灾备中心实时同步数据(如CDC) | 灾难时快速切换,RPO<1分钟,RTO<5分钟 | 金融、政务等敏感系统 | 网络延迟低(<50ms),数据同步技术(如MySQL GTID) |
4) 【示例】
数据库主从复制配置(伪代码):
# 主库配置(/etc/mysql/my.cnf)
[mysqld]
server-id=1
log-bin=binlog
binlog-do-db=党建内管系统
# 从库配置(/etc/mysql/my.cnf)
[mysqld]
server-id=2
log-bin=binlog
binlog-do-db=党建内管系统
read-only=1
replicate-ignore-db=mysql
replicate-do-db=党建内管系统
主备切换脚本(伪代码,使用Keepalived检测同步状态):
# 检查主库同步状态
status=$(mysql -h 192.168.1.10 -u root -p -e "SHOW MASTER STATUS\G")
if [ $? -ne 0 ] || [ "$(echo "$status" | grep -c 'No master for replication')" -ne 0 ]; then
# 主库故障,切换到备库
systemctl stop mysql@master
systemctl start mysql@slave
# 更新Keepalived状态
echo "master down, switch to slave"
fi
Nginx负载均衡配置(会话粘性):
upstream backend {
server 192.168.1.10:3306 weight=1;
server 192.168.1.11:3306 weight=1;
server 192.168.1.12:3306 weight=1;
health_check;
sticky cookie session_id expires=1h domain=.example.com;
}
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
灾备数据同步(假设使用CDC):
# 主中心CDC配置
bin/cdc-start --source=192.168.1.10:3306 --user=root --password=secret --schema=党建内管系统 --target=192.168.2.10:3306
# 灾备中心CDC配置
bin/cdc-start --source=192.168.2.10:3306 --user=root --password=secret --schema=党建内管系统 --target=192.168.2.11:3306
5) 【面试口播版答案】
面试官您好,针对7x24高可用,我设计的是“数据库主从热备+负载均衡+异地灾备”的混合架构。首先,主备切换采用MySQL主从复制,主库处理写操作,备库异步同步数据,通过Keepalived心跳检测,切换时间控制在秒级,数据一致性通过事务提交确认(如XID)保障。其次,负载均衡用Nginx分发请求,配置会话粘性(如cookie),确保用户会话在切换后不丢失。灾备采用两地三中心,主中心与灾备中心通过CDC实时同步数据,RPO<1分钟,RTO<5分钟。业务连续性通过多级冗余(主备、负载均衡、灾备)、秒级切换和实时数据同步,确保系统无中断。
6) 【追问清单】
7) 【常见坑/雷区】