(undone) MIT6.824 Lecture1 笔记

news/2024/9/29 6:56:46/

参考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


http://www.ppmy.cn/news/1531814.html

相关文章

SQL:如果字段需要排除某个值但又有空值时,不能直接用“<>”或not in

在 SQL 中&#xff0c;如果字段需要排除某个值但又有空值存在时&#xff0c;不能直接使用“<>”&#xff08;不等于&#xff09;或 NOT IN&#xff0c;是因为这些操作会把空值也考虑进去&#xff0c;但通常情况下可能并不希望空值被这样处理。 以下是一些解决方法&#…

模块化编程实战:光敏传感器控制蜂鸣器(江科大stm32练习)

在嵌入式系统开发中&#xff0c;模块化编程是一种将复杂系统分解为独立、可管理模块的方法。这种编程方式不仅提高了代码的可读性和可维护性&#xff0c;还增强了代码的可重用性。本文将通过一个实际项目——使用光敏传感器控制蜂鸣器——来展示模块化编程的实践和好处。 项目…

OpenSource - 开源WAF_SamWaf

文章目录 PreSafeLine VS SamWaf开发初衷软件介绍架构界面主要功能 使用说明下载最新版本快速启动WindowsLinuxDocker 启动访问升级指南自动升级手动升级 在线文档 代码相关代码托管介绍和编译已测试支持的平台测试效果 安全策略问题反馈许可证书贡献代码 Pre Nginx - 集成Mod…

【韩顺平Java笔记】第2章:Java概述

按视频的标号来对应小标题&#xff0c;自用学习笔记 文章目录 5. 内容梳理6. 程序举例6.1 什么是程序 7. Java故事7.1 Java诞生小故事7.2 Java技术体系平台 8. Java特性8.1 Java重要特点 9. sublime10. jdk介绍10.1 Java运行机制及运行过程10.1.1 Java虚拟机&#xff08;JVM&a…

【深入学习Redis丨第六篇】Redis哨兵模式与操作详解

〇、前言 哨兵是一个分布式系统&#xff0c;你可以在一个架构中运行多个哨兵进程&#xff0c;这些进程使用流言协议来接收关于Master主服务器是否下线的信息&#xff0c;并使用投票协议来决定是否执行自动故障迁移&#xff0c;以及选择哪个Slave作为新的Master。 文章目录 〇、…

爬虫小案例:爬取豆瓣网TOP250的电影信息(内含面相对象源码、及详细教学)

爬虫案例二———爬取豆瓣网TOP250的电影信息&#xff0c;并存入MySQL数据库 前提准备 安装pymysql库 pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple Python连接MySQL数据库&#xff0c;并进行增删改查基本操作 连接数据库 """连接MyS…

Vue|插件

在 Vue.js 中&#xff0c;插件是用来扩展 Vue 功能的一种方式&#xff0c;能够帮助开发者扩展和复用功能。通过合理使用插件&#xff0c;可以提高代码的组织性和可维护性 目录 如何使用插件?插件的定义创建及使用插件插件的参数插件的扩展 总结 如何使用插件? 插件的定义 插…

MMD模型及动作一键完美导入UE5-衣服布料模拟(四)

1、给角色刷布料 1、打开角色,通过Window->Clothing打开模型布料窗口 2、选中裙子右键,创建布料数据 3、选择裙子,右键->应用布料数据 4、激活布料画笔,就可以开始绘制布料了 5、调整画笔大小和布料值进行绘制,布料值为0表示刚体