mit 6.824
文章平均质量分 55
白速龙王的回眸
一命二运三风水
四积功德五读书
六名七相八敬神
九交贵人十养生
展开
-
raft partd 日志压缩 部署指导
然而,对于一个长期服务的系统,永远地记住完整的raft日志是不大可能的。因此,你需要修改raft来节省空间。需要persistently存储一个当前状态的snapshot(在persist中加入),然后raft会将snapshot之前的log entries丢弃掉。当一个service比leader落后很多,然后想要跟上的时候,service首先下载一个snapshot然后重放在snapshot后面的log。为了支持snapshots,我们需要提供一个raft库和service中间接口。我们通过s...原创 2021-12-24 11:38:41 · 489 阅读 · 0 评论 -
raft partc persistence 部署指导
如果基于raft的server重启了的话他应该继续它离开时候的服务。这要求raft进行state的persisitent从而方便reboot的时候读取,fig2提到了需要persistent的state在实际的部署中,需要在每次state change的时候将raft的persisitent state写到disk中,然后会在reboot后读取这个state。你的部署不需要用disk,取而代之的是,它会将persistent state存储到一个Persister 对象中(在persister.g...原创 2021-12-23 16:31:37 · 225 阅读 · 0 评论 -
raft partb 部署指导
partb居然是hard,震惊2b涉及到8个test看下指导意见吧:1.我们首先需要pass掉testbasicagree2b().首先就要部署Start()函数,然后通过appendentries来实现新的log entries的发送和接受(根据图2)2.需要补充一些选举的限制(参照5.4.1)3.一种容易fail掉的情况在早期的2B测试中是,即使leader存活,仍然保持不断地选举。在election定时器中找找bug,或者不要在选举成功的瞬间发送心跳4.你的code可能包括测试某一个事件.原创 2021-12-20 17:39:29 · 227 阅读 · 0 评论 -
这可能是全网最透彻的raft election + hearbeat(mit6.824 part a)代码解析(1)
前言:虽然mit6.824这门课说不让大家把代码公布出来,因为它们觉得自己写学习到的才是最多的。我不否认它们这个观点,但当一个go实践并不多的学生开始写的时候,它会发现毫无思路。因此,对于一些想学raft并实践的学生(比如说我),是非常需要一份详细到不能再详细的代码解析的。然而,现状是网上的raft 各个part解析都是只讲重点而不注重细节,因此我认为很有必要把细节缕清楚!参考资料:我这里的代码并不是自己写的,是参考以为thu的大神的源码,但这位小哥哥也没有详细地解释清楚,我就借花献佛,将它的代码逻辑原创 2021-12-19 21:51:32 · 913 阅读 · 5 评论 -
mit 6.824课程简介1笔记
1.在构建分布式系统之前,尝试其他更简单的解决方案2.并行,大量cpu内存等,高性能3.可容错性4.物理空间上的扩展5.实现某种安全目标,将代码拆分在不同机器运行(然后通过协议交互)6.分布式:超时、熔断机制等7.局部故障使得分布式系统难以实现8.初衷是获得高性能,但是从多机器中使用多cpu内存等获得高性能也很难9.大型网站组建等使用这种架构10.本课程可以通过实验序列构建一些注重性能和容错的实用分布式系统课程架构:1.课程2.论文3.编程实验实验:lab1:mapreduce原创 2021-11-17 12:05:08 · 291 阅读 · 0 评论