如何设计高可用架构

本文探讨了构建高可用系统的关键元素,包括任务分配和数据复制。任务分配通过任务分解和分配器设计确保业务连续性,而数据复制则通过同步、异步和半同步等多种策略保障数据一致性。文中列举了Redis和MySQL的复制实例,并分析了各种复制方式的优缺点。此外,还介绍了独裁式、协商式和民主式的状态决策机制及其适用场景。
摘要由CSDN通过智能技术生成

高可用复杂度模型

在这里插入图片描述

计算高可用

任务分配

在这里插入图片描述

将任务分配给多个服务器执行

复杂度分析

  1. 增加“任务分配器”节点,可以是独立的服务器,也可以是SDK
  2. 任务分配器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如Zookeeper)
  3. 任务分配器需要根据不同的需求采用不同的算法分配
  4. 任务分配器需要监控业务服务器的状态,在故障时进行切换

任务分配架构设计关键点

在这里插入图片描述

案例

在这里插入图片描述

任务分解

在这里插入图片描述

将服务拆分为不同角色,不同服务器处理不同的业务

复杂度分析

  1. 增加“任务分解器”节点,可以是独立的服务器,也可以是SDK
  2. 任务分解器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如Zookeeper)
  3. 需要设计任务拆分的方式,任务分解器需要记录“任务”和“服务器”的映射关系
  4. 任务分配器需要根据不同的需求采用不同的算法分配
  5. 任务分解器需要监控业务服务器的状态,在故障时进行切换

任务分解架构设计关键点

在这里插入图片描述

案例-微信服务拆分

在这里插入图片描述

架构模式
  1. 按照业务逻辑划分服务器集群
  2. 独立的接入服务器

存储高可用

复杂度模型

在这里插入图片描述

数据复制

复制格式
复制命令

在这里插入图片描述

优缺点
  1. 实现简单,复制数据量小
  2. 数据可能不一致(SQL函数)
适用场景

增量复制

复制数据

在这里插入图片描述

优缺点
  1. 实现简单
  2. 保证数据一致
  3. 复制流量可能会很大
适用场景

增量复制

复制文件

在这里插入图片描述

优缺点
  1. 实现复杂,复制的时候数据在变
  2. 保证数据一致
  3. 复制流量可能会很大
适用场景

全量复制

复制方式
同步复制

在这里插入图片描述

优缺点
  1. 最强一致性,故障容忍度低
  2. 写入性能低
适应场景

主备/主从架构

异步复制

在这里插入图片描述

优缺点
  1. 写入性能高,故障容忍度高
  2. 容易出现数据不一致
适应场景

数据存储集群

半同步复制

在这里插入图片描述

优缺点

同步复制和异步复制的折中方案

适应场景

数据存储集群

多数复制

在这里插入图片描述

优缺点
  1. 数据强一致性,最强可用性,故障容忍度高
  2. 写入性能不高,实现复杂
适应场景

分布式一致性、分布式协同

案例
Redis

在这里插入图片描述

复制格式:命令(AOF)+文件(RDB)

复制方式:异步+wait(指定半同步)

MySQL

在这里插入图片描述

复制格式:命令(statement)+数据(Row)

复制方式:异步+半同步

状态决策

方式
独裁式

在这里插入图片描述

优缺点
  1. 决策逻辑简单
  2. 决策者要做到高可用,整体架构复杂,常用Zookeeper、Raft、Keepalived
  3. 数据一致性强度中等
应用场景

绝大部分业务都可以应用

协商式

在这里插入图片描述

优缺点
  1. 架构实现简单,决策逻辑简单,一般是心跳机制
  2. 如果是链路问题,会导致双主,可以用双通道来缓解
  3. 数据一致性弱
应用场景

内部系统

民主式/选举式

在这里插入图片描述

优缺点
  1. 决策过程复杂,决策逻辑复杂,一般用标准算法进行选举,例如Raft、ZAB、Paxos
  2. 可用性最高,数据一致性最强
  3. 可能出现“脑裂”问题,可以采用quorum来控制
应用场景

对数据一致性要求很高的场景,例如余额、库存

案例
独裁式
Redis

在这里插入图片描述

使用Sentinel集群来解决“决策者”单点问题,sentinel又是通过Raft算法进行选举的

Hadoop

在这里插入图片描述

NameNode是集群决策者,使用Zookeeper集群来解决NameNode单点问题

民主式
Zookeeper

在这里插入图片描述

基于ZAB算法选举

MongoDB

在这里插入图片描述

3.2.0以前基于bully算法,3.2.0开始基于Raft算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值