Implement based on course of mit_6.824 and raft paper

Overview

Mit6.824_raft

implement based on course of mit_6.824 and raft paper

##Mit 6.824

###2A leader election Implement Raft leader election and heartbeats (AppendEntries RPCs with no log entries). The goal for Part 2A is for a single leader to be elected, for the leader to remain the leader if there are no failures, and for a new leader to take over if the old leader fails or if packets to/from the old leader are lost. Run go test -run 2A -race to test your 2A code.

实现Raft选择和心跳检查(通过no log entries的appendEntries RPCs),2A部分的目标是成功选举一个leader直到其发生错误,然后一个新的leader会取代其位置,通过go test -run 2A -race to test 检查代码。

分析

着重理解论文中figure 2

状态

所有服务器上持久性状态(相应RPCs前已经更新到稳定的存储设备)

currentTerm 服务器已知最新的任期(在服务器首次启动时初始化为0,单调递增)

votedFor 当前任期内收到选票的 candidateId,如果没有投给任何候选人 则为空

log[] 日志条目;每个条目包含了用于状态机的命令,以及领导人接收到该条目时的任期(初始索引为1)

Owner
Razer
Razer
An easy-to-use Map Reduce Go parallel-computing framework inspired by 2021 6.824 lab1. It supports multiple workers on a single machine right now.

MapReduce This is an easy-to-use Map Reduce Go framework inspired by 2021 6.824 lab1. Feature Multiple workers on single machine right now. Easy to pa

Bo-Wei Chen 193 Jun 9, 2022
mit 6.824 lab

lab-6.824 0. How to run? go版本: 1.13+ 在高于1.11的版本中报unexpected directory layout, 但是用较低版本goLand无法调试... unexpected dir layout 原因是不支持相对路径包引入, 遇到时在import 删掉.

JinyuChata 1 Dec 9, 2021
learn mit 6.824 lab

MIT6.824 lab1 MapReduce timeout: command not found -> brew install coreutils panic data race -> 加锁 内层变量会屏蔽外部同名变量 test1 word-count 测试基本功能 test2 indexer

GoodbyeYesterDay 0 Jan 5, 2022
labs & notes on 6.824

Lab 1: MapReduce MapReduce论文 概念 MapReduce is a programming model and an associated implementation for processing and generating large data sets. Users

Vurtne 1 Mar 6, 2022
MIT 6.824: Distributed Systems (Spring 2020)

MIT6.824 MIT 6.824: Distributed Systems (Spring 2020) Lab 1 Lab 2 Lab 2A Lab 2B Lab 2C Lab 2D Lab 3 Lab 3A Lab 3B Lab 4 Lab 4A Lab 4B Lab 4 Challenge

Ray Eldath 50 Jun 21, 2022
Auto Judger for BUAA-SE-OOP Course (2021 Spring)

patpat Auto Judger for BUAA-SE-OOP Course (2021 Spring) 1. 评测机使用方法 1.1. 一些准备工作 1.1.1. 下载评测机 见 GitHub 中的 Releases,下载对应版本即可。目前提供 Windows, Linux, MacOS(I

null 28 Feb 27, 2022
EvilEye is a BeaconEye implement in Golang.

EvilEye is a BeaconEye implement in Golang. Try & Run download EvilEye in releases ./EvilEye.exe Screenshot Build go install github.com/akkuma

null 88 Jun 13, 2022
A SigFlip implement in golang

gSigFlip A SigFlip implement in golang, SigFlip is a tool for patching authenticode signed PE files (exe, dll, sys ..etc) in a way that doesn't affect

null 29 Apr 12, 2022
Example showing how to implement a basic mutating webhook

Kubernetes Mutating Webhook example This shows a basic implementation of a mutating webhook. Setup Note: This relies on TLS certificates to function c

Thomas Stringer 7 Jun 6, 2022
Implement a toy in-memory store information service for a delivery company

Implement a toy in-memory store information service for a delivery company

Ahmad Berahman 0 Nov 22, 2021
Implement clean-architecture sample by golang

Implement clean-architecture sample by golang

null 2 Feb 17, 2022
Go-enum-algorithm - Implement an enumeration algorithm in GO

go-enum-algorithm implement an enumeration algorithm in GO run the code go run m

Leon 1 Feb 15, 2022
The new home of the CUE language! Validate and define text-based and dynamic configuration

The CUE Data Constraint Language Configure, Unify, Execute CUE is an open source data constraint language which aims to simplify tasks involving defin

null 2.7k Jun 30, 2022
Flow-based and dataflow programming library for Go (golang)

GoFlow - Dataflow and Flow-based programming library for Go (golang) Status of this branch (WIP) Warning: you are currently on v1 branch of GoFlow. v1

Vladimir Sibirov 1.4k Jun 24, 2022
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals.

Zachary Yedidia 19.7k Jun 26, 2022
GObject-introspection based bindings generator

WARNING! This project is no longer maintained. Probably doesn't even compile. GObject-introspection based bindings generator for Go. Work in progress

null 47 Jan 5, 2022
Yubigo is a Yubikey client API library that provides an easy way to integrate the Yubico Yubikey into your existing Go-based user authentication infrastructure.

yubigo Yubigo is a Yubikey client API library that provides an easy way to integrate the Yubikey into any Go application. Installation Installation is

Geert-Johan Riemer 119 Apr 28, 2022
A Go based HTTP Botnet

Second interation of GoBot, https://github.com/SaturnsVoid/GoBot2 GoBot GoBot is a project i am working on as i learn Go. GoBot is a PoC(Proof of Conc

Adam 107 Jun 17, 2022
Generate spreadsheets based on GitHub contributions

pullsheet generates a CSV (comma separated values) & HTML output about GitHub activity across a series of repositories.

Google 58 Jun 21, 2022