一、多机房的意义
机房可能会出现不可预料的故障,不能把鸡蛋放一个篮子里。多机房的目的是在保证99%的高可用的基础上增加0.1%。
1、同城多机房
同城的两个机房通过一根专线连接,应对机房级别的最优架构
2、跨城多机房
异地距离远带来的网络延迟问题,容易导致数据不一致。
需要考虑的是数据是否要求强一致性!!不适用于强一致性的需求。
3、跨国多机房
距离相比跨城多机房更远,网络延迟更严重,适合只读业务和为不同地区用户服务的场景。
二、具体步骤
1、业务分级
- 访问量
- 核心业务
- 带来大量收入
2、数据分类
3、数据同步
- 存储系统同步
- 消息队列同步
- 支持重复生成
4、异常处理
- 多通道同步
支持mysql主从同步和消息队列一起。- 同步和访问结合
A机房可以访问B机房接口- 日志记录
- 用户补偿
三、常用技巧
1、保证核心业务
登录相比注册更核心
2、保证核心数据的最终一致性
不保证实时一致性
3、采用多种同步数据手段
4、保证绝大多数用户
保证99.99%,不去强制要求剩下的0.01%也符合此要求。
- 发布公告
- 事后弥补补偿用户
- 业务体验优化