分布式系统
文章平均质量分 90
冰寒火
这个作者很懒,什么都没留下…
展开
-
6.824 raft Lab 4 multi-raft-group KV-Server
本实验是6.824最后一个实验,实现了一个简易的multi-raft-group数据库,通过多副本、多分片来扩大容量、提高性能、提高容错性。这个数据库中包含一个总控节点shardctrler来支持配置变更,shardkv来负责分片读写、分片迁移、分片清理等,并能够支持客户端幂等性、线性读。转载 2022-10-16 23:59:49 · 439 阅读 · 1 评论 -
6.824 raft Lab 3 kvRaft
这个实验在6.824 Lab2D raft上实现一个单分片的键值数据库,支持Get、Put、Append三种操作,能够保证客户端幂等性和线性读。本实验通过记录上下文和每个client的requestId来保证幂等性,以写请求的逻辑处理读请求来实现幂等性。转载 2022-10-05 17:37:44 · 166 阅读 · 0 评论 -
6.824 raft lab 2A 2B实验分析
本文主要介绍6.824 raft实验的lab 2A、2B,实现了raft选主和心跳、日志复制的功能。转载 2022-09-25 17:04:04 · 520 阅读 · 0 评论 -
6.824 raft lab 2C持久化与恢复
6.824 raft lab 2C实验,主要是term、votedFor、logs这几个字段的编码、解码、持久化等。另外,采用按term的方式进行日志探测,每次找到不匹配term第一次出现的位置作为nextIndex,由Follower来决定下一次从哪里开始复制日志。转载 2022-09-26 19:18:09 · 330 阅读 · 0 评论 -
6.824 raft Lab 2D 日志压缩
本文简要介绍了日志压缩的实现,减少了数据量和恢复时间。日志压缩由应用层根据日志数量触发,生成snapshot并截断日志,每个peer都可以独立进行。如果某个peer的日志太过于落后就需要复制Leader的snapshot,而peer接收到snapshot后不能立刻应用和截断日志,应该由状态机先应用,raft后应用snapshot。倘若先应用到raft成功了,后应用到状态机失败了,就会导致状态机数据不完整,最好是两者保持原子性。转载 2022-10-03 22:45:40 · 595 阅读 · 0 评论