相关链接

image-20220822145347793


分布式系统

分布式系统面临的挑战

image-20220822145746777

理想中的分布式系统

image-20220822145913720

从 HDFS 开始

image-20220822150001014

案例 - KV

image-20220822150309318

image-20220822150341149

小结

image-20220822150358759

一致性与共识算法

从复制开始

image-20220822150607320

image-20220822150802077

最好不要都接受请求,应设置一个主一个从

如何复制

image-20220822150924695

两种策略,但是第一种的代价太高了

image-20220822151414557

关于读操作

image-20220822151548273

什么是一致性

image-20220822151750713

image-20220822152025524

复制协议

当失效发生

image-20220822152210106

小结

image-20220822152228631

共识算法

image-20220822152433682

image-20220822152624540

image-20220822153018454

小结

image-20220822153246105

从 Raft 入手

Paxos

image-20220822153349889

Raft

image-20220822153803011

复制状态机(RSM)

image-20220822154158242

Raft 角色

image-20220822154409422

image-20220822154629992

  1. 客户端向 s2 发送请求
  2. s2 把请求转成 log ,然后发送给 follower
  3. 多数完成,就回复客户

image-20220822154830700

image-20220822154906777

image-20220822154912209

旧 leader 无响应后,发现的节点发起投票,获得半数投票即成为新 leader

Raft 日志复制

image-20220822162417760

小箭头:确认已经提交了的 log

Raft 从节点失效

image-20220822162917101

没有真正对比 log 的内容,只需要对比 term 和 index

Raft Term

image-20220822163039984

Raft 主节点失效

image-20220822163259209

Raft Leader failure

image-20220822163351819

格子上面的数字是几号 term

为什么第一个状态 s1 的 term 都是 1 ?可以想象之前 s1 是 leader,然后突然卡死了,选了 s2 是新 leader

此时 s2 挂了,然后 s3 请求成为 leader ,s1 的 term 后面也变成了 3

状态是怎么复制的呢?一直往前检查,如果有冲突就从节点服从主节点

Raft 安全性

同 Term

image-20220822163913255

跨 Term

image-20220822164004992

image-20220822164115470

小结

image-20220822164206256

实现细节以及未来

案例 - KV

image-20220822164320371

image-20220822164605958

image-20220822164510110

为什么读操作不能直接读的问题

image-20220822164655970

image-20220822164814066

回到共识算法

image-20220822164912281

image-20220822165043920

共识算法的未来

image-20220822165133628

image-20220822165213310

image-20220822165246981

image-20220822165323591

小结

image-20220822165445629

课程总结

image-20220822165524243