A. 系统架构理论基础(分布式)

A. 系统架构理论基础(分布式)
	CAP原则
		适用的分布式系统(互联和共享数据):1. CAP 关注的是对数据的读写操作,而不是分布式系统的所有功能。2. CAP 关注的粒度是数据,而不是整个系统。
		概念描述
			一致性:对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。
			可用性:非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。
			分区容忍性:当出现网络分区后,系统能够继续“履行职责”。
		应用思路
			CA:在分布式系统中,CA是不可满足的,因为分区是必然的
				虽然 CAP 理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择 P(分区容忍)要素,因为网络本身无法做到 100% 可靠,有可能出故障,所以分区是一个必然的现象。如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证 C,系统需要禁止写入,当有写入请求时,系统返回 error(例如,当前系统不允许写入),这又和 A 冲突了,因为 A 要求返回 no error 和 no timeout。因此,分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。
			CP
				如下图所示,为了保证一致性,当发生分区现象后,N1 节点上的数据已经更新到 y,但由于 N1 和 N2 之间的复制通道中断,数据 y 无法同步到 N2,N2 节点上的数据还是 x。这时客户端 C 访问 N2 时,N2 需要返回 Error,提示客户端 C“系统现在发生了错误”,这种处理方式违背了可用性(Availability)的要求,因此 CAP 三者只能满足 CP。
			AP
				如下图所示,为了保证可用性,当发生分区现象后,N1 节点上的数据已经更新到 y,但由于 N1 和 N2 之间的复制通道中断,数据 y 无法同步到 N2,N2 节点上的数据还是 x。这时客户端 C 访问 N2 时,N2 将当前自己拥有的数据 x 返回给客户端 C 了,而实际上当前最新的数据已经是 y 了,这就不满足一致性(Consistency)的要求了,因此 CAP 三者只能满足 AP。注意:这里 N2 节点返回 x,虽然不是一个“正确”的结果,但是一个“合理”的结果,因为 x 是旧的数据,并不是一个错乱的值,只是不是最新的数据而已。
		注意事项
			忽略延时
			正常运行情况下,不存在 CP 和 AP 的选择,可以同时满足CA
			放弃并不等于什么都不做,需要为分区恢复后做准备。
	ACID原则
		原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
		一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
		事务独立性:数据库允许多个并发事务同时对数据进行读写和修改的能力。隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
		持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
	BASE原则:是CAP的延伸和补充
		核心思想:即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性。
		技术点
			基本可用性:分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
			软状态或者柔性状态:允许系统存在中间状态,而该中间状态不会影响系统整体可用性。这里的中间状态就是 CAP 理论中的数据不一致。
			最终一致性:系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。
	幂等性
	一致性模型
	副本更新策略
		同时更新
		主从式更新
		任意节点更新
	一致性协议
		两阶段提交协议
			第一阶段请求
			第二阶段提交
		向量时钟
		RWN协议
		Paxos协议
		Raft协议

猜你喜欢

转载自blog.csdn.net/micklongen/article/details/89743518
今日推荐