SF
从菜鸡到菜须鲲
从菜鸡到菜须鲲
注册登录
关注博客
注册登录
主页
关于
RSS
事件驱动的HotStuff协议
Tsukami
2020-09-30
阅读 4 分钟
3.8k
basic hotstuff中leader提出的一个proposal需要距离如下阶段才能提交执行: Prepare -> PreCommit -> Commit -> Decide, 每个阶段的作用:
Vscode中Go tools更新失败的解决方法
Tsukami
2020-04-26
阅读 1 分钟
7.8k
网上提供了一些解决方法:到github上下载tools包,再手动安装。但是笔者今天按照这个方法尝试,发现依然失败。浪费了很多时间终于找到一个方法.
Raft协议中的疑问和解答
Tsukami
2020-03-12
阅读 3 分钟
3.1k
相比于其他协议中先选举再补上日志的做法,raft则限制只有具有全部已提交的日志的candidate才可能赢得选举。具体做法是follower先检查最后一个日志的term,谁更大谁就更新; 如果一样,那么比谁更长。首先,谁最后的日志的Term更大,意味着该节点的逻辑时间更长,可能更新。其次最后一条日志的Term更大。
MIT6.824实验-Lab3A
Tsukami
2020-02-11
阅读 5 分钟
3.7k
实验内容 server.go: 添加Op 结构, 其描述了一个Get\Put\Append操作和值 client.go: 使用.Start(), 完善Put(), Append(), Get()等rpc handler. Hint 调用Start()后,应该等待raft达成aggrement. kvserver和raft的applyer容易形成死锁 要格外注意, leader在提交log之前失去了leadership, 这可能被network-parition,crash...
MIT6.824-Lab2C
Tsukami
2020-01-20
阅读 4 分钟
6.8k
2C中节点随时可能crash, 所以我们要利用Persisiter来持久化一些数据: log[], currentTerm, votedFor, 主要通过完善.readPersisit()和.persisit()方法, 这个在代码注释用有教程了。在rf.Make()立刻恢复crash前的状态,随后变为FOLLOWER。2C模拟了一个不稳定的网络,rpc调用者和处理者都要考虑rpc乱序,丢失,重复,延迟...
MIT6.824-Lab2B
Tsukami
2019-11-26
阅读 1 分钟
4.2k
Lab2B需要我们完善rf.Start(..)这个函数.这个函数接受一条command作为入参,如果当前节点rf是leader, 那么就会开始达成共识的过程.
MIT6.824-Lab2A
Tsukami
2019-11-03
阅读 4 分钟
4.2k
Lab2A Lab2A的地址:[链接] Lab2A需要完成Raft协议中的Leader Election部分。按照论文Figure2实现如下功能: 初始选举 Candidate发布RequestVote rpc Leader发布AppendEntry rpc, 包括心跳 server的状态转换(Follower, Candidate, Leader) 实验提示: 为raft.go添加必须的状态。 定义log entry的结构。 填充RequestVoteAr...
MIT6.824实验一览
Tsukami
2019-10-01
阅读 1 分钟
6k
OS: Ubuntu 18.04Editor: VSCode语言: Go 1.13实验代码版本: Mit 6.824 Spring 2018
MIT6.824-Lab1-P1
Tsukami
2019-10-01
阅读 1 分钟
2.7k
Part I: Map/Reduce input and output 完善如下函数: common_map.go: doMap() common_reduce.go: doReduce() 完成后测试: {代码...} 我们需要事先掌握如下: 保存读取json文件 文件输入输出. defer语句, 用于释放资源. common_map.go: doMap() 要干什么? doMap()管理一个Map Task. 调用mapF()将输入文件的内容变成一个[]K...
MIT6.824-Lab1-P2
Tsukami
2019-10-01
阅读 1 分钟
1.6k
A word is any contiguous sequence of letters, as determined by unicode.IsLetter.
MIT6.824-Lab1-P3
Tsukami
2019-10-01
阅读 1 分钟
1.7k
前面的都是串行执行MRTask, 这次我们要用多线程模拟分布式环境, 来进行分布式MR.具体的任务是: 完善schedule.go: schedule():
MIT6.824-Lab1-P4
Tsukami
2019-10-01
阅读 2 分钟
2.3k
master通过调用common_rpc.go: call()来分配任务.当超时发生, 该函数 返回false, 这时候master要把该任务重新分配给另一个worker.