多IDC下微服务数据如何同步

  • 最近公司出现跨机房调用redis超时导致的故障,借此简单记录一下微服务依赖的相关组件使用规范。

Redis

  1. 每个服务的每个IDC对应一套Redis集群,原则上:
    • 不同服务不共用一套redis:避免业务相互影响,key定义冲突等问题;
    • 不跨机房读写redis:避免不必要的时延等
  2. 同个服务不同IDC的redis数据怎么同步?
    • 通过消息队列异地通知
    • 如果一定要双写,异地IDC的同步尽量异步
    • 如果一定要跨IDC读Redis,要控制好超时时间和降级

MySQL

  • 看具体业务选择合适的部署方式
  • 数据不要求强一致,可覆盖的业务(比如用户基础信息),可以采用双活架构,MySQL使用双主架构,通过otter 同步数据
  • 要求强一致,不可覆盖的业务(比如用户资产),可以采用主备架构,MySQL跨IDC搭建主从。