- 最近公司出现跨机房调用redis超时导致的故障,借此简单记录一下微服务依赖的相关组件使用规范。
Redis
- 每个服务的每个IDC对应一套Redis集群,原则上:
- 不同服务不共用一套redis:避免业务相互影响,key定义冲突等问题;
- 不跨机房读写redis:避免不必要的时延等
- 同个服务不同IDC的redis数据怎么同步?
- 通过消息队列异地通知
- 如果一定要双写,异地IDC的同步尽量异步
- 如果一定要跨IDC读Redis,要控制好超时时间和降级
MySQL
- 看具体业务选择合适的部署方式
- 数据不要求强一致,可覆盖的业务(比如用户基础信息),可以采用双活架构,MySQL使用双主架构,通过otter 同步数据
- 要求强一致,不可覆盖的业务(比如用户资产),可以采用主备架构,MySQL跨IDC搭建主从。