【分布式-6.824】MIT分布式系统概述

1.引入

论文地址:
http://nil.csail.mit.edu/6.824/2020/schedule.html

参考lab:
https://github.com/aQuaYi/MIT-6.824-Distributed-Systems

推荐书目:DDIA  数据密集型应用系统设计
https://book.douban.com/subject/30329536/--推荐书 
《Designing Data-Intensive Applications》


教课老师:(蠕虫病毒作者)
Robert Tappan Morris


设计分布式系统的第一步就是你需要知道它是否可以在单机上运行.如果可以,就可以在单机上工作.
因为分布式系统太难了.


杂项:
time-dependent stuff 时序问题
spur thoughts        大胆的想法
分片是指我们将数据放到了多个服务器上的多个分区,来实现加速.
infrastructure        基础设施
disk arms             磁盘臂
throughput            吞吐量
bottleneck            瓶颈
MapReduce
peer-to-peer file sharing
three gigahertz       3GHz

分布式需要考虑的问题:
1.parallesim         ---并行管理大量CPU,内存,大量磁盘臂也在同时移动
2.fault tolerance    ---容错问题
3.physical reasons   ---
4.security/isolated



设计分布式系统的挑战:
1.concurrency       ---并发问题
2.partial failure   ---局部故障


课程安排:
1.课堂授课;
2.每节课都有论文阅读及两次考试.

具体的:
lectures;
papers;
exams;
labs;
project(optional)



Labs:
1.MapReduce      
2.Raft            
3.K/V            
4.Sharded K/V service        

实验细节:
1.关于MapReduce的一个简单实验
2.使用Raft算法来实现容错,这是一个通过复制来让系统容错的算法
3.使用Raft来实现一个具有容错能力的K/V服务器,可以完成复制并容错
4.把写的KV服务器分发到一系列的独立集群中,切分存储系统,通过运行这些副本进行加速,并且要负责
对这些不同的服务中间的数据块处理,让它们在数据运行过程中不至于有所损失.



Infrastructure  contains:
1.storage;
2.communication;
3.computation.


基础设施包括:
1.存储;
2.通信;
3.计算.


这三个中我们应该最关心的是存储,这是一个有明确的定义且有用的抽象概念.
可复制的,容错的,高性能的分布式存储实例是人类之光.

存储--Ceph
通信--6.829课程中有详细的通信相关的知识
计算--MapRduce


分布式基础设施的实现要素:
1.RPC                 --试图掩盖我们正在用不可靠的网络的事实;
2.Threads             --一种可以驾驭多核心计算机的编程技术,在分布式中提供了一种结构化的并发操作方式
3.Concurrency COntrol --并发控制





分布式中的问题:
一台数据库服务器可以轻松排序,多台怎么办呢?

一台变成1000台,需要考虑:
(1)总有一些机器会崩溃;
(2)1000台机器通信需要电缆,需要交换机,谁能保证没有人踩着电缆,又有谁能保证交换机的
   小电扇一直功能呢?
...



non-volatile storage ---非易失性存储,硬盘,闪存,SSD等存储工具.
避免写入非易失性存储
What writing non-volatile storage  meant was moving a disk arm and waiting for a disk platter to rotate.
写入非易失性存储内意味着需要移动磁盘臂,等待磁盘盘面旋转.

2.分布式中的更高目标

 

分布式的更高目标:
1.scalability     ----scalable speed-up,2 computers->2*throughput(2个电脑-2倍吞吐量)
2.fault tolerance ----(1)可用性,availbility
                  ----(2)自身的可恢复性,recoverability
                  容错手段:(1)NV storage;
                            (2)Replication;
3.Consistency     ----一致性

处于性能和容错两个方面的考虑,我们需要有多个数据副本,多个数据副本又引出一致性问题.
由于复制或者缓存的原因,可能会导致不同版本的KV出现.

强一致性要求我们总是能GET到最新的值,
但是弱一致性则不需要我们总是GET到最新的值.

实现强一致性的代价很大,有些时候我们做出了一些妥协.但是,这也是要看业务场景的.


把所有的副本放在同一个机房的同一个机架上,这可能是一个非常糟糕的主意,
因为如果有人绊倒了那台机架的电源线,两个副本都会完蛋,因为它们都连接到
同一机架中的同一电源线上了.为了使副本尽量独立且容错,人们希望不同的副本
尽可能地分开离得远些.这又给强一致性带来了不好的消息,需要跨数据中心进行
通信了.

 

你可能感兴趣的:(分布式,分布式)