写点什么

架构师第六周作业及总结

用户头像
傻傻的帅
关注
发布于: 2020 年 07 月 14 日

话说天下大势,合久必分,分久必合。

各种技术之间没有优劣、高低之分,每种技术或技术之组合都有与之对应的最佳应用场景。没有哪一种技术是就是银弹,架构师的价值所在就是对症每一种业务场景应用不同的技术(组合)。业务和技术相辅相成,业务的症成了技术的就,技术的道解决了业务的痛。



分布式数据库架构-mysql

  1. 主从复制

  2. 级联复制

  3. 读写分离

  4. MGR集群

  5. PXC集群

  6. 主主复制(在生产环境中不建议此种架构模式,容易造成数据冲突和混乱)

  7. MHA主高可用架构

  8. 基于zookeeper的主高可用



分布式的架构的理论基础-CAP定理

CAP定理,又被称为布鲁尔定理,由加州大学伯克利分校的计算机科学家埃里克.布鲁尔在2000年的ACM PODC上提出的一个猜想。2002年,麻省理工学院的赛斯.吉尔伯特和南希.林奇发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。



CAP:在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consstence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。

  • C(Consistence):对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。

  • A(Availability):非故障节的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。

  • P(Partition Tolerance):当出现网络分区后,系统能够继续“履行职责”。



虽然CAP理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择P(分区容错性)要素,因为网络本身无法做到100%可靠,有可能出现故障,那么分区是一个必须的现象。如果我们选择了CA而放弃了P,那么当分区现象发生时,为了保证C,系统需要禁止写入,当有写请求时,系统返回了error,这又和A冲突了,因为A要求返回no error和no timeout。因此,分布式系统理论上不可能选择CA架构,只能选择CP或AP架构。

  • CP-Consistence/Partition Tolerance

如上图所示,为了保证一致性,当发生分区现象后,N1节点上的数据已经被客户端1更新到X1后,但这时由于N1和N2节点之间的网格发生故障,造成复制通道中断,数据X1无法更新到节点N2上,节点N2上面的数据还是X。这时客户端2访问到了N2节点,这时N2节点需要返回ERROR,提示客户端“系统现在发生了错误”,这种处理方式违背了可用性A的要求,因此CAP三者只能满足CP。



  • AP-Availability/Partition Tolerance



如上图所示,为了保证可用性,当分区现象发生后,N1节点上的数据已经被客户端更新到了Y1状态,这时N1和N2节点之间发生了网络故障,复制通道中断,数据Y1无法复制到N2节点进行更新,节点N2上的数据是Y,这时客户端2向N2节点发起数据请求,N2节点将自已当前的数据Y返回给了客户端2。而实际上最新的数据应该是Y1,这就不满足一致性A的要求了,CAP三者只能满足AP。



CAP关注的粒度是数据,而不是整个系统。

CAP是忽略网络延迟的

正常运行情况下,不存在CP和AP的选择,可以同时满足CA

放弃并不等于什么都不做,需要为分区恢复后做准备



BASE理论

BASE是Basically Available(基本可用)、Soft State(软状态)、Eventually Consistency(最终一致性)三个短语的缩写,其核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性。

  • 基本可用(Basically Available):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用

  • 软状态(Soft State):允许系统存在中间状态,而该中间状态不会影响系统整体可用性。

  • 最终一致性(Eventually Consistency):系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。

BASE理论是CAP理论中AP方案的延伸。



ACID特性

ACID特指事务的四大特性:

  • 原子性(Atomicity):事务包含的所有操作要么全部成功,要么全部失败回滚。因此,如果事务操作成功,则必须要全部应用到数据库中,如果事务操作失败,则不能对数据库有任何的影响

  • 一致性(Consistency):事务必须使数据库从一种一致性状态变迁到另一种一致性状态,即一个事务执行之前和执行之后都必须处于一致性状态

  • 隔离性(Isolation):当多个用户并发访问数据库同一对象时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相到隔离

  • 持久性(Durability):事务一旦提交成功,那么它对数据库的改变将是永久性的。即使数据库系统发生重启或异常断电等状况,已经提交的事务也不会丢失

ACID特性是支持事务的关系型数据库所必须遵循的原则,事务的实现机制非常复杂,它使用回滚机制来实现事务的原子性,借助锁机制和MVCC机制来保证事务的并发性和隔离性,基于WAL、checkpoint、crash recovery等机制实现事务的持久性。从而保证整个数据库系统始终处于一致状态。

发布于: 2020 年 07 月 14 日阅读数: 50
用户头像

傻傻的帅

关注

走自已的路,让别人无路可走 2019.09.18 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请添加“极客大学架构师训练营”标签,方便分类
2020 年 07 月 15 日 10:57
回复
没有更多了
架构师第六周作业及总结