架构师训练营第六周总结
1、MySQL复制:
(1)MySQL主从复制
(2)MySQL一主多从复制
优点:
1)分摊负载;2)专机专用;3)便于冷备;4)高可用。
(3)MySQL主主复制
(4)MySQL主主失效恢复
维护过程:
2、NoSQL
(1)CAP原理:
C:Consistency
即一致性,访问所有的节点得到的数据应该是一样的。注意,这里的一致性指的是强一致性,也就是数据更新完,访问任何节点看到的数据完全一致,要和弱一致性,最终一致性区分开来。
A:Availability
即可用性,所有的节点都保持高可用性。注意,这里的高可用还包括不能出现延迟,比如如果节点B由于等待数据同步而阻塞请求,那么节点B就不满足高可用性。
也就是说,任何没有发生故障的服务必须在有限的时间内返回合理的结果集。
P:Partiton tolerence
即分区耐受性,这里的分区是指网络意义上的分区。由于网络是不可靠的,所有节点之间很可能出现无法通讯的情况,在节点不能通信时,要保证系统可以继续正常服务。
对于分布式系统来说,三者无法同时满足,由于分区耐受性必须满足,即代表着可用性和一致性无法同时满足。
(2)事务的ACID特性
1)原子性(Atomicity):事务要么全部完成,要么全部取消。如果事务崩溃,状态回到事务之前(事务回滚)。
2)隔离性(Isolation):如果两个事务同时运行,事务最终的结果是相同的,不管哪个事务先结束,隔离性主要依靠锁实现。
3)持久性(Durability):一旦事务提交,不管发生什么(崩溃或者出错),数据要保存在数据库中。
4)一致性(Consistency):只有合法的数据(依照关系约束和函数约束)才能写入数据库。
(3)BASE理论:
基本可用(Basically Available)系统在出现不可预知故障时,允许损失部分可用性,如响应时间上的损失或者功能上的损失。
软状态(或弱状态,Soft state),指允许系统中的二数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
最终一致性(Eventually consistent)指系统中所有的数据副本,在经过一段时间的同步后,最终能够达到的一个一致的状态,因此最终一致性的本质是需要系统保证数据能够达到一致,而不需要实时保证系统数据的强一致性。
3、ZooKeeper
(1)ZooKeeper 特性
全局数据一致、可靠性、顺序性、数据更新原子性、实时性
(2)Zab协议
Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。
Zab协议是为分布式协调服务Zookeeper专门设计的一种 支持崩溃恢复 的 原子广播协议 ,是Zookeeper保证数据一致性的核心算法。Zab借鉴了Paxos算法,但又不像Paxos那样,是一种通用的分布式一致性算法。它是特别为Zookeeper设计的支持崩溃恢复的原子广播协议。
在Zookeeper中主要依赖Zab协议来实现数据一致性,基于该协议,zk实现了一种主备模型(即Leader和Follower模型)的系统架构来保证集群中各个副本之间数据的一致性。
这里的主备系统架构模型,就是指只有一台客户端(Leader)负责处理外部的写事务请求,然后Leader客户端将数据同步到其他Follower节点。
Zookeeper 客户端会随机的链接到 zookeeper 集群中的一个节点,如果是读请求,就直接从当前节点中读取数据;如果是写请求,那么节点就会向 Leader 提交事务,Leader 接收到事务提交,会广播该事务,只要超过半数节点写入成功,该事务就会被提交。
评论 (1 条评论)