设计 Raft是著名的状态机类型的协议,他通过在多个服务器之间确定leader,保证了服务器之间对于一对key-value的consensus,可以通过这个可视化动画来理解raft 在6.824要求阅读的论文中 The paper is vague about the details; you will need to fill in the gaps, perhaps with the help of the 6.824
MIT 6.824 -- MapReduce -- 01 ---- 课程b站视频地址: MIT 6.824 Distributed Systems Spring 2020 分布式系统 推荐伴读读物:
阅读须知 MIT 6.824的实验难度较大,且据我推测是每年都会有改动。学习6.824的正确姿势应该是先去观看公开课,找到官方的课程时间安排表,里面附带学习资料。 环境搭建 推荐视频:b站 2020课程时间安排表: MIT 实验代码仓库: git clone git://g.csail.mit.edu/6.824-golabs-2020 6.824 实验采用的开发语言为
’s 6.824 Distributed Systems class. 在过去的几个月里,我一直是麻省理工学院6.824分布式系统课的教学助理。这门课一直有一些建立在Paxos共识算法上的实验,但今年,我们决定转而使用Raft。 这篇文章的底部包含了6.824学生常问的问题列表,以及这些问题的答案。如果你遇到的问题没有在本帖的主要内容中列出,请查看问答。 这篇文章相当长,但它提出的所有观点都是很多6.824学生(和助教)遇到的真实问题。这是一篇值得一读的文章。 为了使讨论更加具体,让我们考虑一个绊住了一些6.824学生的例子。Raft的论文在很多地方提到了心跳RPC。
环境准备 从官方git仓库拉取分支 git clone git://g.csail.mit.edu/6.824-golabs-2020 6.824lab 笔者码云仓库 https://gitee.com /DaHuYuXiXi/mit-6.824.git Golang 环境安装,IDE建议选择GoLand,此过程省略搭建过程。
MIT 今年终于主动在 Youtube 上放出了随堂视频资料,之前跟过一半这门课,今年打算刷一下视频,写写随堂笔记。该课程以分布式基础理论:容错、备份、一致性为脉络,以精选的工业级系统论文为主线,再填充上翔实的阅读材料和精到的课程实验,贯通学术理论和工业实践,实在是一门不可多得的分布式系统佳课。课程视频和资料看这里。
MIT 今年终于主动在 Youtube 上放出了随堂视频资料,之前跟过一半这门课,今年打算刷一下视频,写写随堂笔记。该课程以分布式基础理论:容错、备份、一致性为脉络,以精选的工业级系统论文为主线,再填充上翔实的阅读材料和精到的课程实验,贯通学术理论和工业实践,实在是一门不可多得的分布式系统佳课。课程视频和资料看这里。
课程b站视频地址: MIT 6.824 Distributed Systems Spring 2020 分布式系统 推荐伴读读物: 极客时间 – 大数据经典论文解读 DDIA – 数据密集型应用 大数据相关论文中译版本
2 小结这个实验在6.824 Lab2D raft上实现一个single group的键值数据库,支持Get、Put、Append三种操作,能够保证客户端幂等性和线性读。
引子 ---- 18 年的时候做过一些 6.824,旧文在此,无奈做到 Part 2C,无论如何也跑不过测试,便一直搁置起来。但在后来的日子,却时时念起此门神课,心下伤感。 6.824 与 Raft 6.824 是一门关于分布式系统的非常棒的公开课,做课程实验的过程中时时惊叹于其构思之精巧、材料准备之翔实。 /6.824/labs/lab-raft.html 助教总结往年经验:https://thesquareplanet.com/blog/students-guide-to-raft/,顺便说一嘴,这个助教的博客也挺不错 Raft 实现结构组织建议:https://pdos.csail.mit.edu/6.824/labs/raft-structure.txt Raft 主页,上面有个可视化动图,能帮你直观的感受下 raft 此外还有更多 raft 相关的材料,也可以参考:https://raft.github.io/ 某个网上同学实现:https://wiesen.github.io/post/mit-6.824-lab2
本文将介绍6.824 Lab2(测试用例2021/2020版 2A + 2B + 2C部分)的具体实现,视频版的讲解将发在B站:s09g谷歌摸鱼 。代码通过5000次测试,大致上应该没有问题。 我也发过中文版的翻译Raft: 寻找可理解的共识算法(2) MIT 6.824 - Raft学生指南 之后会在B站发个视频版,过一遍整个代码
二、实验搭建源码下载https://pdos.csail.mit.edu/6.824/labs/lab-raft.html初始化go mod init替换依赖本人仓库6.824 2022版https:/ /github.com/yutianneng/6.824/三、raft架构 Lab 2A、2B主要包括选举循环、心跳循环、RequestVote及AppendEntries实现。
问:introduction中说,在物理服务器上确保确定性的执行比在虚拟机上更难。为什么会出现这种情况?
MIT 今年终于主动在 Youtube 上放出了随堂视频资料,之前跟过一半这门课,今年打算刷一下视频,写写随堂笔记。该课程以分布式基础理论:容错、备份、一致性为脉络,以精选的工业级系统论文为主线,再填充上翔实的阅读材料和精到的课程实验,贯通学术理论和工业实践,实在是一门不可多得的分布式系统佳课。课程视频和资料看这里。
个人感觉6.824还是值得听一听的。虽然主要部分在论文里面,但是课堂上的讨论也很有价值。刷课的视频我放在B站上,ID: s09g谷歌摸鱼。 Lab1要求用Go实现一个基本的MapReduce框架。 6.824所有的Lab都要求用Go实现,所以我先花了点时间去学Go.微信阅读有《Head First Go》,知识结构合理,适合零基础,无限卡可以免费读。
MIT 今年终于主动在 Youtube 上放出了随堂视频资料,之前跟过一半这门课,今年打算刷一下视频,写写随堂笔记。该课程以分布式基础理论:容错、备份、一致性为脉络,以精选的工业级系统论文为主线,再填充上翔实的阅读材料和精到的课程实验,贯通学术理论和工业实践,实在是一门不可多得的分布式系统佳课。课程视频和资料看这里。
MIT 今年终于主动在 Youtube 上放出了随堂视频资料,之前跟过一半这门课,今年打算刷一下视频,写写随堂笔记。该课程以分布式基础理论:容错、备份、一致性为脉络,以精选的工业级系统论文为主线,再填充上翔实的阅读材料和精到的课程实验,贯通学术理论和工业实践,实在是一门不可多得的分布式系统佳课。课程视频和资料看这里,本篇是第四节课笔记,VMWare 的 P/B 系统。
课程资料:6.824 主页。本篇是第六节课笔记,是 Raft 论文讲解的第一部分,主要总结了容错的几种类型以及 Raft 中的 Leader 选举相关内容。
A:0、1、2、3、0xc B:0x2000、0xEDEDEDED、0xFEDEDEDE、0x2004、110000 00000 11111 0010 0000 0000 0000(0xc01f2000) C:0x87654321、1、0x87654320、0x14、011101 11111 00001 0000 0000 0000 0010(0x77e10002) D:17、0、32、no instructions need to be changed E:4、110000 00000 00000 0000 0000 0000 0000(0xC0000000)
一、背景书接上文6.824 raft Lab 2C 持久化与恢复,本文继续往下讲解日志压缩。 本文实现的源码:6.824 raft Lab 2D 日志压缩1 何时压缩?触发压缩的时机一般是以下两种:日志的数据量达到阈值(推荐)。日志的数量达到阈值。测试用例是根据日志数量来触发压缩的。 snapshot是状态机某一时刻的副本,具体格式依赖存储引擎的实现,比如说:B+树、LSM、哈希表等,6.824是实现一个键值数据库,所以我们采用的是哈希表,在Lab 3可以看到实现。