MIT6.824 2022 Raft Lab2D Log Persistence

介绍 snapshot是状态机某一时刻的副本,具体格式依赖存储引擎的实现,比如说:B+树、LSM、哈希表等,6.824是实现一个键值数据库,所以我们采用的是哈希表,在Lab 3可以看到实现。 ...

2023-03-16 19:34 · 6 min · 2536 words · Reid

MIT6.824 2022 Raft 0 介绍

前言 论文 博士论文 博士论文翻译 官网 动画展示 Students’ Guide to Raft (重要) MIT6.824 本篇是实验的前言, 先对论文里面提到的RPC做个大概的梳理和介绍。 Raft 原理可以参考这篇Raft Figure2 Raft 实现的核心在这个图,想要正确实现Raft 必须对这个图有深刻理解,在这里我们对图上的各个RPC 进行介绍和阐述。 ...

2023-03-16 19:34 · 11 min · 5011 words · Reid

MIT6.824 2022 Raft Lab2A Leader Election

介绍 查看Raft0 流程梳理 整体逻辑, 从 ticker goroutine 开始, 集群开始的时候,所有节点均为Follower, 它们依靠ticker()成为Candidate。ticker 协程会定期收到两个 timer 的到期事件,如果是 election timer 到期,则发起一轮选举;如果是 heartbeat timer 到期且节点是 leader,则发起一轮心跳。 ...

2023-03-16 19:34 · 6 min · 2691 words · Reid

MIT6.824 2022 Raft Lab2B Log Replication

流程梳理 相关的RPC 在Raft0 中已经介绍, 这里不再赘述。 启动的Goroutine: ticker 一个,用于监听 Election Timeout 或者Heartbeat Timeout applier 一个,监听 leader commit 之后,把log 发送到ApplyCh,然后从applyCh 中持久化到本地 replicator n-1 个,每一个对应一个 peer。监听心跳广播命令,仅在节点为 Leader 时工作, 唤醒条件变量。接收到命令后,向对应的 peer 发送 AppendEntries RPC。 日志结构 ...

2023-03-16 19:34 · 14 min · 6794 words · Reid

Raft 介绍

1. Raft 算法简介 1.1 Raft 背景 在分布式系统中,一致性算法至关重要。在所有一致性算法中,Paxos 最负盛名,它由莱斯利·兰伯特(Leslie Lamport)于 1990 年提出,是一种基于消息传递的一致性算法,被认为是类似算法中最有效的。 ...

2023-03-16 19:34 · 25 min · 12051 words · Reid