架构训练营笔记:高可用设计

2-3高可用设计 

 高可用复杂度模型

架构训练营笔记:高可用设计_第1张图片

分为计算高可用,存储高可用,高可用本质上需要冗余,这里是集群,没有单机。

计算高可用:分为任务分配与任务分解。

计算高可用对比之前的高性能,就是多了状态检测。 

任务分配:

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

改动点:任务分配器需要监控业务服务器的状态,在故障时进行切换

架构训练营笔记:高可用设计_第2张图片

任务分解:

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

任务分解器需要监控业务服务器的状态,在故障时进行切换

架构训练营笔记:高可用设计_第3张图片

 

存储高可用复杂度模型

包含数据复制和状态决策 

架构训练营笔记:高可用设计_第4张图片

数据复制格式

复制命令

【优缺点】1)实现简单,复制数据量小2)数据可能不一致(SQL函数)

【适应场景】增量复制

复制数据

【优缺点】1)实现简单2)保证数据一致3)复制流量可能会很大

【适应场景】增量复制

复制文件(数据块)

【优缺点】1)实现复杂,复制的时候数据在变2)保证数据一致3)复制流量可能会很大

【适应场景】全量复制

数据复制方式

架构训练营笔记:高可用设计_第5张图片

同步复制:

【优缺点】1)最强一致性,故障容忍度低2)写入性能低【适应场景】主备/主从架构

异步复制:

【优缺点】1)写入性能高,故障容忍度高2)容易出现数据不一致【适应场景】数据存储集群

架构训练营笔记:高可用设计_第6张图片 半同步复制

【优缺点】同步复制和异步复制的折衷方案【适应场景】数据存储集群

多数复制:

【优缺点】1.数据强一致性,最强可用性,故障容忍度高2.写入性能不高,实现复杂【适应场景】分布式一致性、分布式协同(OceanBase)

高可用存储中间件:

redis :复制格式:命令+文件(RDB)复制方式:异步+wait(指定半同步)

hadoop 复制格式:数据块(Block)复制方式:Replication Pipelining

 Mysql:复制格式:命令(statement)+数据(Row)复制方式:异步+半同步

存储高可用状态决策-独裁式

【优缺点】1)决策逻辑简单2)决策者要做到高可用,整体架构复杂,常用ZooKeeper/Raft/Keepalived3)数据一致性强度中等

【应用场景】绝大部分业务都可以应用

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

Hadoop:使用Zookeeper集群来解决“决策者”单点问题。

存储高可用状态决策-协商式

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

【应用场景】内部系统、网络设备(用串口相连)

存储高可用状态决策-民主式/选举式

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

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

ZooKeeper:基于ZAB算法选举

2-4 如何全面提升架构设计的质量?

低成本

低成本本质上是对架构的一种约束,与高性能、高可用等架构是冲突的。

先设计架构方案,再看如何降低成本!

降低成本方式

优化:1.引入缓存2.虚拟化3.性能调优4.采用高性能硬件5.采用开源方案

创新:1.NoSQLvsSQL2.SQLvs倒排索引3.HadoopvsMySQL4.FacebookHHVM5.云计算/K8s弹性集群

 安全性 

架构训练营笔记:高可用设计_第7张图片

 分为架构安全与业务安全,架构设计主要解决架构安全问题,业务安全更多依赖具体技术实现。

架构训练营笔记:高可用设计_第8张图片

 案例的DDos攻击通常是运营商阿里云这种提供了防护措施。

业务安全:

架构训练营笔记:高可用设计_第9张图片

可测试性/可维护性/可观测性

可测试性:
软件系统在测试环境下能否方便的支持测试各种场景的能力

架构训练营笔记:高可用设计_第10张图片

可维护性

架构训练营笔记:高可用设计_第11张图片

可观测性

架构训练营笔记:高可用设计_第12张图片

 可观测性本质上是应用输出信息,可维护、可测试类似,都是为了解决问题。

架构设计步骤

架构训练营笔记:高可用设计_第13张图片

 

你可能感兴趣的:(笔记,高可用)