架构师训练营第 6 周:技术选型 (二)
一. CAP 原理
(一). Consistency
即一致性,访问所有的节点得到的数据应该是一样的。这里的一致性指的是强一致性:数据更新完,访问任何节点看到的数据完全一致,要和弱一致性以及最终一致性区分开来。
(二). Availability
即可用性,所有的节点都保持高可用性。这里的高可用还包括不能出现延迟,也就是说任何没有发生故障的服务必须在有限的时间内返回合理的结果集。
(三). Partiton tolerance
即分区容忍性,这里的分区是指网络意义上的分区。由于网络是不可靠的,所有节点之间很可能出现无法通讯的情况,在节点不能通信时,要保证系统可以继续正常服务。
二. 学习总结
(一). 分布式数据库
1. MySQL集群
主要包括如下几种:主从复制、一主多从、主主复制。其中,主主复制的两个数据库不能并发写入;复制只是增加了数据的读并发处理能力,没有增加写并发能力和存储能力;更新表结构会导致巨大的同步延迟。
还可通过数据分片实现多个数据库并发写入,主要有如下几种:硬编码实现数据分片、映射表外部存储、分布式数据库中间件 Mycat。
2. NoSQL
CAP 原理:一致性、可用性、分区容忍性。
最终一致性:如果最终一致性写冲突,可根据时间戳,最终写入覆盖。
ACID 和 BASE:
(二). 分布式一致性
在一个分布式系统中,不同服务器获得了互相冲突的数据信息或者执行指令,导致整个集群陷入混乱,数据损坏,本称作分布式系统脑裂。
1. 分布式一致性算法 Paxos
Prepare 阶段。Proposer 向 Acceptors 发出 Prepare 请求,Acceptors 针对收到的 Prepare 请求进行 Promise 承诺
Accept 阶段。Proposer 收到多数 Acceptors 承诺的 Promise 后,向Acceptors 发出 Propose 请求,Acceptors 针对收到的 Propose 请求进行 Accept 处理
Learn 阶段。Proposer 在收到多数 Acceptors 的 Accept 之后,标志着本次Accept 成功,决议形成,将形成的决议发送给所有 Learners
评论