如何设计高可用架构
创始人
2024-03-03 06:48:05
0

高可用复杂度模型

在这里插入图片描述

计算高可用

任务分配

在这里插入图片描述

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

复杂度分析

  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算法

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...