XJTUSE笔记指南
XJTUSE专业课与实验指南——更新ing
📄写在前面
1️⃣ 本篇文章仅供参考,无任何主观色彩,切勿无端联想,特此说明!
2️⃣ 难度仅根据均分设置(得分不代表实际难易程度,主观因素太强)
难:60-70 中:70-80 易:80-90
3️⃣ 由于教务系统无法查看分数分配,难度和分数构成可能有偏差
4️⃣ 每年情况不太一样,会有变化
5️⃣ 每位负责的老师都值得尊敬,切勿随意评论
参考:XJTUSE2019级软件工程专业课表
大二上
课程
课程
任课老师
分数构成
讲课风格
难度
离散数学基础
曾明[已退休]
平时:30%(作业评级) 期末:70%
黑板手写授课
中
软件工程导论
很多老师
没有考试,平时作业+最后一次答辩
由不同领域的老师讲课
易
数据结构与算法
原盛
平时:30%(两次实验+思源讨论) 期末:70%
PPT授课
中
电路与电子学
唐胜国
平时:30%(作业)实验:10% 期末:60%
黑板手写授课
难
实验
实验
任课老师
分数构成
讲课风格
难度
数据结构与算法实验
原盛
4个实验(2个跟课程中的一样)
...
Predictive and Adaptive Failure Mitigation to Avert Production Cloud VM Interruptions 论文精读
原文获取:Predictive and Adaptive Failure Mitigation to Avert Production Cloud VM Interruptions
技术文章:Advancing failure prediction and mitigation—introducing Narya
Abstract
当生产系统发生故障时,优先做法是迅速缓解它。尽管这很重要,但故障缓解是以被动和特定的方式进行的:只有在观察到严重症状后才采取一些固定操作。对于云系统来说,这样的策略是不充分的。在本文中,我们提出了一个预防性和适应性的故障缓解服务——Narya,它被整合在一个云生产环境,即微软Azure的计算平台中**。Narya根据多层系统信号预测即将发生的主机故障,然后决定智能缓解操作**。其目的是避免虚拟机故障。Narya的决策引擎采取一种新颖的在线实验方法,不断探索最佳的缓解操作。Narya通过强化学习进一步增强了自适应决策能力。目前Narya已经在生产中运行了15个月。与之前的静态策略相比,它平均减少了26%的虚拟机中断。
1 Introduction
一旦发 ...
MIT课程分布式系统学习07——Fault Tolerance raft2
MIT课程分布式系统学习07——Fault Tolerance raft2
参考资料
1、MIT 6.824 2020 Robert Morris
2、哔哩哔哩视频 2020 MIT 6.824 分布式系统
3、MIT 6.824翻译
4、CAP
仅供学习,如有侵权,请联系我删除
个人博客:https://yijunquan-afk.github.io/
7.1 Log Backup
让我们想象一下如下的场景:有三台服务器以及日志。
1234slot 10 11 12 13S1: 3 S2: 3 3 4S3: 3 3 5
3,4,5分别代表任期号,不用在意这些命令具体是什么。我们假设下一个任期是6,尽管你无法从黑板上确认这一点,但是下一个任期号至少是6或者更大。我们同时假设S3在任期6被选为Leader。在某个时刻,新Leader S3会发送任期6的第一个日志条目(AppendEntries RPC),来传输任期6的第一个Log,这个Log应该在槽位13。
论文中的图2表示:AppendEntries RPC 实际上不仅是⽤来发送从Client发送给Leader ...
MIT课程分布式系统学习06——Fault Tolerance raft1
MIT课程分布式系统学习06——Fault Tolerance raft1
参考资料
1、MIT 6.824 2020 Robert Morris
2、哔哩哔哩视频 2020 MIT 6.824 分布式系统
3、MIT 6.824翻译
仅供学习,如有侵权,请联系我删除
个人博客:https://yijunquan-afk.github.io/
6.1 Split Brain
在之前的课程中,我们介绍了几个具备容错特性(fault-tolerant)的系统。
1️⃣ MapReduce。复制了计算,但是复制这个动作,或者说整个MapReduce被一个单主节点控制。
2️⃣ GFS。以主备(primary-backup)的方式复制数据。它会实际地复制文件内容。但是它也依赖一个single master,来确定每一份数据的primary的位置。
3️⃣ VMware FT。它在一个Primary虚机和一个Backup虚机之间复制计算相关的指令。但是,当其中一个虚机出现故障时,为了能够正确的恢复。需要一个Test-and-Set服务来确认,Primary虚机和Backup虚机只有一个能接管 ...
MIT课程分布式系统学习04——PrimaryBackup Replication for Fault Tolerance
MIT课程分布式系统学习04——PrimaryBackup Replication for Fault Tolerance
Primary/Backup Replication for Fault Tolerance 支持容错的主备复制
Case study of VMware FT (2010), an extreme version of the idea
1234Replication——Fault Tolerance \Failures √ fail-stop fault × bugs
这一节课(Lecture 4),我想更多地讨论一些关于容错(Fault-Tolerance)和复制(Replication)的问题,然后,深入的看一下今天的论文,The Design of a Practical System for Fault-Tolerant Virtual Machines。
参考资料
1、MIT 6.824 2020 Robert Morris
2、哔哩哔哩视频 2020 MIT 6.824 分布式系统
3、MIT 6.824翻译
仅供学习,如有侵权,请联系我删除 ...
MIT课程分布式系统学习03——GFS
MIT课程分布式系统学习03——GFS
参考资料
1、MIT 6.824 2020 Robert Morris
2、哔哩哔哩视频 2020 MIT 6.824 分布式系统
3、MIT 6.824翻译
仅供学习,如有侵权,请联系我删除
个人博客:https://yijunquan-afk.github.io/
GFS:Google File System
这门课程的主要内容是“大型存储”(Big Storage),而GFS这是这门课里有关如何构建大型存储系统的众多案例学习的第一篇。
之所以要说存储,原因是,存储是一种关键的抽象。你可以想象,在分布式系统中,可能有各种各样重要的抽象可以应用在分布式系统中,但是实际上,简单的存储接口往往非常有用且极其通用。所以,构建分布式系统大多都是关于如何设计存储系统,或是设计其它基于大型分布式存储的系统。所以我们会更加关注如何为大型分布式存储系统设计一个优秀的接口,以及如何设计存储系统的内部结构,这样系统才能良好运行。通过阅读GFS论文,我们可以开始了解到这是怎么做到的。
同时,GFS论文也涉及到很多本课程常出现的话题,例如并行性能、容错、复制和一致 ...
MIT课程分布式系统学习02——RPC and threads
MIT课程分布式系统学习02——RPC and threads
1.1 GO语言
❓ why we use go in this class
1️⃣ go提供类许多便捷的工具,如threads、锁以及线程间同步。此外,还有RPC包也十分重要。
2️⃣ go是type safe 以及memory safe的,其垃圾回收机制(garbage collected)十分有效
3️⃣ threads + GC 是十分具有吸引力的
1.2 threads
1.2.1 为什么要关注多线程
📖 多线程是在本课程中实现并发的一个重要工具,在分布式系统中,并发十分有趣。比较常见的情况是:一个程序需要同时和多台计算机(a bunch of other computers)通信,客户端可能会同时和多台服务器通信,一台服务器可能会同时响应来自不同客户端的多条请求。假如我的程序同时有 7 件不同的事情在进行,我想要一种简单的方式实现它能同时做 7 件不同的事情,多线程就能很好的解决它。
在 Go 的文档中,它把线程称为 goroutine,goroutine 真的很像大家所说的线程。
1.2.2 如何理解 ...
MIT课程分布式系统学习01——Introduction
MIT课程分布式系统学习01——Introduction
1.1 分布式系统的驱动力和挑战
大家都知道分布式系统的核心是通过网络来协调,共同完成一致任务的一些计算机。我们在本课程中将会重点介绍一些案例,包括:大型网站的储存系统(storage for big website)、大数据运算(big data computations),如 MapReduce、以及一些更为奇妙的技术,比如点对点的文件共享(peer-to-peer file sharing)。这是我们学习过程中的一些例子。分布式计算之所以如此重要的原因是,许多重要的基础设施都是在它之上建立的,它们需要多台计算机或者说本质上需要多台物理隔离的计算机。
在我先介绍分布式系统之前,也是提醒大家,在你设计一个系统时或者面对一个你需要解决的问题时,如果你可以在一台计算机上解决,而不需要分布式系统,那你就应该用一台计算机解决问题。有很多的工作都可以在一台计算机上完成,并且通常比分布式系统简单很多。所以,在选择使用分布式系统解决问题前,你应该要充分尝试别的思路,因为分布式系统会让问题解决变得复杂。
人们使用大量的相互协作的计算机驱动力是 ...