使用混合云多活方案时,建议参考以下架构搭建环境。

混合云多活架构要点

混合云多活其本质为异地多活,是通过异地的资源冗余,来保证在极端异常的情况下业务也能够正常运行。构建融合云上、运行的混合云架构时,需注意以下要点:
  • 单元封闭

    应用要走向异地,首先要面对的便是物理距离带来的延时。 如果某个应用请求需要在异地多个单元对同一行记录进行修改,为满足异地单元间数据库数据的一致性和完整性,我们需要付出高昂的时间成本。此外,如果某个应用请求需要多次访问异地单元,且各单元间服务再被服务调用,那物理延时将无法预估。 因此,数据库异地多活的问题转移到了如何避免跨单元的问题,即要做到单元内数据读写封闭,不能出现不同单元对同一行数据进行修改,所以我们需要找到一个维度去划分单元,避免数据写冲突。

  • 数据拆分
    选择什么维度来解决单点写的问题,要从业务本身入手去分析。例如电商的业务,最重要的流程即下单交易流程,从下单业务对数据划分单元时,改造成本最低、用户体验相对好的便是买家维度,即通过买家ID进行下单业务拆分,如下图所示。

    买家的下单操作在买家所在的本单元内即可完成读写封闭。 按照上述示例划分业务,就意味着非买家维度的就需要做一定的妥协。对于非买家维度的操作,比如卖家操作(例如商品数据的修改)就可能会跨单元,对于买家与卖家数据读一致的问题, 可以接受“最终一致”的就通过读写分离的方案, 不能接受“最终一致”的则需要跨单元访问。

为了实现最佳业务体验,混合云多活架构的设计需结合业务场景和应用实现做进一步优化设计(可联系阿里云产品经理获取架构设计咨询建议),以下以最简IT系统为例,示意混合云双活架构如何搭建(扩展2个以上阿里云可用区即为混合云多活)。

混合云多活推荐架构



架构说明:
  • 建议开通高速通道,通过专线搭建混合云的形态,应用系统同时部署在用户本地IDC和云端,构成本地业务中心+云上业务中心的混合云双活解决方案。
  • 本地业务中心与云上业务中心负载分担,同时提供业务服务:
    • 接入侧

      使用智能DNS分发流量至混合云的双数据中心,将应用做成无状态模式,在两个应用中心做对等的部署,突破运营商地域限制,按照地域切分流量。

    • 应用部署

      应用系统同时、对等地部署在用户本地IDC和云端两个中心。每个中心的应用集群同时挂在对应数据中心的负载均衡下,由对应数据中心的负载均衡将流量分发至应用集群中的某个节点中。

    • 缓存侧
      推荐通过Redis做应用的缓存读取。阿里云Redis产品兼容开源 Redis 协议,当云上、云下均使用阿里云Redis时,云上云下的Redis间可双向读写同步,通过CRDT(Conflict-free Replicated Data Type)机制检测并解决数据冲突,保障数据最终一致性。当云下使用开源Redis,阿里云可以接受来自云下IDC的单向读写同步信息。
      说明 如果云下IDC使用开源Redis,则可能出现无法接受阿里云Redis增强的缓存处理能力。阿里云Redis可能无法向云下Redis写数据,只能单向读取数据。建议您在本地IDC线下部署阿里云Redis。
    • 数据侧

      应用数据分别存储在云上、云下的数据库中,通过DTS做云上、云下数据库间的数据同步,保障云上、云下数据库数据一致性。

混合云多活架构优势

  • 多数据中心:阿里云在全球分布有多个数据中心,用户可在就近、合适区域选购、部署阿里云产品。
  • 稳定:每个区域及产品比较稳定,阿里云关键部件(SLB、ECS、Redis、RDS等)经多轮迭代具备比较完善的灾备能力,可以实现更细粒度的控制,可以通过更多已经产品化的功能模块实现容灾。
  • 弹性:用户可根据业务需求横向、纵向扩缩容,按需购买使用的服务。