-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdistributed system.txt
74 lines (55 loc) · 4.27 KB
/
distributed system.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// list of distributed system questions
// TL;DR
1、为什么需要分布式系统?
2、分布式系统需要面对的问题有哪些?
3、简单描述下CAP理论?举例说明CA对应什么系统,CP对应什么系统,AP对应什么系统?
CA不保证分区容忍性,对应的是本地数据库系统,本地文件系统等。但是C和A本身是
对立的两个概念,本地数据库已经不是分布式系统了。
CP不保证可用性,常见的如分布式数据库,大多数的分布式一致性协议等
AP则不保证数据的一致性,常见的如NoSQL数据库,DNS系统等
4、什么是2PC?
(tips:协调者发送canCommit,当执行者回复ack后,事务提交;
问题在于,当第一步执行者回复ack后,执行者会blocking等待,如果这时协调者crash,
那么整个系统将不可用)
5、什么是3PC?
(tips:3PC为了解决2PC的blocking问题,引入pre-commit阶段
1、在participant转为pre-commit状态前,coordinator crash,那么事务可以安全的abort
2、在partitipant转为pre-commit状态后,coordinator crash,那么新的coordinator启动后,
通过询问其他participant的状态,如果全部为pre-commit,那么事务可以安全提交;如果状态
不一致,那么需要abort transaction)
6、什么是leader 选举?
7、简单描述下paxos算法,它解决了什么问题?
8、简单描述下raft算法,它和paxos算法有哪些区别?
9、什么是一致性哈希,它解决了什么问题?使用时又有什么需要注意的?
(tips:具体的计算过程是怎样,是否需要搬迁数据)
10、一般主机保活探测用什么技术实现?
11、常用的负载均衡算法有哪些?
12、集群NAS相比多节点NAS分别挂载有哪些好处?
(tips:1、统一的命名空间,用户不用考虑目录或挂载点的安排
2、统一管理,高效的故障切换和在线迁移)
13、bloom filter 有什么缺点?
(tips:1、查询性能弱,这个主要是因为需要多次hash计算
2、空间利用率低,和 cuckoo filter相比
3、不支持反响删除操作,基本用于只读场景下
4、不支持计数操作)
14、分布式系统中一个需要解决的问题是将 partial-failure 转换为 fail-stop failure,
因为在常见的心跳设计有时只考虑链接的稳定性和进程的存在性,而忽视了进程真正的服务能力,
当遇到partial failure时,因为无法通过心跳检测到异常,所以整个服务处于亚健康状态。
这种情况下,直接让异常进程退出,通过其他机制(如,一致性协议)来恢复服务可能更好
15、分布式系统中可以使用mlock算法来保证请求的QoS
16、分布式唯一ID生成算法,常用的有facebook开源的雪花算法,还有国内开源的mist薄雾算法。
雪花算法中使用了时间戳,在遇到时间回退时,有可能会产生相同ID,且整个ID的区间比较小,
时间戳也只能保证使用70年。
薄雾算法没有使用时间戳,没有时间回退的问题。但是当程序重启后,再次运行,其基准计数有可能
相同,导致有可能ID重复。薄雾算法产生的ID空间更大,每天使用10亿,能使用300年。
so,算法各有优劣,需要权衡使用。
17、raft 和 multi-paxos算法的区别
(1)raft算法要求,所有请求都是串行的发送给leader节点,而multi-paxos则可以并发的发送到多个节点
(2)raft的选主算法中,只有拥有最全的日志节点才能当选
18、简单的master-slave模型,在master故障后,slave提升为master有两个问题,一是异步同步算法下,有可能有数据还没同步完成,
二是,新的master带来的单点问题;如果使用强同步模型,那么性能会降低;如果一个master对应多个slave,那么在master掉线后,
又有多个slave的选举问题。
raft等算法都是基于 Replicated State Machine 模型,在各个节点间同步log
19、什么是脑裂?
(tips:即因为网络等其他原因,导致集群或者某个服务出现两个primary对外提供服务,
常用的paxos等算法中,会通过选举+版本控制的方法来避免这一情况出现)