MIT-6.824 学习笔记(一)

序言

这系列的博客是来记录我的分布式系统的学习笔记。说起来其实在大一就开始接触分布式了,从最开始的hadoop,mapreduce,到spark,storm。然后接触的大数据等等。不过一直都是自己从网上找资料或者在实习当中学习到的知识,一直没有一个系统的知识梳理。前段时间看到了mit的这个课程,简直感慨万千。野路子走惯了,真心需要学院派的系统指导来帮自己梳理计算机的知识体系了。所以这一系列的博客来记录这一阶段的学习历程,就当做是学习笔记了。

目录

一. Mpareduce和Lab 1 思路

二. RPC 和 GO

三. Lab 2 思路(主备和容错)

四.Paxos协议

五.Lab 3 思路

六.未完待续

Lab Overview

因为是学习笔记,所以很多东西不会写的很详细。Mapreduce因为之前用的很多了,这里就不细的展开了,主要说下课程的lab,这也是我觉得最有价值的地方。

MIT-6.824的实验分为5个部分,整个项目用golang来实现,testcase都已经给出。最终会实现一个key/value的 services,支持三个RPC请求,Put(),Append(),Get()。实现一个简单的K/V的分布式数据库

  • Lab 1 要求实现一个Mapreduce的lib,接口已经给出了。这个主要就是根据google的那篇论文来实现。并且还要求实现一个任务的分配系统。也就是简单的hadoop的yarn,并且要能简单的容错
  • Lab 2 分为两部分。最后会做出一个K/V services的雏形,用主从复制来实现。有点hadoop中master/worker的雏形。其中part A会实现一个viewservice。part B会开始实现K/V services
  • Lab 3 会让你把Paxos的内容给你的K/V services给加上。Part A让你实现Paxos的lib,Part B让你实现有Paxos的K/V services
  • Lab 4 这里会让你实现 K/V的存储系统。原理应该就是根据partition和group来切分和归类数据
  • Lab 5 就是让你整合所有的内容,来真正实现这个K/V的分布式数据库,具体的细节可以有很多,自己可以扩展