可以看到:
- 两个中心都有 appServer 和 Redis 服务器
- appServer 和 Redis 都有可能故障
- Redis 为了保证一致性,异地不进行主从同步,也不进行双写
- 每个中心内部 Redis 冗余
解决方案:
配置文件切换
难点:
共识算法实现
共识算法理论参考:拜占庭将军问题
实现思路:
枚举正常/异常情况:
源代码:
使用方法:
- 命令:./redis-keepalive.sh [int]
- 加入定时任务,建议每5分钟检查一次
*/2 * * * * sh /data/switchredis/redis-keepalive.sh 2 >> /data/switchredis/redis-keepalive.log 2>&1