分布式系统论文资料汇总学习

333 阅读3分钟

知乎专栏
分布式和机器学习结合是近来比较热的一个方向,有个开源项目叫做 Ray 可以跟一下: github.com

我之前写过一篇其论文的翻译: 继Spark之后,UC Berkeley 推出新一代AI计算引擎——Ray

要点如下:

  • 极简 Python API 接口:在函数或者类定义时加上 ray.remote 的装饰器并做一些微小改变,就能将单机代码变为分布式代码。这意味着不仅可以远程执行纯函数,还可以远程注册一个类(Actor 模型),在其中维护大量 context(成员变量),并远程调用其成员方法来改变这些上下文。
  • 高效数据存储和传输:每个节点上通过共享内存(多进程访问无需拷贝)维护了一块局部的对象存储,然后利用专门优化过的 Apache Arrow 格式来进行不同节点间的数据交换。
  • 动态图计算模型:这一点得益于前两点,将远程调用返回的 future 句柄传给其他的远程函数或者角色方法,即通过远程函数的嵌套调用构建复杂的计算拓扑,并基于对象存储的发布订阅模式来进行动态触发执行。
  • 全局状态维护:将全局的控制状态(而非数据)利用 Redis 分片来维护,使得其他组件可以方便的进行平滑扩展和错误恢复。当然,每个 redis 分片通过 chain-replica 来避免单点。
  • 去中心化调度:论文中还是两层调度,后来似乎改成分散调度了。 由于 Ray 在持续剧烈更新,论文中有些观点已经和当前实现不符了。

另外就分布式系统学习来说,我打算分两步走。 第一步,为了更好地反馈工作,打算首先学习一下近年来工业上大规模应用的系统的对应论文,学习方法主要意译一遍,加点自己的理解,内容会放在博客上:

分布式系统/论文翻译

现在有:

12-22 Kafka —— 弥合日志系统和消息队列的鸿沟
11-14 Spark 系统的理论基石 —— RDD
05-26 GFS —— 取舍的艺术
04-30 MapReduce —— 历久而弥新
04-06 继 Spark 之后,UC Berkeley 推出新一代 AI 计算引擎 ——Ray
03-30 f4:Facebook’s Warm BLOB Storage System
03-24 Finding a Needle in Haystack:Facebook's Photo Storage

之后的初步计划为:

1. Zookeeper:一个分布式系统协调组件内核
2. Raft:一个易于理解的分布式共识协议。
3. Bigtable:一个基于 GFS,使用 LSM Tree 引擎的结构化存储。
4. Spanner:Google 的一款全球级分布式关系数据库管理系统。
5. Dynamo:Amazon 的一个分布式 KV 存储引擎。
6. ..

第二步,在看了很多工业系统有了感觉之后,再去深入学习下分布式系统的基础理论—— 从 Lamport 大婶开始的一系列分布式奠基之作。现在写了一个 CAP 理解,攒了些资料:

  • 分布式小册,Distributed Systems for Fun and Profit:
  • Jeff Hodges,写给分布式系统初学者的笔记
  • 左耳朵耗子推荐,分布式系统架构经典资料
  • 大牛 Martin Kleppmann 的 DDIA,数据存储处理相关的高屋建瓴之作

上面所有的资料和文章都会在我的知乎专栏和同名公众号“分布式点滴”同步更新,大家一块来交流啊。

欢迎关注我的公众号: