Giter Club home page Giter Club logo

raft_2021_03's Introduction

Rafting Trip - March 22-26, 2021

Hello! This is the course project repo for the "Rafting Trip" course. This project will serve as the central point of discussion, code sharing, debugging, and other matters related to the project.

Although each person will work on their own code, it is requested that all participants work from this central repo. First, create a a branch for yourself:

bash % git clone https://github.com/dabeaz-course/raft_2021_03
bash % cd raft_2021_03
bash % git checkout -b yourname
bash % git push -u origin yourname

Do all of your subsequent work in your branch of this central repository.

The use of GitHub makes it easier for me to look at your code and answer questions (you can point me at your code, raise an issue, etc.). It also makes it easier for everyone else to look at your code and to get ideas. Implementing Raft is hard. Everyone is going to have different ideas about the implementation, testing, and other matters. By having all of the code in one place, it will be better and more of a shared experience.

I will also be using the repo to commit materials, solutions, and other things as the course date nears and during the course itself.

Finally, the repo serves as a good record for everything that happened during the course after the fact.

Cheers, Dave

Live Session

The course is conducted live from 09:30 to 17:30 US Central Daylight Time (UTC-05:00). Here are details about the Zoom meeting:

Topic: Rafting Trip

Join Zoom Meeting https://us02web.zoom.us/j/84678466137?pwd=VVFkaE13U3doZ2swWll1ZjR1UWJpdz09

Meeting ID: 846 7846 6137 Passcode: 886054

I will be in the meeting approximately 30 minutes prior to the start time if you need to test your set up.

Presentation slides are available in the Raft.pdf file.

Live Chat

For live chat during the course, we use Gitter. Here is a link:

Raft Resources

Our primary source of information on Raft is found at https://raft.github.io. You should also watch the video at https://www.youtube.com/watch?v=YbZ3zDzDnrw. Of particular interest is the Raft Paper.

The Challenge of Raft

One of the biggest challenges in the Raft project is knowing precisely where to start. As you read the Raft paper, you should be thinking about "where would I actually start with an implementation?" There are different facets that need to be addressed. For example, at one level, there's a networking layer involving machines and messages. Maybe this is the starting point (at the low level). However, there's also the "logic" of Raft (e.g., leader election with leaders, followers, and candidates). So, an alternative might be to approach from a high level instead. And then there are applications that might utilize Raft such as a key-value store database. Do you build that first and then expand Raft on top of it?

The other challenge concerns testing and debugging. How do you implement it while having something that you can actually test and verify?

Introductory Video

Live Session Videos

Video from the live session will be posted here.

Day 1

Day 2

Day 3

Day 4

Day 5

Preparation Exercises

The following project covers some background material related to socket programming and concurrency that might help with the course:

The Raft project is similar to what might be taught in a graduate distributed systems course such as MIT 6.824. A lot of information is available on the course website.

Project Milestones

The following projects guide you through one possible path for implementing Raft. This is not necessarily the only way to do it. However, it's an approach that has often worked in the past.

Interesting Resources

raft_2021_03's People

Contributors

dabeaz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.