渚汐の小窝

「 Long time no see | Hundler one 」

MIT 6.824 lab4 C kvraft snapshot

采用snapshot的kv服务

实验背景 在完成了 Part A 和 Part B 后,我们已经有了一个可以正确工作的分布式键值存储系统。但是存在一个严重的问题:随着系统运行时间增长,Raft 日志会无限增长。这带来两个问题: 内存占用过大:日志条目越来越多,占用大量内存 重启时间长:服务器重启时需要重放完整的日志来恢复状态,日志越长重启越慢 Part C 的任务就是实现快照机制来解决这些问题。 快照机...

MIT 6.824 lab4 B K/V service

使用raft实现的key/value服务

本次实验的目标是构建一个基于 Raft 的分布式键值存储服务(KVRaft)。这个服务需要保证线性一致性,并能够在网络分区、服务器崩溃等各种故障场景下正确运行。 实验的核心挑战在于: 如何在 Raft 之上实现精确一次(exactly-once)语义 如何处理客户端重试带来的重复请求 如何正确实现版本控制机制 如何在各种故障场景下保持系统的正确性 信息流动过程如下: ...

MIT 6.824 lab4 A raft与client的中间层-rsm

replicated state machine

引言 在分布式系统中,如何确保多个副本保持一致性是一个核心挑战。本文将详细介绍如何基于 Raft 共识算法实现一个通用的 Replicated State Machine (RSM) 层,这是 MIT 6.5840 (原 6.824) Lab 4A 的核心内容。 实验背景 问题场景 在之前的lab中,我们已经实现了一个robust的Raft服务,但是还没有解决raft如何与clien...

MIT 6.824 lab3-CD raft persistence and snapshot

Raft共识算法--持久化与日志快照

持久化与快照说明 持久化:为了使server重启后可以恢复原来的状态,按照Figure2,保存currentTerm,votedFor和log[]三个状态。 快照:为了防止log无限增大占用太多空间,采用快照机制,并持久化在磁盘中。 快照带来的问题 由于引入快照,物理索引和逻辑索引不再统一 eg. 快照前: logic index : 0 1 2 3 4 physic...

MIT 6.824 lab3-B raft log replica

Raft共识算法--日志复制

日志复制简介 日志复制的过程很简单:leader收到客户端请求,追加到日志中,并行发送给所有follower。收到多数成功复制回复后,commit日志。 其中有一些细节需要注意: follower因为各种原因没有收到rpc或者回复成功,则leader持续发送 leader commit一条日志条目时,也会连带commit之前的日志条目 leader维护最高的已知将被com...

MIT 6.824 lab3-A raft leader election

Raft共识算法--领导者选举

一些介绍和牢骚 lab3要求手写实现一个raft共识算法,part A从领导者选举开始 先回顾下领导者选举的过程: 集群启动,所有server均为follower状态 一个server A 的election timeout超时,转为candidate状态 它增加自己的term号,投票给自己,并行向其他server申请投票 一个选举过程在以下三种情况下结束: ...

MIT 6.824 lab2 kv server

分布式kv存储系统与分布式锁

Linearizable Linearizable(线性一致性)指的是,在一个分布式系统中,server对client而言,看起来像是个单副本,单线程执行的系统,满足原子性和时间顺序。线性一致性是最强的一致性模型。 在lab2中,任务是实现一个采用Linearizable的kv server,同时拥有网络容错机制。 KV server简介 客户端通过clerk对象与服务端交互,调用两...

MIT 6.824 lab1 MapReduce

分布式系统初识

MapReduce 简介 MapReduce是谷歌公司于2004年发布的一个用于处理大量数据集的系统。彼时的谷歌面临着一个巨大的挑战:数据增长速度极快,面对数以TB的数据,由于分布式系统十分复杂,且经常有机器宕机,靠程序员去维护这个庞杂的系统太过困难也太过低效。因此,他们开发了MapReduce系统。 MapReduce系统将数据的处理过程高度抽象,分为Map和Reduce两个阶段。其核...

rcore学习日志

从入门到入土

3-30 今天训练营开幕,在参加训练营之前自己做到了ch2就没进行下去了,希望可以通过训练营督促自己继续进步. 3-31 今天因为有cpu的实验课,时间比较仓促,只简单看了下ch3的描述,还有很多没有搞明白,比如RR的实现,还有switch的实现等,明天时间比较多要仔细看一下.今天复习了一下操作系统课的进程调度相关内容,应该对接下来的学习有所帮助. 4-1 今天试图搞清楚ch3的操...

IEEE-754标准

数值表示与计算

IEEE 754定义了浮点数的表示方法和运算方法 表示方法 单精度浮点数 32位,分为: IEEE-754 一位符号位sign ==S== 八位指数位exponent ==E==,称为阶码 23位小数位fraction ==M== 其中定义了偏置量bias=$2^{e-1}-1$,其中e是指数位的位数,在单精度浮点数中,为$2^7-1=127$ 为什么要用偏置量 小数值...