系统高可用部署


目录

  1. 蚂蚁的LDC架构
  2. 双城四机房高保系统架构
  3. 双活架构和负载均衡

在分布式部署下,应用集群部署,流量进行负载均衡。

  • 应用集群是怎么进行部署的?
  • 流量是怎么分发到各个集群的
  • 如果应用集群中的一个实例挂了,怎么进行流量转发?怎么做高保

蚂蚁的LDC架构

部署架构图

几个概念

  • IDC:物理机房。通常有服务部署的城市,会有多个机房
  • LDC:逻辑机房,物理机房的一部分机器的集合
  • Zone的划分
    • RZone,是SOA化下,能提供完整应用服务的集群机器的集合。每个RZone集群只报错本Zone的用户数据,不同RZone间数据隔离服务单元化)。
    • CZone,在IDC机房下,可能会存在一个CZone集群,存储该IDC下的共享数据
    • GZone,有些IDC机房下,会有一个GZone集群,存储了所有应用集群可以共享的数据

LDC流量分发原则

  1. 同城流量优先访问本地机房集群
  2. RZone的流量按照用户UID进行路由,一般一个用户都会路由到对应城市的同一个RZone集群
  3. RZone优先访问自己城市的CZone,尽量避免跨城访问CZone
  4. 每个Zone的机器间,进行流量负载均衡

集群数据一致性

  • RZone不存在数据一致性问题,设计本身就是进行数据隔离,每个RZone内部做容灾处理
  • CZone之间有时候会做数据同步。比如进行某个人的交易情况查询,数据服务是CZone部署的,在长时间段,这个人的数据可能分布在不同的CZone里面,如果不做数据同步,在进行数据查询的时候,会存在数据缺失问题。

双城四机房高保系统架构

双城四机房部署

基于上述LDC架构,我们在设计一个CZone服务的可用性的时候,需要考虑

  • 需要在几个城市部署?

    通常公司会在几个主要城市部署机器,但是我们的CZone服务可能没有那么多资源在每个机房去部署,所以通常两个主要城市部署会承担大部分流量。比如北部和南部各选一个主要城市部署

  • 同一个城市怎么部署

    同一个城市,同城不会只部署一个机房,为了容灾会有多个机房。那我们的CZone服务在通常会部署在2个机房,进行容灾。

基于上述两点考虑,就会有常见的双城四机房高保系统架构

  1. 低耗时。同城流量优先访问本城市流量
  2. 高可用。同城的2个机房遵从主从架构。主机房承担流量,同时将数据同步至备机房。主机房挂了,可以切换至备机房提供服务。如果资源不够,2个机房也可以不使用主从架构,直接进行负载均衡流量。

双活架构和负载均衡

首先得区分这两个概念

  • 双活。就是平常说的主从架构。一主一丛。
    • 主节点和备节点,资源相当,理论上是1:1
    • 主节点挂了,直接启用备节点。
    • 主节点和备节点要保持数据一致性
    • 主节点和备节点内部的机器,遵从流量负载均衡
  • 负载均衡。就没有主备说法
    • 每个服务器都提供服务,承担流量
    • 如果一个服务器挂了,或一个节点挂了,流量会负载到其他服务器。

文章作者: 小小千千
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小小千千 !
评论
  目录