第六周作业

发布于: 2020 年 07 月 12 日
第六周作业
  1. 请简述CAP原理

1.1 C 代表一致性(Consistency)

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

这是理性的状态,在分布式场景下,由于多个数据库有可能数据不同步,就会导致返回数据不是最新的。

1.2 A 代表可用性(Availability)

可用性就是说,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的(Every request receives a (non-error) response, without the guarantee that it contains the most recent write),也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但是并不保证响应的数据是最新的。

这样的场景是可以提高一部分应用的使用体验,但是有些应用比如:支付,下单等数据功能相关的操作,必须保证数据的最新,否则是导致严重的后果。

1.3 P 代表分区耐受性(Partition tolerance)

分区耐受性就是说,即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的(The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes)。

以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

1.4 CAP原理

当网络分区失效发生的时候,我们要么取消操作,这样数据就是一致的,但是系统却不可用;要么我们继续写入数据,但是数据一致性就得不到保障。

对于一个分布式系统而言,网络失效一定会发生,也就是说,分区容错性是必须保证的,那么在可用性和一致性就必须二选一。

当网络分区失效,也就是网络不可用的时候,如果选择了一致性,系统就可能返回一个错误或者干脆超时,即系统不可用。如果选择了可用性,那么系统总是可以返回一个数据,但是并不能保证这个数据的最新的。

CAP原理的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。

就是说在分布式存储系统中,最多只能实现上面的两点。而由于网络硬件肯定会出现延迟丢包等问题,所以分区耐受性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡。

所以,关于CAP原理,更准确的说法是,在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时满足。

1.5 扩展:CAP与BASE的关系

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

接下来我们着重对BASE中的三要素进行详细讲解。

基本可用:指分布式系统在出现不可预知故障的时候,允许损失部分可用性。

注意,这绝不等价于系统不可用,以下两个就是“基本可用”的典型例子:

响应时间上的损失:正常情况下,一个在线搜索引擎需要0.5秒内返回给用户相应的查询结果,但由于出现异常(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了1~2秒。

功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。

弱状态:也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

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

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

2.1 判断系统进入临时失效状态

先向存储服务器 S1 写三次数据,如果三次都写入失败,报告管理中心,管理中心再向存储服务器 S1 写三次数据,如果三次都失败,标记当前存储服务器S1不可用。

2.2 临时失效中的读写过程

写:启动临时存储服务器 T3,将最新进入的数据,即写入临时存储服务器T3,同时保证也写入到存储服务器S2。

读:读的时候,只读存储服务器S2

2.3 失效恢复过程

两个小时内,如果机器恢复,则新进入的数据,往存储服务器S2写是时候,也往新启动的服务器S1写。同时,将临时存储服务器T3的数据,写到恢复的存储服务器S1上。

恢复的服务器S1,在迁移完成之前不提供读的功能。当临时服务器T3的所有临时数据到迁移到的存储服务器S1后,则可以S1和S2两个存储服务器,都可用(读写都可用)。

如果2个小时,还未恢复,则标记为服务器S1永久停止服务.

用户头像

胡江涛

关注

放肆才叫青春 2019.05.11 加入

IT软件工程师,一枚

评论

发布
暂无评论
第六周作业