Distributed System Learning Plan
为了提高团队成员在分布式系统方面的专业实力,制定了一份学习计划,希望通过执行本计划使得成员能够从0开始更佳全面的了解分布式系统的基本理论,做到知其然知其所以然,更深入得理解分布式系统设计的关键点,从而更好的指导工程实践。
1. Introduction
学习目标:学习如何阅读一篇论文,了解分布式系统的基本概念
- scalability
- availability
- performance
- latency
- fault tolerance
- and so on
参考文献:
2. Up and down the level of abstraction
学习目标:了解分布式系统的基本问题和理论。
- Meaning Of Abstraction
- System Model
- 分布式系统中的运行单元
- 什么是网络分区
- 同步 vs. 异步
- 一致性问题
- CAP 、FLP 、ACID 理论
- 一致性模型
参考文献:
- Up and down the level of abstraction
- Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web.pdf
- Impossibility of Distributed Consensus with One Faulty Process.pdf
- FLP Impossibility的证明
- 分布式系统工程实践->2.3/2.4
3. Time And Order
学习目标:
- Total and partial order
- 系统中的时间time
- “Global-clock”、”Local-clock”、”no-clock”
- Vector clock in Detail
参考文献:
4. Replica And Consensus Problem
学习目标:了解和学习副本一致性,比如Primary/Backup、2PC 以及 分布式共识算法。
- Replication: Syn & Async
- Primary/Backup & 2PC
- Partition tolerant consensus algorithms
- Algorithms Examples:Raft
参考文献:
扩展阅读:Partition-tolerant consensus algorithms: PacificA、Paxos
- Paxos lecture (Raft user study)
- The Part-Time Parliament
- Paxos Made Simple
- Paxos Made Live - An Engineering Perspective
- Paxos Made Practical
5. Data Distribution(Replica PlaceMent)
学习目标:分布式存储系统扩展新很重要的一方面是数据(副本)的划分和放置,这里需要学习基本的划分方式。
- Range :字典序拆分、List
- Hash:Consistent hash、DHT、CRUSH
参考文献:
6. Distributed System Example
分布式存储泛指存储存储和管理数据的系统, 与无状态的应用服务器不同, 如何处理各种故障以保证数据一致,数据不丢, 数据持续可用, 是分布式存储系统的核心问题,也是极具挑战的问题。 如下总结了分布式存储领域的经典学习论文。(参考:distributed-storage-papers)
Ceph: Reliable, Scalable, and High-Performance Distributed Storage. Sage A. Weil. 功能强大的开源海量存储系统, 支持文件系统、块设备、以及S3接口。 主要技术特色: CRUSH数据对象定位算法, 基于动态子树的文件系统元数据管理。
The Google File System. Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung。 基于普通服务器构建超大规模文件系统的典型案例,主要面向大文件和批处理系统, 设计简单而实用。 GFS是google的重要基础设施, 大数据的基石, 也是Hadoop HDFS的参考对象。 主要技术特点包括: 假设硬件故障是常态(容错能力强), 64MB大块, 单Master设计,Lease/链式复制, 支持追加写不支持随机写。
Bigtable: A Distributed Storage System for Structured Data.Fay Chang, Jeffrey Dean, Sanjay Ghemawat, et. 支持PB数据量级的多维非关系型大表, 在google内部应用广泛,大数据的奠基作品之一 , Hbase就是参考BigTable设计。 Bigtable的主要技术特点包括: 基于GFS实现数据高可靠, 使用非原地更新技术(LSM树)实现数据修改, 通过range分区并实现自动伸缩等。
Spanner: Google’s Globally-Distributed Database. James C. Corbett, Jeffrey Dean, et. 第一个用于线上产品的大规模、高可用, 跨数据中心且支持事务的分布式数据库。 主要技术特点包括, 基于GPS和原子钟的全球同步时间机制TrueTime, Paxo, 多版本事务等。
PacificA: Replication in Log-Based Distributed Storage Systems. Wei Lin, Mao Yang, et. 面向log-based存储的强一致的主从复制协议, 具有较强实用性。 这篇文章系统地讲述了主从复制系统应该考虑的问题, 能加深对主从强一致复制的理解程度。 技术特点: 支持强一致主从复制协议, 允许多种存储实现, 分布式的故障检测/Lease/集群成员管理方法。
Object Storage on CRAQ, High-throughput chain replication for read-mostly workloads. Jeff Terrace and Michael J. Freedman. 支持强一直的链式复制方法, 支持从多个副本读取数据。
Finding a needle in Haystack: Facebook’s photo storage. Doug Beaver, Sanjeev Kumar, Harry C. Li, Jason Sobel, Peter Vajgel. Facebook分布式Blob存储, 主要用于存储图片。 主要技术特色: 小文件合并成大文件, 小文件元数据放在内存因此读写只需一次IO。
Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency. Brad Calder, Ju Wang, Aaron Ogus, Niranjan Nilakantan, et. 微软的分布式存储平台, 除了支持类S3对象存储,还支持表格、队列等数据模型。 主要技术特点: 采用Stream/Partition两层设计(类似BigTable);写错(写满)就封存Extent, 使得副本字节一致, 简化了选主和恢复操作; 将S3对象存储、表格、队列、块设备等融入到统一的底层存储架构中。
The Chubby lock service for loosely-coupled distributed systems. Mike Burrows. Google设计的高可用、可靠的分布式锁服务, 可用于实现选主、分布式锁等功能, 是ZooKeeper的原型。 主要技术特点: 将paxo协议封装成文件系统接口, 高可用、高可靠,但是不保证有很强性能。
Paxos Made Live – An Engineering Perspective. Tushar Chandra, Robert Griesemer,Joshua Redstone. 从工程实现角度说明了Paxos在chubby系统的应用, 是理解Paxo协议及其应用场景的必备论文。 主要技术特点: paxo协议, replicated log, multi-paxos。
Dynamo: Amazon’s Highly Available Key-Value Store. Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, et. Amazon设计的高可用的kv系统, 主要技术特点:综和运用一致性哈希,vector clock, 最终一致性构建一个高可用的kv系统, 可应用于amazon购物车场景。
7. Others
- 分布式系统工程
- 分布式系统原理介绍
- 存储系统一致性与可用性
- 分布式系统设计白皮书(PS:网易内部资料)
This article used CC-BY-SA-4.0 license, please follow it.