知乎话题|学习分布式系统的知识?

名校CS课程系列

北美名校CS课程整理系列|分布式系统与并行计算 2019.10.13
今天我们带来本系列第四篇文章:北美CS名校分布式系统与并行计算相关课程的整理。
本系列今后将持续保持一周两更的频率,想学习更多请点击关注专栏大学模拟器,点赞支持,也欢迎关注微信公众号学科模拟器(college-simulator)。
分布式计算(Distributed Computing)也可译为分散式运算,它主要研究如何应用分布式系统(Distributed System)进行计算。

  • 分布式系统中的组件位于不同的计算机上,它们之间通过消息传递进行交流、协作,最终实现一个共同的目标。

组件之间的并发行、没有全局时钟、组件的独立故障是分布式系统中的三个主要特性。
从基于SOA的系统到大型多人在线游戏,再到P2P都是分布式系统的应用。
在分布式系统中运行的计算机程序被称为分布式程序(distributed program)。
在分布式系统中,实现消息传递的机制有很多,比如HTTP、类RPC连接器、MOM(Message-oriented middleware)等。
分布式计算也可应用于解决计算问题中。
在分布式计算中,一个问题被分解为很多不同的子问题/任务,每一个任务再由一台或多台计算机解决。(以上介绍摘自《机器之心》)

课程资料

由于本人平时需要上班,现在的文章将主要列出课号、名称与主页链接。
其他资源链接将在有精力的时候补上。非常欢迎志同道合的有为青年加入我们(私信我),帮忙收集资料或者发一些与课程相关的学习心得体会。

斯坦福大学 Stanford

CS149: PARALLEL COMPUTING
Parallel Programming :: Winter 2019
CS244b: Distributed Systems
Distributed systems
CS347: Parallel and Distributed Data Management
Parallel and Distributed Data Management

麻省理工学院 MIT

6.824: Distributed Computer Systems Engineering

  • 6.824 Home Page: Spring 2018
  • 日前公布了 2020 年春季课表,与往年不同的是,除了传统的文字介绍,官方还放出了高清课程视频

6.852J: Distributed Algorithms
6.852: Distributed Algorithms
6.338J: Parallel Computing
Parallel Computing
6.827: Multithreaded Parallelism: Languages and Compilers
6.827 Multithreaded Parallelism: Languages and Compilers
6.895: Theory of Parallel Systems (SMA 5509) (Fall 2003)
Theory of Parallel Systems (SMA 5509)

加州大学伯克利分校 UCB

CS C267: Applications of Parallel Computers
https://sites.google.com/lbl.gov/cs267-spr2019/
CS W267: Applications of Parallel Computers
https://sites.google.com/lbl.gov/cs267-spr2019/
CS 273: Foundations of Parallel Computation
CS273 Home Page

卡耐基梅隆大学 CMU

CMU是系统方向不错的学校(CMU做系统的老师觉得自己最多只弱于MIT,呵呵)——李沐

  • 建议顺序是先学习440的课件,然后完成作业,有余力再712.
  • 不过提醒一点是,这两门课都没有录像,所以光看课件效果会差很多。尤其是15-712这门课,纯自己读paper和老师在你读后讲一讲差很远。
  • 这个主要是因为系统是艺术而不是科学。里面的很多设计决定和哲学相关。
  • 所以不仅仅是懂怎么做的 ,更多是体会为什么要这么设计

张晖老师最近(7.3-7.14日)在北大上暑期课程,就是讲分布式系统呢——2017.07.08

15-440/640: Distributed Systems
https://www.andrew.cmu.edu/course/15-440/

  • 分布式系统的入门课,主要是针对本科生。推荐下14年Dave和Srini上的,特色之一是用了Go(那阵子Dave特别着迷于go)

15-712: Advanced and Distributed Operating Systems
15-712 Advanced and Distributed Operating Systems, Fall 2019

  • 面向PhD,主要是读paper。我上过12年的那次,上课老师Hui Zhang是神人之一,大局观特别好,上了之后启发很大。我算是从这课入的门。——李沐

https://www.cs.cmu.edu/~15719/
15-897: Parallel Computing: Theory and Practice
Parallel Computing: Theory and Practice (15-897) - Umut Acar - Carnegie Mellon University
15-418/15-618: Parallel Computer Architecture and Programming
http://www.cs.cmu.edu/~418/

伊利诺伊大学香槟分校 UIUC

CS425: Distributed Systems
Distributed Systems :: Fall :: CS 425

康奈尔大学 Cornell

CS5220: Applications of Parallel Computers
Home
CS 5414: Distributed Computing Principles
Distributed Computing Principles Home Page
CS 5450: Networked and Distributed Systems
CS 5450

普林斯顿大学 Princeton

COS418: Distributed Systems
Distributed Systems

华盛顿大学 UW

CSE 452: : Distributed Systems
CSE452: Distributed Systems
CSEP 524 Spring 2015 - Parallel Computation
CSEP 524 Spring 2015 - Parallel Computation (PMP)
CSEP552: Distributed Systems
PMP Distributed Systems, Winter 2018
CSE 552: Parallel and Distributed Systems
Parallel and Distributed Systems, Spring 2019

德州大学奥斯汀分校 UT Austin

CS 371D: Distributed Computing
CS371D Home Page

说在后面

大学模拟器专栏由 文兄光喻创建, 旨在为广大学习爱好者收集公开/非公开资源,降低在校学生与工作人士的学习成本,提供免费可得的课程培养方案。最终达到降低内卷、打击智商税收割者的目的。
从今天开始,本专栏在之后几个月将陆续发出关于北美名校CS专业的相关课程主页链接,课程主题全面覆盖人工智能(自然语言处理、计算机视觉、增强学习)、机器学习理论与应用、数据结构与算法分析、大数据与并行计算、操作系统与编译原理、网络与信息安全、分布式系统与数据库、机器人、数值分析与计算机基础数学、人机交互、机器人、计算机图形学等方面的内容,目前主要面向Stanford、MIT、UCB、CMU、UIUC、Cornell、Princeton、Caltech、Harvard、UW、Georgia Tech、UT Austin这几所CS强校。

@评论

1 其实最重要的,是有作业
2 UMass Amerst 的有视频资源

开源|TiDB

TiDB 2020.02.28
作为开源分布式数据库 TiDB 的研发团队,我们一直希望带领更多小伙伴进入分布式系统、数据库领域,探索更多奇妙的事儿,也总结了一些从“入门到高阶玩家”更优的学习路径。
作者:TiDB Robot
链接:https://www.zhihu.com/question/23645117/answer/1029506015
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
划重点:「从入门到高阶」,零基础的同学也可以从下面找到合适的资料!
插播科普

  • TiDB 源码:github.com/pingcap/tidb
  • TiKV 源码:github.com/tikv/tikv
    注:TiKV 是 TiDB 的存储层,现已成为 CNCF 的孵化项目

    01. PingCAP Talent Plan

    PingCAP Talent Plan 是一项进阶学习计划,内容涵盖:
    语言学习(Go/Rust),分布式系统、数据库基础知识,和配套项目实践作业。
    课程内容层层递进,分为线上和线下两个部分:

  • 线上课程:学员根据课表完成相应的作业,以周为单位打包提交,导师会进行评估并反馈。表现优异者将会被邀请参加线下课程。
    TiKV 方向的线上课程包含部分 MIT 6.824 的 Lab。如果已经通关了 MIT 6.824,那么续起 Talent Plan 那肯定是“不费吹灰之力”了:D

  • 线下课程:线下集中学习,有导师面对面授课、带教,通过项目练习,强化学员的实操能力。

Talent Plan 学员最终可以掌握工业级分布式数据库项目——TiDB/TiKV 架构原理,以及一定的实操技能。


2020-02-28 更新 Talent Plan 2.0 版本正在设计中,期待大家集思广益,一起打磨更好的课程,试玩反馈也可以⬇️
《积聚社区力量,让 Talent Plan 来一次升级吧!》

我们正在将 Talent Plan 1.0 的优质资源进行整合,同时增加了一些全新的课程系列,形成了一个更大的 Talent Plan 学习版图

Talent Plan 2.0 将涵盖 4 个课程系列,包括:

Open Source Collaboration:面向零基础开源爱好者的开源协作课程,这是一个全新的模块,下文将详细介绍。
Programming Language:面向各种编程语言爱好者,目前已有的是 Go、Rust 语言课程,后续准备新增其他语言。
Infrastructure Systems:面向爱折腾基础架构系统的同学。
Deep Dive:TiDB 生态项目深度解读课程,课程难度由浅入深、层层递进。在已有的 TiDB/TiKV 课程基础上,计划新增 Cloud TiDB 等其他生态项目的课程。


Talent Plan 1.0 完整课程表:https://university.pingcap.com/talent-plan/
img
img
另外,university.pingcap.com上还有很多的视频课程,对 TiDB 及生态工具好奇的朋友可以深入了解~
img
img

02. Awesome Database Learning

如果对于数据库领域有更多的兴趣,可以关注「Awesome Database Learning」这个 Repo,我们为大家推荐了一系列高质量课程、书目、论文等等。欢迎大家探索!
img
img
也欢迎各位给该 Repo 提 PR,一起完善它

3 TiDB Community Paper Reading 直播

说到前沿理论学习,不得不提论文宝藏。
我们目前已经小范围举办了 22 期线上直播 Paper Reading,讲师有来自 PingCAP 的小伙伴,也有 TiDB 开源社区活跃分子,论文选择都非常硬核,有经典的算法、架构,也有最新的学术研究成果,下面是部分截图:
img
img
不仅内容硬核,有时还会掉落彩蛋,比如讲师可能是论文作者本人——我司 TiDB 研发工程师方祝和分享了他的论文《Interleaved Multi-Vectorizing》,该论文已被 VLDB 官方收录:
视频:Interleaved Multi-Vectorizing by 方祝和

“在做分布式数据库的路上,经常会碰到这样那样的问题,为了解决这些问题经常会去读一些相关的 Paper。Paper Reading 上分享了很多数据库领域经典的论文,给大家建立起比较完整的知识体系,也会分享一些最新的论文,来拓展了我们解决问题的思路。”

“通过 Paper Reading 了解了很多业界经典的和前沿的知识技术,同时也拓宽了知识体系;在自己准备 Paper Reading 的时候,我也可以更深入的思考论文的逻辑体系,学会怎样才能让别人更好的理解。”

Paper Reading 是面向开源社区公开的,点击【这里】查看 Paper Reading 活动信息&往期回顾。

4. 练手项目?TiDB/TiKV 超合适

如果想一边学理论一边练手,那么折腾 TiDB/TiKV 这套“纯天然”的分布式数据库就太对了,开源项目的资料丰富程度和社区活力可能会让人“无法自拔” :
https://pingcap.com/community-cn/

  • 源码阅读文章

除了这些,还有一些话想说……

由于分布式数据库本身是一个工业界和学术界结合非常紧密的领域,至今还有很多问题仍未解决。
比如 Guy Lohman 在《IS QUERY OPTIMIZATION A “SOLVED” PROBLEM?》一文中提到的 cardinality estimation 的问题,依然困扰着业界。
而 TiDB 作为一个工业级分布式数据库,其组件或模块都有相当大的复杂性,在某些方向已经进入“无人区”,没有前人经验可以参考
因此,我们不仅期待在 TiDB 项目的基础上将前沿学术研究与自身工业实践结合,探索更多答案;更加期待在以上罗列的学习资料之外,与更多对「分布式系统」感兴趣的同学,进行深入的知识分享和交流,碰撞灵感。
比如:

  • 我们主办的 Infra Meetup 目前已经举办 124 期,话题涵盖基础架构领域的方方面面,每期邀请大咖讲师与大家面对面交流(往期视频可以在 B 站观看 ID:TiDB_Robot,或登录 PingCAP 官网-社区页面获取);
  • 我们邀请很多伙伴一同撰写了「分布式前沿技术专题」系列文章,大家站在不同角度分享了对这个领域的认知,和分布式系统的实践经验;
  • ……

祝大家、祝我们
永远保持好奇心
保持学习的习惯
一起探索未知
干杯!