当前位置: 首页 > news >正文

(undone) MIT6.824 Lecture1 笔记

参考1MIT课程视频:https://www.bilibili.com/video/BV16f4y1z7kn/?spm_id_from=333.337.search-card.all.click&vd_source=7a1a0bc74158c6993c7355c5490fc600

参考2某大佬笔记:https://ashiamd.github.io/docsify-notes/#/study/%E5%88%86%E5%B8%83%E5%BC%8F%E7%AD%96%E7%95%A5/MIT6.824%E7%BD%91%E8%AF%BE%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-01

参考3mapreduce论文:https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf

参考42021MIT6.824schedule:http://nil.csail.mit.edu/6.824/2021/schedule.html


最近工作上遇到了一些高并发和一致性的问题,发现并行代码要写好、写的没有错误、DEBUG 真的很难。故决定学习 MIT6.824 来补充一下这方面的知识。

我们开始看 Lecture 1 吧,先来看教授的课程。

分布式系统的定义:多个计算机(而不是多处理器)通过网络连接,只能通过发送接收数据包交互,来合作提供一些服务。

分布式系统的意义:1.通过并行提高速度 2.容忍错误,一部分计算机宕机、其它计算机能继续工作 3.提高安全性。把安全相关的服务放在一台机子上,其它服务放在别的机子上

最直接的分布式系统应用:数千万人同时访问的网站,自然需要分布式系统提供服务

分布式系统中的难点:
1.许多并发的部分
2.当一部分计算机故障时,分布式系统应该能够使用剩余的计算机继续正常提供服务
3.想要实现分布式系统在理论上的性能优势并不容易

这门课的实验是模拟的,假装有很多台机器在运行服务,但实际上是在你自己的机子上单机跑。有兴趣可以看看是怎么实现的

分布式系统的主题有:
1.Fault tolerance (分为 available(部分机子宕机依然能运行) 和 recoverability (宕机的计算机能够恢复并重新加入工作))
2.Consistency 一致性。(并行、并发情况下,如何保证结果不会错误?并发 bug 是很常见的)
3.性能 Performance (包括 Throughput 和 latency)

性能和前两者往往冲突,所以这就需要工程上的 trade-off

教授简单介绍了 MapReduce:一种框架,让非专业人士能够轻易写分布式代码

以下是一个案例
如果让 N 台计算机去统计全世界所有书籍的各单词计数,那么比较好的方式是:
1.把所有 corpus 平均分成 N 份
2.每台计算机统计分给自己的 corpus,产出 <单词,计数> 键值对
3.所有计算机都产出键值对后,统一把这些键值对相加,得到最后的结果
前两步叫 Map,最后一步叫 Reduce
教授指出,最昂贵的步骤是 mapper 和 reducer 之间的 shuffle 操作,这个到论文中再仔细看吧
在这里插入图片描述

TODO:here

相关文章:

  • 数据结构:树(并查集)
  • minio 快速入门+单机部署+集群+调优
  • 前端使用xlsx-js-style导出Excel,带样式,并处理合并单元格边框显示不全和动态插入表头解决
  • 分治思想--python
  • Nest.js实现一个简单的聊天室
  • 24.9.27学习笔记
  • WebRTC关键技术及应用场景:EasyCVR视频汇聚平台高效低延迟视频监控解决方案
  • C++:模拟实现string
  • 如何使用 WebRTC 获取摄像头视频
  • 用Promise实现前端并发请求
  • 老古董Lisp实用主义入门教程(12):白日梦先生的白日梦
  • C++11标准模板(STL)- 常用数学函数 - 计算一个数的给定次幂 (xy)(std::pow, std::powf, std::powl)
  • Autosar EcuM学习笔记-上电初始化执行函数及下电前执行函数
  • 逆变器控制技术
  • 数据结构与算法——Java实现 24.中缀表达式转后缀
  • 网络传输文件的问题
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【comparator, comparable】小总结
  • 30天自制操作系统-2
  • C++类中的特殊成员函数
  • const let
  • C学习-枚举(九)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript 基础知识 - 入门篇(一)
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • log4j2输出到kafka
  • mac修复ab及siege安装
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 彻底搞懂浏览器Event-loop
  • 大快搜索数据爬虫技术实例安装教学篇
  • 番外篇1:在Windows环境下安装JDK
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 使用parted解决大于2T的磁盘分区
  • 算法-图和图算法
  • 中文输入法与React文本输入框的问题与解决方案
  • 数据库巡检项
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​Redis 实现计数器和限速器的
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # Kafka_深入探秘者(2):kafka 生产者
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #宝哥教你#查看jquery绑定的事件函数
  • $.ajax中的eval及dataType
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十六)串口UART
  • (十三)Flask之特殊装饰器详解
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (五)关系数据库标准语言SQL