写点什么

Week 06 命题作业

用户头像
Jeremy
关注
发布于: 2020 年 07 月 16 日
Week 06 命题作业



作业1:请简述 CAP 原理

定义



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



  • 一致性:CAP中的C和ACID 中的C不是一个含义,ACID 中的C是指数据库中的数据满足一定的约束条件。而CAP中的C是指线性一致性,即:客户端向系统写入什么,那么读出来的也会是什么。也就是要保证客户端读取到的数据一定是上次写入的最新数据。

  • 可用性:指系统中的部分节点出现故障后,系统能否还能对外提供完全可用的服务;

  • 分区容错性:指是否允许系统中的节点之间无法通信,也就是无法互相连接;



适用场景



那么什么样的分布式系统是节点之间互联并共享数据呢?



典型的场景就是数据库的主从集群,一个数据库集群有一个主,多个从,主从之间会进行数据复制。所以适用于CAP原理。



那么如果我现在是一个Redis的集群,集群中每台机器存储不同的数据,集群中每台机器不需要复制和传递数据,那么就不属于CAP原理的讨论范围。同理,如果是A,B两个不同的业务系统,比如招行账号A给工行账号B转账100元,由于招行和工行是两个不同的业务系统,业务上隔离,且他们之间也没有共享的数据,从而也不属于CAP原理的讨论范围。



作业2

针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程

(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)。



作为海量分布式KV存储系统,常见故障分为三类:

1) 瞬时故障. 瞬间秒级恢复,一般指网络中断, 内存垃圾回收或者线程忙导致停止数据访问等.

2) 临时故障.网卡,交换机,内存损坏,CPU过热等硬件原因,这种情况一般需要人工干预,恢复时间一般在几十分钟到几小时内不等.

3) 永久故障. 硬盘损坏,数据损坏丢失.



针对临时故障, 分为以下几个阶段:

1) 判定故障, 主要经历为应用层-->存储服务器A--->失败, 然后根据设定好的重试机制进行重连, 如果仍然失败, 则应用层--->管理中心请求仲裁--->发送心跳到存储服务器A---如果请求通讯超时,此时判定存储服务器A为故障,进行系统内广播,告知不要再请求到这个服务器,并通知相关人员人工介入干预. UML图如下:





2) 失效期内的读写: 临时故障失效期内, 将数据写到正常的存储服务器,同时记录日志文件到备份服务器,待故障恢复后进行同步. 读取数据服务只从正常存储服务器读. 具体UML图如下:



3)恢复故障期间的读写:正常启动后,备份服务器将数据同步到故障恢复的节点服务器中,此时,读取服务,仍然从正常服务器中读取,待恢复同步完毕,写数据服务,可以和以前一样,同时写两份,一份到正常服务器,一份到故障恢复的节点中. UML见下图:



用户头像

Jeremy

关注

还未添加个人签名 2018.01.21 加入

还未添加个人简介

评论

发布
暂无评论
Week 06 命题作业