目录
- 蚂蚁的LDC架构
- 双城四机房高保系统架构
- 双活架构和负载均衡
在分布式部署下,应用集群部署,流量进行负载均衡。
- 应用集群是怎么进行部署的?
- 流量是怎么分发到各个集群的
- 如果应用集群中的一个实例挂了,怎么进行流量转发?怎么做高保
蚂蚁的LDC架构
部署架构图
几个概念
- IDC:物理机房。通常有服务部署的城市,会有多个机房
- LDC:逻辑机房,物理机房的一部分机器的集合
- Zone的划分
- RZone,是SOA化下,能提供完整应用服务的集群机器的集合。每个RZone集群只报错本Zone的用户数据,不同RZone间数据隔离(服务单元化)。
- CZone,在IDC机房下,可能会存在一个CZone集群,存储该IDC下的共享数据。
- GZone,有些IDC机房下,会有一个GZone集群,存储了所有应用集群可以共享的数据。
LDC流量分发原则
- 同城流量优先访问本地机房集群
- RZone的流量按照用户UID进行路由,一般一个用户都会路由到对应城市的同一个RZone集群
- RZone优先访问自己城市的CZone,尽量避免跨城访问CZone
- 每个Zone的机器间,进行流量负载均衡
集群数据一致性
- RZone不存在数据一致性问题,设计本身就是进行数据隔离,每个RZone内部做容灾处理
- CZone之间有时候会做数据同步。比如进行某个人的交易情况查询,数据服务是CZone部署的,在长时间段,这个人的数据可能分布在不同的CZone里面,如果不做数据同步,在进行数据查询的时候,会存在数据缺失问题。
双城四机房高保系统架构
基于上述LDC架构,我们在设计一个CZone服务的可用性的时候,需要考虑
需要在几个城市部署?
通常公司会在几个主要城市部署机器,但是我们的CZone服务可能没有那么多资源在每个机房去部署,所以通常两个主要城市部署会承担大部分流量。比如北部和南部各选一个主要城市部署
同一个城市怎么部署
同一个城市,同城不会只部署一个机房,为了容灾会有多个机房。那我们的CZone服务在通常会部署在2个机房,进行容灾。
基于上述两点考虑,就会有常见的双城四机房高保系统架构。
- 低耗时。同城流量优先访问本城市流量
- 高可用。同城的2个机房遵从主从架构。主机房承担流量,同时将数据同步至备机房。主机房挂了,可以切换至备机房提供服务。如果资源不够,2个机房也可以不使用主从架构,直接进行负载均衡流量。
双活架构和负载均衡
首先得区分这两个概念
- 双活。就是平常说的主从架构。一主一丛。
- 主节点和备节点,资源相当,理论上是1:1
- 主节点挂了,直接启用备节点。
- 主节点和备节点要保持数据一致性。
- 主节点和备节点内部的机器,遵从流量负载均衡
- 负载均衡。就没有主备说法
- 每个服务器都提供服务,承担流量
- 如果一个服务器挂了,或一个节点挂了,流量会负载到其他服务器。