如何设计高可用架构
创始人
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算法

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...