分布式云盘系统例题

题目:请设计一个类似于百度网盘的分布式云盘系统BPan,给出设计方案,包括:
1.说明BPan满足CAP中的哪几个,并说明原因。
2.列出BPan可能出现的故障及对应的解决方法。
3.说明BPan采用的数据分布与副本策略、及采用的原因。
4.给出BPan系统采用的共识算法,并说明采用该算法的原因。

1.知识点:
CAP分别指:一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)
一致性:副本一致性,这里特指强一致性,强调的是数据正确。
可用性:指在系统出现错误之前已经可用的功能,强调的是不出错。
分区容错性:指系统可以对网络分区这种异常现象进行容错处理,强调的是不挂掉。

没有任意一种协议可以同时满足CAP。
CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。如果在某个分布式系统中数据无副本, 那么系统必然满足强一致性条件, 因为只有独一数据,不会出现数据不一致的情况,此时C和P两要素具备,但是如果系统发生了网络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足。

consistency(一致性): 每次read,要么能获取到最新的数据,要么获取失败(错误或超时)
availability(可用性): 每次请求肯定会有正确的数据(但不保证数据是最新)
partition tolerance(分区容忍性): 尽管有部分消息在节点间丢失,但是系统还可以正常运行

参考答案:BPan满足CAP中的A、P。可用性和分区容错性。每次请求肯定会有正确的数据(但不保证数据是最新)、尽管有部分消息在节点间丢失,但是系统还可以正常运行。

2.知识点:
分布式常见的异常
(1)机器宕机
引起机器宕机的原因可能是停电、内存错误等。发生机器宕机时,节点无法进入可用状态,机器需要重启,但是内存会被清空。一些节点需要读取本地储存设备当中的信息或其他节点的信息来恢复内存信息,还有一些“无状态”节点无需读取任何信息即可进入可用状态。
(2)网络异常
网络异常可能会造成信息丢失、信息乱序、数据错误的后果。还有一些特殊的异常“网络分区”(即集群被划分成几个分区,分区域分区之间无法通信,只能分区内部通信)
(3)磁盘故障
磁盘故障分为两种情况:磁盘损坏和磁盘数据错误
磁盘损坏会使数据全部丢失,因此我们考虑将磁盘数据保存到多个服务器上来保障即使某一台服务器磁盘损坏,其他服务器上还能保留它的数据
磁盘数据丢失既可以通过操作系统层面来恢复也可以通过上层分布式系统来恢复。

参考答案:可能出现数据丢失。当数据丢失时,通过读取副本恢复。

3.知识点:
数据范围分布
将数据按特征值的值域范围划分为不同的区间, 使得集群中每台(组)服务器处理不同区间的数据
副本策略:数据段副本
以数据段( segment,fragment,chunk,partition )为单位作为副本。实践中,常常使得每个数据段的大小尽量相等且控制在一定的大小以内。数据段的选择与数据分布方式直接相关。
某系统中的数据有 3 个数据段 o、p、q,每个数据段都有三个副本,系统中有4台机器,第一台机器上有数据段 o、p、q,第二台机器上有数据段 o、p,第三台机器上有数据段 p、q, 第四台机器上有数据段 q、o。

参考答案:采用数据范围分布,将数据按特征值的值域范围划分为不同的区间, 使得集群中每台(组)服务器处理不同区间的数据;采用副本策略为数据段副本,使得每个数据段的大小尽量相等且控制在一定的大小以内。

4.知识点:
RAFT,一致性共识算法
Raft选举算法选举过程
Raft协议中有三种状态:follower、candidate、leader
follower一段时间未收到leader的“心跳”,则认定没有leader(leader为选出或者上一个leader挂了)的, 此时follower会切换到candidate状态进行选举,他们会发出request vote并等待投票结果(自己也可以给自己投票),收到最多数选票的成为leader。
Leader只能有一个,当candidate发现已经有leader时停止选举,计算机为了防止平票情况的出现会尽可能设置奇数个follower。
规定先到先得,一个节点只能投一票。如果follower A 向follower C发送request vote 并且follower C给 A投票了,B再向follower C发送请求则得不到回复。
Leader出现后会发送通知广而告知已经出现leader,其他candidate停止选举。Election结束后会进入一段时间的平稳工作期。Leader向follower发出要求,例如将“A”写入日志,其他follower将“A”写入磁盘后向leader发出Committed OK,在下一个“心跳”中leader会让follower更新Committed项目。

参考答案:采用Raft选举算法,强调合法leader的唯一性协议,它们直接从leader的⻆度描述协议的流程,也从leader的角度出发论证正确性。

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值