写点什么

极客大学 - 架构师训练营 第六周作业

用户头像
9527
关注
发布于: 2020 年 10 月 29 日

作业一

请简述 CAP 原理

CAP原理

“学会取舍,并没有高一致性,高可用性,高分区容错性的完美设计”

13年前,Eric Brewer教授指出了著名的CAP理论,后来Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。在设计和部署分布式应用的时候,存在三个核心的系统需求,这个三个需求之间存在一定的特殊关系。这就是我们通常所说的CAP原理了。这三个需求如下:

  • C: Consistency (一致性)

  • 每次读取的数据都应该是最近写入的数据或者返回一个错误(Every read receives the most recent write or an error),而不是过期数据,也就是说,数据是一致的。

  • A: Availability (可用性)

  • 可用性是说,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的

  • P: Partition Tolerance (分区容错性)

  • 即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的



CAP的核心理论是: 一个分布式系统不可能同时很好的满足 一致性可用性分区容错性这三个需求,最多只能同时较好的满足两个。因此,根据CAP原理,我们可以将NoSQL数据库分成满足CA原则、CP原则和AP原则三大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。 (传统数据库)

  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。 (Redis、MongoDB)

  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。 (大多数网站架构的选择





受到CAP理论的约束,不可能达到高一致性,高可用性,高分区容错性的完美设计。所以我们在设计的时候要懂得取舍,重点关注对应用需求来说比较重要的,而放弃不重要的,在CAP这三者之间进行取舍,设计出贴合应用的存储方案。

4. 达到最终一致性的方法
  • 简单冲突处理策略:根据时间戳,最后写入覆盖。

  • 在客户端进行冲突解决

  • 投票解决冲突 (Cassandra)

5. ACID VS BASE

ACID - 主要针对关系型数据库, 最大的特点就是事务处理

  • 原子性(Atomicity): 事务要么全部完成,要么全部取消。 如果事务崩溃,状态回到事务之前(事务回滚)

  • 隔离性(Isolation): 如果2个事务 T1 和 T2 同时运行,事务 T1 和 T2 最终的结果是相同的,不管 T1和T2谁先结束,隔离性主要依靠锁实现。

  • 持久性(Durability): 一旦事务提交,不管发生什么(崩溃或者出错),数据要保存在数据库中。

  • 一致性(Consistency): 只有合法的数据(依照关系约束和函数约束)才能写入数据库



BASE - 主要针对分布式数据库, 最大的特点就是分布式,即满足BASE,ASE方法通过牺牲一致性和孤立性来提高可用性和系统性能。

  • 基本可用(Basically Available)系统在出现不可预知故障时,允许损失部分可用性,如响应时间上的损失或功能上的损失。

  • Soft state(弱状态)软状态,指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

  • Eventually consistent(最终一致性)指系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态,因此最终一致性的本质是需要系统保证数据能够达到一致,而不需要实时保证系统数据的强一致性。



作业二

针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)



Doris (https://github.com/itisaid/Doris) 是一个海量分布式KV存储系统,其设计目标是支持中等规模高可用、可伸缩的KV存储集群。跟主流的NoSQL系统HBase相比(Doris0.1 vs. HBase0.90),Doris具有相似的性能和线性伸缩能力,并具有更好的可用性及更友好的图形用户管理界面。



对于Doris而言,影响系统整体可用性的故障可以分为三类

  • 瞬时故障:引起这类故障的主要原因是网络通信瞬时中断、服务器内存垃圾回收或后台线程繁忙停止数据访问操作响应。其特点是故障时间短,在秒级甚至毫秒级系统即可自行恢复正常响应

  • 临时故障:引起这类故障的主要原因是交换机宕机、网卡松动等导致的网络通信中断;系统升级、停机维护等一般运维活动引起的服务关闭;内存损坏、CPU过热等硬件原因导致的服务器宕机;这类故障的主要特点是需要人工干预(更换硬件、重启机器等)才能恢复正常。通常持续时间需要几十分钟甚至几小时。故障时间可分为两个阶段:临时故障期间,临时故障恢复期间

  • 永久故障:引起这类故障的主要原因只有一个:硬盘损坏,数据丢失。虽然损坏硬盘和损坏内存一样,可以通过更换硬盘来重新启动机器,但是丢失的数据却永远找不回来了,因此其处理策略也和前面两种故障完全不同,恢复系统到正常状态也需要更长的时间。故障时间可分为两个阶段:永久故障期间和永久故障恢复期间



Doris临时失效的处理过程时序图



发布于: 2020 年 10 月 29 日阅读数: 27
用户头像

9527

关注

还未添加个人签名 2020.04.22 加入

还未添加个人简介

评论

发布
暂无评论
极客大学 - 架构师训练营 第六周作业