Skip to content

Latest commit

 

History

History
1027 lines (516 loc) · 72.8 KB

ds.md

File metadata and controls

1027 lines (516 loc) · 72.8 KB

分布式系统(Distributed System)资料

希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,因为这个项目还在继续也在不定期更新.希望看到文章的朋友能够学到更多.

介绍:这是一篇介绍在动态网络里面实现分布式系统重构的paper.论文的作者(导师)是MIT读博的时候是做分布式系统的研究的,现在在NUS带学生,不仅仅是分布式系统,还有无线网络.如果感兴趣可以去他的主页了解.

介绍:分布式编程实验室,他们发表的很多的paper,其中不仅仅是学术研究,还有一些工业界应用的论文.

介绍:麻省理工的分布式系统理论主页,作者南希·林奇在2002年证明了CAP理论,并且著《分布式算法》一书.

介绍:分布式系统搭建初期的一些建议

介绍:分布式计算原理课程

介绍:Google全球分布式数据介绍,中文版

介绍:Algolia的分布式搜索网络的体系架构介绍

介绍:构建高可用分布式Key-Value存储系统

介绍:Nanomsg和Bond的分布式搜索引擎

介绍:使用MongoDB和Mongothon进行分布式处理

介绍:分布式数据库中把ACID与BASE结合使用.

介绍:理解的Paxos的分布式系统,参考阅读:关于Paxos的历史

介绍:There is No Now Problems with simultaneity in distributed systems

介绍:伦敦大学学院分布式系统课程课件.

介绍:分布式系统电子书籍.涵盖内容:分布式系统介绍、全序和偏序、时钟、复制模型.适合分布式系统入门的同学。国内也有一些笔记

介绍:卡内基梅隆大学春季分布式课程主页

介绍: 电子书,分布式系统概念与设计(第五版)

介绍:这是一位台湾网友 ccshih 的文字,短短的篇幅介绍了分布式系统的若干要点。pdf

介绍:清华大学分布式系统课程主页,里面的schedule栏目有很多宝贵的资源

介绍:免费的在线分布式系统书籍

介绍:Quora上面的一篇关于学习分布式计算的资源.

介绍:这个是第一个全球意义上的分布式数据库,也是Google的作品。其中介绍了很多一致性方面的设计考虑,为了简单的逻辑设计,还采用了原子钟,同样在分布式系统方面具有很强的借鉴意义.

介绍:Google的统面向松散耦合的分布式系统的锁服务,这篇论文详细介绍了Google的分布式锁实现机制Chubby。Chubby是一个基于文件实现的分布式锁,Google的Bigtable、Mapreduce和Spanner服务都是在这个基础上构建的,所以Chubby实际上是Google分布式事务的基础,具有非常高的参考价值。另外,著名的zookeeper就是基于Chubby的开源实现.推荐The google stack,Youtube:The Chubby lock service for loosely-coupled distributed systems

介绍:这篇论文是SOSP2007的Best Paper,阐述了一种构建分布式文件系统的范式方法,个人感觉非常有用。淘宝在构建TFS、OceanBase和Tair这些系统时都充分参考了这篇论文.

介绍:Ebook:Data-Intensive Text Processing with MapReduce.

介绍:Design and Implementation of a Query Processor for a Trusted Distributed Data Base Management System.

介绍:分布式查询入门.

介绍:分布式系统和api总结.

介绍:分布式系统阅读论文,此外还推荐github上面的一个论文列表The Distributed Reader

介绍:Replication, atomicity and order in distributed systems

介绍:2017年MIT分布式系统课程主页,用Golang作为授课语言。6.824 Distributed Systems课程主页.课程的课堂测试Past Exams可以很好的考察学习的结果。对于学习分布式系统比较推荐这个课程

介绍:免费分布式系统电子书。

介绍:斯坦福开源的分布式文件系统。

介绍:Google论文:设计一个高可用的全球分布式存储系统。

介绍:对于分区数据库的分布式事务处理。

介绍:Distributed Systems Building Block: Flake Ids.

介绍:Google Code University课程,如何设计一个分布式系统。

介绍:KVM的分布式存储系统.

介绍:分布式系统课程列表,包括数据库、算法等.

介绍:来自百度的分布式表格系统.

介绍:分布式系统的在线电子书.

介绍:分布式系统资料,此外还推荐Various articles about distributed systems.

介绍:Designs, Lessons and Advice from Building Large Distributed Systems.

介绍:Testing a distributed system can be trying even under the best of circumstances.

介绍: 基于普通服务器构建超大规模文件系统的典型案例,主要面向大文件和批处理系统, 设计简单而实用。 GFS是google的重要基础设施, 大数据的基石, 也是Hadoop HDFS的参考对象。 主要技术特点包括: 假设硬件故障是常态(容错能力强), 64MB大块, 单Master设计,Lease/链式复制, 支持追加写不支持随机写.

介绍:支持PB数据量级的多维非关系型大表, 在google内部应用广泛,大数据的奠基作品之一 , Hbase就是参考BigTable设计。 Bigtable的主要技术特点包括: 基于GFS实现数据高可靠, 使用非原地更新技术(LSM树)实现数据修改, 通过range分区并实现自动伸缩等.中文版

介绍:面向log-based存储的强一致的主从复制协议, 具有较强实用性。 这篇文章系统地讲述了主从复制系统应该考虑的问题, 能加深对主从强一致复制的理解程度。 技术特点: 支持强一致主从复制协议, 允许多种存储实现, 分布式的故障检测/Lease/集群成员管理方法.

介绍:分布式存储论文:支持强一直的链式复制方法, 支持从多个副本读取数据,实现code.

介绍:Facebook分布式Blob存储,主要用于存储图片. 主要技术特色:小文件合并成大文件,小文件元数据放在内存因此读写只需一次IO.

介绍: 微软的分布式存储平台, 除了支持类S3对象存储,还支持表格、队列等数据模型. 主要技术特点:采用Stream/Partition两层设计(类似BigTable);写错(写满)就封存Extent,使得副本字节一致, 简化了选主和恢复操作; 将S3对象存储、表格、队列、块设备等融入到统一的底层存储架构中.

介绍:从工程实现角度说明了Paxo在chubby系统的应用, 是理解Paxo协议及其应用场景的必备论文。 主要技术特点: paxo协议, replicated log, multi-paxo.参考阅读:关于Paxos的历史

介绍:Amazon设计的高可用的kv系统,主要技术特点:综和运用一致性哈希,vector clock,最终一致性构建一个高可用的kv系统, 可应用于amazon购物车场景.新内容来自分布式存储必读论文

介绍:分布式存储系统中的副本存储问题.

介绍:分布式存储系统架构.

介绍:开源分布式文件系统Chirp,对于想深入研究的开发者可以阅读文章的相关Papers.

介绍:经典论文分布式时钟顺序的实现原理.

介绍:面向软件错误构建可靠的分布式系统,中文笔记.

介绍:MapReduce:超大集群的简单数据处理.

介绍:麻省理工的分布式计算课程主页,里面的ppt和阅读列表很多干货.

介绍:分布式系统Styx的架构剖析.

介绍:Quora上面的一个问答:有哪些关于分布式计算学习的好资源.

介绍:下一代分布式k-v存储数据库.

介绍:分布式系统归根结底还是需要操作系统的知识,这是耶鲁大学的操作系统概念书籍首页,里面有提供了第8版的在线电子版和最新的学习操作系统指南,学习分布式最好先学习操作系统.

介绍:分布式系统Log剖析,非常的详细与精彩. 中文翻译 | 中文版笔记.

介绍:分布式系统基础之操作系统学习指南.

介绍:分布式系统领域经典论文翻译集.

介绍:分布式系统性能维护.

介绍:计算机科学,自底向上,小到机器码,大到操作系统内部体系架构,学习操作系统的另一个在线好材料.

介绍:<操作系统:三部曲>在线电子书,虚拟、并发、持续.

介绍:数据库系统经典论文阅读列,此外推送github上面的db reading.

介绍:Unix System Administration ebook.

介绍:分布式系统经典论文.

介绍:计算机系统概念,以分布式为主.此外推荐Introduction to Operating Systems笔记

介绍:推荐康奈尔大学的教授EMİN GÜN SİRER的主页,他的研究项目有分布式,数据存储。例如HyperDex数据库就是他的其中一个项目之一.

介绍:来自卡内基梅隆如何构建可扩展的、安全、高可用性的分布式文件系统,其他papers.

介绍:分布式机器学习常用库.

介绍:介绍了如何构建仓储式数据中心,尤其是对于现在的云计算,分布式学习来说很有帮助.本书是Synthesis Lectures on Computer Architecture系列的书籍之一,这套丛书还有 《The Memory System》,《Automatic Parallelization》,《Computer Architecture Techniques for Power Efficiency》,《Performance Analysis and Tuning for General Purpose Graphics Processing Units》,《Introduction to Reconfigurable Supercomputing》,Memory Systems Cache, DRAM, Disk

介绍:来自芬兰赫尔辛基的分布式系统课程课件:什么是分布式,复制,一致性,容错,同步,通信.

介绍:分布式数据库TiDB,Golang开发.

介绍:课程资料:大规模系统.

介绍:使用MapReduce进行大规模分布式集群环境下并行L-BFGS.

介绍:Twitter是如何构建高性能分布式日志的.

介绍:在分布式系统中某个组件彻底死了影响很小,但半死不活(网络/磁盘),对整个系统却是毁灭性的.

介绍:来自百度的分布式数据库.

介绍:SequoiaDB分布式文档数据库开源.

介绍:这个网址里收集了一堆各TOP大学分布式相关的课程.

介绍:这个网站是Raft算法的作者为教授Paxos和Raft算法做的,其中有两个视频链接,分别讲上述两个算法.参考阅读:关于Paxos的历史

介绍:A Scalable Content-Addressable Network.

介绍:这个项目其实是一本书( The Architecture of Open Source Applications)的源代码附录,是一堆大牛合写的.

介绍:这只是一个课程主页,没有上课的视频,但是并不影响你跟着它上课:每一周读两篇课程指定的论文,读完之后看lecture-notes里对该论文内容的讨论,回答里面的问题来加深理解,最后在课程lab里把所看的论文实现。当你把这门课的作业刷完后,你会发现自己实现了一个分布式数据库.

介绍:使用go开发的分布式文件系统.

介绍:Quora上关于学习分布式的资源问答.

介绍:SeaweedFS是使用go开发的分布式文件系统项目,代码简单,逻辑清晰.

介绍:Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别

介绍:Coordination Avoidance In Distributed Databases.

介绍:本文以TiDB 源码为例.

介绍:分布式系统概念梳理,为分布式系统涉及的主要概念进行了梳理.

介绍:使用Redis实现分布式锁.

介绍: 斯坦福2014年秋季分布式课程.

介绍: 分布式的“读原子性”.

介绍: 大数据分布式机器学习的策略与原理.

介绍: 分布式CAP法则.

介绍: 新手如何步入分布式存储系统.

介绍: 分布式存储系统Cassandra剖析,主要讲述系统设计、客户端API、以及facebook的应用。推荐白皮书Introduction to Apache Cassandra.

介绍: 分布式系统学习资源.

介绍: 一些高性能TCP黑客技巧.

介绍:分布式系统性能提升.

介绍:Benjamin Reed 和 Flavio P.Junqueira 所著论文,对Zab算法进行了介绍,zab算法是Zookeeper保持数据一致性的核心,在国内有很多公司都使用zookeeper做为分布式的解决方案.推荐与此相关的一篇文章ZooKeeper’s atomic broadcast protocol: Theory and practice.

介绍:可扩展的分布式文件系统ZFS,The Zettabyte File System,End-to-end Data Integrity for File Systems: A ZFS Case Study.

介绍:分布式Haskell在当前web中的应用.

介绍:POPL2016的论文,关于分布式系统一致性选择的论述,POPL所接受的论文,github上已经有人整理.

介绍:Paxos让分布式更简单.译文.参考阅读:关于Paxos的历史,understanding Paxos part1,Understanding Paxos – Part 2.Quora: What is a simple explanation of the Paxos algorithm?,Tutorial Summary: Paxos Explained from Scratch,Paxos algorithm explained, part 1: The essentials,Paxos algorithm explained, part 2: Insights

介绍:分布式系统一致性协议:Paxos.参考阅读:关于Paxos的历史

介绍:事务提交的一致性探讨.

介绍:在《The Part-Time Parliament》中描述了基本协议的交互过程。在基本协议的基础上完善各种问题得到了最终的议会协议。 为了让人更容易理解《The Part-Time Parliament》中描述的Paxos算法,Lamport在2001发表了《Paxos Made Simple》,以更平直的口头语言描述了Paxos,而没有包含正式的证明和数学术语。《Paxos Made Simple》中,将算法的参与者更细致的划分成了几个角色:Proposer、Acceptor、Learner。另外还有Leader和Client.参考阅读:关于Paxos的历史

介绍:看这篇论文时可以先看看理解Paxos Made Practical.

介绍:PaxosLease:实现租约的无盘Paxos算法,译文.

介绍:Paxos算法实现,译文,同时推荐42 Paxos Made Moderately Complex.

介绍:Hadoop学习清单.

介绍:Hadoop学习清单.

介绍:NoSQL知识清单,里面不仅仅包含了数据库阅读清单还包含了分布式系统资料.

介绍:raft 是一种用来管理日志复制的一致性算法。它和 Paxos 的性能和功能是一样的,但是它和 Paxos 的结构不一样;这使得 Raft 更容易理解并且更易于建立实际的系统。中文版.

介绍:Raft可视化图帮助理解分布式一致性

介绍:Etcd分布式Key-Value存储引擎

介绍:理解peer-to-peer系统中的可用性究竟是指什么.同时推荐基于 Peer-to-Peer 的分布式存储系统的设计

介绍:经典论文

介绍:并行处理的编程语音

介绍:此篇论文对HDFS,MooseFS,iRODS,Ceph,GlusterFS,Lustre六个存储系统做了详细分析.如果是自己研发对应的存储系统推荐先阅读此篇论文

介绍:分布式文件系统综述

介绍:并行编程的概念,同时推荐卡内基梅隆工程师数字图书馆

介绍:并发控制性能建模:选择与意义

介绍:ebook分布式系统概念与设计

介绍:分布式系统设计的形式方法

介绍:互斥和选举算法

介绍:经典论文

介绍:如何构建一个安全可靠的分布式系统,About the Author,Bibliography:文献资料,章节访问把链接最后的01换成01-27即可

介绍:卡内基梅隆大学的分布式系统博士生课程主页,有很丰富的资料

介绍:Dapper,大规模分布式系统的跟踪系统,译文,译文对照

介绍:伯克利大学计算机系统进阶课程,内容有深度,涵盖分布式,数据库等内容

介绍:PB级分布式系统构建/扩展经验

介绍:伯克利大学计算机系统课程:操作系统与系统编程

介绍:MDCC主要解决跨数据中心的一致性问题中间件,一种新的协议

介绍:google公开对外发表的分布式系统与并行计算论文

介绍:分布式文件系统HDFS架构

介绍:分布式 Key/Value数据库

介绍:是著名的Ceph的负载平衡策略,文中提出的几种策略都值得尝试,比较赞的一点是可以对照代码体会和实践,如果你还需要了解可以看看Ceph:一个 Linux PB 级分布式文件系统,除此以外,论文的引用部分也挺值得阅读的,同时推荐Ceph: A Scalable, High-Performance Distributed File System

介绍:Surrento的冷热平衡策略就采用了延迟写技术

介绍:对于分布式存储系统的元数据管理.

介绍:服务器端的I/O协调并行文件系统处理,网络,文件存储等都会涉及到IO操作.不过里面涉及到很多技巧性的思路在实践时需要斟酌

介绍:分布式文件系统概念与应用

介绍:加利福尼亚大学的研究生操作系统课程主页,论文很值得阅读

介绍:Yahoo出品的流式计算系统,目前最流行的两大流式计算系统之一(另一个是storm),Yahoo的主要广告计算平台

介绍:Google的大规模图计算系统,相当长一段时间是Google PageRank的主要计算系统,对开源的影响也很大(包括GraphLab和GraphChi)

介绍:CMU基于图计算的分布式机器学习框架,目前已经成立了专门的商业公司,在分布式机器学习上很有两把刷子,其单机版的GraphChi在百万维度的矩阵分解都只需要2~3分钟;

介绍:这篇论文是Google 2013年发表的,介绍了F1的架构思路,13年时就开始支撑Google的AdWords业务,另外两篇介绍文章F1 - The Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business .Google NewSQL之F1

介绍:CockroachDB :一个可伸缩的、跨地域复制的,且支持事务的数据存储,InfoQ介绍,Design and Architecture of CockroachDb

  • 《Multi-Paxos: An Implementation and Evaluation》

介绍:Multi-Paxos实现与总结,此外推荐Paxos/Multi-paxos Algorithm,Multi-Paxos Example,地址:ftp://ftp.cs.washington.edu/tr/2009/09/UW-CSE-09-09-02.PDF

介绍:一致性协议zab分析

介绍:分布式哈希算法论文,扩展阅读Introduction to Distributed Hash Tables,Distributed Hash Tables

介绍:分布式hash表性能的Churn问题

介绍:分布式系统的CAP问题,推荐Perspectives on the CAP Theorem.对CAP理论的解析文章,PODC ppt,A plain english introduction to CAP Theorem,IEEE Computer issue on the CAP Theorem

介绍:闪存存储文件系统F2FS

介绍:微软发表的关于i/o访问优化论文

介绍:虚拟内存文件系统tmpfs

介绍:Linux B-tree文件系统.

介绍:Akamai是全球最大的云计算机平台之一,承载了全球15-30%网络流量,如果你是做CDN或者是云服务,这个里面的论文会给你很有帮助.例如这几天看facebook开源的osquery。找到通过db的方式运维,找到Keeping Track of 70,000+ Servers: The Akamai Query System这篇论文,先看论文领会思想,然后再使用工具osquery实践

介绍:来自eBay 的解决方案,译文Base: 一种Acid的替代方案,应用案例参考保证分布式系统数据一致性的6种方案

介绍:Jim Waldo和Sam Kendall等人共同撰写了一篇非常有名的论文“分布式计算备忘录”,这篇论文在Reddit上被人推荐为“每个程序员都应当至少读上两篇”的论文。在这篇论文中,作者表示“忽略本地计算与分布式计算之间的区别是一种危险的思想”,特别指出了Emerald、Argus、DCOM以及CORBA的设计问题。作者将这些设计问题归纳为“三个错误的原则”: “对于某个应用来说,无论它的部署环境如何,总有一种单一的、自然的面向对象设计可以符合其需求。” “故障与性能问题与某个应用的组件实现直接相关,在最初的设计中无需考虑这些问题。” “对象的接口与使用对象的上下文无关”.

介绍:分布式系统领域经典论文列表.

介绍:Consistent Hashing算法描述.

介绍:SIGMOD是世界上最有名的数据库会议之一,最具有权威性,收录论文审核非常严格.2016年的SIGMOD 会议照常进行,上面收录了今年SIGMOD收录的论文,把题目输入google中加上pdf就能找到,很多论文值得阅读,SIGMOD 2015

介绍:耶鲁大学的分布式系统理论课程笔记

介绍:分布式系统文档资源(可下载)

介绍:数据库系统剖析,这本书是由伯克利大学的Joseph M. Hellerstein和M. Stonebraker合著的一篇论文.对数据库剖析很有深度.除此以外还有一篇文章Architecture of a Database System。数据库系统架构,厦门大学的数据库实验室教授林子雨组织过翻译

介绍:数据库关系模型论文

介绍:中国人民大学数据研究实验室推荐的数据库领域论文

介绍:构建可扩展的分布式信息管理系统

介绍:Haskell中的分布式系统开发

介绍:Google使用Borg进行大规模集群的管理,伯克利大学ppt介绍,中文版

介绍:并发编程(Concurrency Programming)资料,主要涵盖lock free数据结构实现、内存回收方法、memory model等备份链接 密码: xc5j

介绍:Nancy Lynch's的分布式算法研究生课程讲义

介绍:分布式算法主题模型.

介绍:世界上非常有名的推荐系统会议,我比较推荐接收的PAPER

介绍:推荐一个博客,博主是Amazon CTO Werner Vogels,这是一个关注分布式领域的博客.大部分博文是关于在工业界应用.

介绍:这个Git是由阿里(alibaba)的技术专家何登成维护,主要是分布式数据库.

介绍:Erlang的作者Joe Armstrong撰写的论文,面对软件错误构建可靠的分布式系统.中文译版

介绍:伊利诺伊大学的Advanced Distributed Systems 里把各个方向重要papers(updated Spring 2015)列举出来,可以参考一下

介绍:这是一本分布式算法电子书,作者是Jukka Suomela.讲述了多个计算模型,一致性,唯一标示,并发等.

介绍:当时是在阅读如何设计一个缓存系统时看到的,然后通过Google找到了这一篇关于缓存策略的论文,它是LFU的改良版,中文介绍.如果有兴趣可以看看Golang实现版。结合起来可能会帮助你理解

介绍:斯坦福大学给研究生开的分布式系统课程。教师是 spark 作者 matei. 能把这些内容真正理解透,分布式系统的功力就很强了。

介绍:[怎么学系列]学习分布式系统需要怎样的知识?

介绍:分布式系统工程师的分布式系统理论

介绍:分布式系统论文阅读列表,此外推荐威斯康星大学麦迪逊分校计算机系分布式系统学习推荐阅读列表

介绍:麻省理工大学分布式系统小组,他们会把平时阅读到的优秀论文分享出来。虽然有些论文本页已经收录,但是里面的安排表schedule还是挺赞的

介绍:分布式系统、可扩展性与系统设计相关报告、论文与网络资源汇总.

介绍:MapReduce&Hadoop相关论文,涉及分布式系统设计,性能分析,实践,优化等多个方面

介绍:分布式系统原理与范型第二版,课后解答

介绍:分布式系统研讨会论文阅读列表

介绍:这是一篇评论CAP定理的论文,学习CAP很有帮助,推荐阅读评论文章"A Critique of the CAP Theorem"

介绍:推荐文章《不断演进的分布式系统》.

介绍:HN上面关于分布式系统相关领域学习的书籍推荐.

介绍:Golang开源项目,分布式文件存储系统SeaweedFS

介绍:论文推荐:设计并实现一个日志结构的文件系统.

介绍:数据库系统的设计与实现,卡内基梅隆大学在2016年春季数据库课程以本书作为教材,并且向外界开放了Schedule.引用一段亚马逊上面的购书评论:

这本书主要集中在基本的数据库实现方面。看起来很理论,但实际上作者提到的点都有实际的考虑。这一点在写完相关代码后重新阅读感触尤深。但如果不经过自己的思考和实践,这本书实际上读起来仍是“看起来就是那么回事”的感觉。

不得不说,这本书其实应该是所有进行数据库应用开发的人必读的一本书。大部分数据库里面的概念,书本都有从实际的需求中引导出,一目了然。大部分的教材,在提到数据库的各种概念时,往往是有定义而无解释为何有这种定义。

介绍:原文主要讲述了CAP理论中C在实践中的重要性。做分布式系统的都知道CAP只能三选其二。而且目前很多基础设置服务(云存储,云数据)都无法保证100%可用,那么就是间接的丢掉了A,推荐阅读以下文末推荐的You Can’t Sacrifice Partition Tolerance,分区容错也很重要

介绍:Verdi是一套正规验证分布式系统,开源的项目中有对raft协议实现。Verdi是通过TLA+ 和Coq 等形式方法对系统进行验证

介绍:学习分布式系统需要怎样的知识?

介绍:Facebook设计的分布式数据 图数据库

介绍:分布式系统初学者资源.

介绍:从0开始构建一个分布式日志。第一部分主要是讲日志的存储,截止到现在已经写到数据复制扩容之日志消耗权衡与思考快速实战。另外推荐作者写的现实世界中的分布式系统推论

介绍:伊利诺伊大学分布式系统进阶课程,涉及内容云的前世今生,大公司的在分布式计算上的工作(Mapreduce参考)、P2P系统滚、KV存储、基本的分布式算法(时钟同步,锁)、强一致性、分布式在机器学习上的应用、流处理、认证、事务处理、存储与复制、最终一致性、图处理、集群调度、分布式系统bug跟踪和性能测试、安全、缓存。

介绍:这篇文章没有理论,适合新手阅读分布式系统实践笔记

介绍:基于容器的分布式系统设计模式,文中提到了,单容器模式,所有的服务都集成在一个容器里面。单节点多容器模式,类似于kubernetes的Pods(任务组)。一个服务跨多个容器。对于这种模式可以分为Sidecar模式:譬如一个Web服务。Web由一个容器提供,日志处理由一个Logsaver容器提供。Ambassador模式(外交官模式)类似于SLB的设计模式,中间有一个代理容器用来分发功能到子容器。Adapter模式(适配器模式)主要是目的是想分布的执行和存储,统一的监控和管理。有点类似监控系统的设计,日志数据的输入不一,但是统一结果输出。多节点应用模式:这个分为选主模式(核心是选主算法)。Work Queue模式(工作队列模式)类似大规模电商系统的订单处理设计。Scatter/gather模式:有点类似MapRedue架构,分片处理,最后汇总结果。文章推荐容器设计模式

介绍: 在处理分布式系统的时候,很多经验告诉我们要尽量让服务无状态。而在实际分布式系统中,有状态的服务是一致存在的。例如消息队列、数据库存储服务。本文介绍了如何构建有状态的服务,如果保证有状态化服务的高可用。

介绍:使用Maximizing Hit Density提高缓存命中.

介绍:混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心。 大规模分布式软件系统的发展正在改变软件工程。作为一个行业,我们很快采用了提高开发灵活性和部署速度的实践。紧跟着这些好处的一个紧迫问题是:我们对投入生产的复杂系统中有多少信心?

介绍:Google SRE 讲解分布式系统Paxos算法。

介绍:Andy Pavlo组织的时序数据库系列演讲分享,InfluxDB存储引擎、QuasarDB内部剖析、TimescaleDB成长、Two Sigma时序数据库实践。

介绍:Andy Pavlo在卡内基梅隆大学的高级数据库课程,以论文导读的形式。有视频。并发控制,乐观并发控制、多版本并发控制、OLAP索引、数据库压缩、存储模型、日志协议、检查点协议、优化器的实现、执行计划、并行join、查询编译、内存数据库.

介绍:这篇论文是Paxos算法变种,规避了Paxos算法的复杂性。同时达到了RSM的高性能要求。github 上有开发者对这个算法进行了总结。已经有多种语言的实现方式。譬如Js和Golang版本的实现.

介绍:Facebook反作弊系统论文。

介绍:混合逻辑时钟。

介绍:Riffle:大规模分布式系统中的数据分析优化。

介绍:本文描述了Google第二代容器化调度服务Omega的设计与诞生。作者也有一份keynote。相关介绍视频

介绍:Percolator号称其取代MapReduce之后,Google的索引更新速度提升了100倍。它究竟是如何实现 “100” 这个刺眼的数字?当今的并行计算世界真的有如此大的提升空间吗?当我们满心欢喜以为又有新的算法、新的并行计算架构可以学习时,她却又为何跟你聊起了分布式事务?这篇文章将为您揭晓。中文版

介绍:设计数据密集型应用是一本讲述分布式系统的数据,作者是卡内基梅隆大学的研究员。本书的质量很高。详细讲述各种数据存储,包括关系型数据库、NoSQL、大数据存储、流处理系统等等,由浅入深、拨丝抽茧.适合给刚刚步入分布式系统大门的朋友.简译版

介绍:华盛顿大学分布式系统课程,老师是Tom Anderson。

介绍:这篇论文是Kafka的开发团队所著,讲述Kafka的设计和架构,在Linkedin中应用以及性能评估,相当于是消息系统领域的"GFS"论文。

介绍:这篇论文分析facebook在大规模使用Memcached的应用经验。如果高效的在分布式系统中利用缓存。通过缓存系统,研究员可以像tcpdump一样保存请求进行数据分析。如果是遇到大规模缓存使用的场景还是挺值得阅读。

介绍:F4 是 Facebook 为了降低存储成本而开发的,应用于只读可删除不可写场景的,对象存储系统。F4是建立在HDFS上,并阐述了它是如何应对HDFS的几处局限(即,增加了cross-data center replication和使用纠删码来减少复制因子)。通常,Facebook开发一个系统,都是非常实用的,都是为他们真实的使用案例量身打造的。

介绍:这篇论文是SOSP '13的论文。描述了各种由于编译器优化导致的正常人很难发现的 Bug。下面摘录一篇阅读笔记:

Undefined behavior 是编程语言规范对某段代码可能产生的某些执行结果未定义。Unstable code 就是在程序实际的执行过程中,由于涉及到undefined behavior,从而无法被编译器翻译(直接略过)的代码段。

STACK会在Assumption Δ被允许和不允许的情况下分别模拟编译。

先模拟假设不成立的情况进行一次编译;
模拟假设成立的情况进行一次编译;
查看前两步的执行结果有没有区别,有区别的地方就是 unstable code。
如果执行第二步时得不到准确的结果,那么会漏报一些unstable code;如果执行第一步时得不到准确的结果,就会产生误报(false warning / false positive)。目前stack给出的Undefined behavior pattern 可能不齐全。

对于程序员来说,通过fix bug或者去掉一些会被编译器当做是undefined behavior的代码;对于编译器来说,可以集成一些现有的bug-finding的工具,或者利用STACK的方式来判定unstable code;完善编程语言的specification,定义更多的代码执行规则,减少undefined behavior的产生。

STACK为了使可扩展性更高,在计算Δ = ∀e:Reach(e) → ¬Undef(e)的时候做了一些近似运算,使最后得到的结果可能会漏掉一些unstable code。STACK为了简化和滤过某些查询用到的constraint solver如果发生了timeout,也会出现漏报的情况。因此,STACK为了更好的扩展性,牺牲了一定的可靠性(精度)。

介绍:Jeff Dean 2013年发表的文章,讲述当用户的请求依赖大规模分布式系统来协作完成时,如何保证请求的响应时间?。里面提到几个关键:任务拆分、区分定时任务和后台任务、服务间调用超时处理、热点数据多副本.

介绍: ZooKeeper是一个分布式协调组件,它提供了一系列的基本原语,增、删、读、监听。例如这些可以实现很多高级的原语。例如锁(Zookeeper部署锁服务)、配置管理、主从管理。本文主要讲述了它的设计、应用以及测试结果。其中也讲到了它的高可用问题,是Chubby的开源版本.

介绍:Amazon Aurora是NewSQL的代表作品之一,与TiDB相比较有一些不同。不过两者都是为云而生的数据库,对横向伸缩天生的良好支持、failover。从论文中可以知道aurora通过log如何实现改善数据库的性能。Aurora的核心思想是尽可能的利用存储的性能,把计算节点下推到存储节点处理。

介绍:一致性:理论和实践。这篇是作者的博士论文,整篇论文围绕这个一致性相关主题展开。Raft算法基础、集群成员改变、客户端交互、Raft学习、验证、一致性实现和性能。作者把相关的公式和笔记放在github

介绍:对分布式系统的性能Debug非常困难,因为里面的问题很多都是非确定性的,而且无法重现。只能通过对log的挖掘,找出配对的调用/消息以定位问题。黑盒方案假定需要跟踪的除了上述信息之外没有额外的信息,这样使用统计回归技术来推断两者之间的关系.与之相对应的Google使用标注方案解决Debug问题,具体参考Dapper

介绍: 五分钟法则,此文与十年前的原始论文解释了一个量化公式,用来计算数据页是否应该缓存在内存中。能读到Jim Gray处理一系列相关问题(比如数据页应该多大)的方法,幸何如之。

介绍:威斯康星大学分布式系统课程,主要以阅读为主:网络(TCP、RPC、U-net、Thrift、虚拟网络),系统失效、分布式时钟、一致性、资源隔离与分配、安全、负载均衡、集群调度、文件系统、案例学习.

介绍: 流处理相关论文阅读列表。可以深入理解消息队列

介绍: 分布式系统领域论文笔记。里面推荐了很多相关论文,譬如:调度器(Scheduler)、存储(Storage)、一致性算法、图计算、虚拟化、沙箱、安全、网络.现在这个列表转移到了issue

介绍: 分布式系统跟踪,解释了为什么需要、跟踪什么、如何处理众多信息.

介绍: 微软发布分布式应用程序运行时(Dapr),这是一个开源项目,使每个开发人员更容易地构建微服务应用程序

介绍: 分布式预写日志

介绍: 设计实用的分布式系统阅读清单

介绍: 分布式共识问题一直以来是大规模系统的一个难题,本文讨论了一些分布式共识的通用解决方案。详细介绍

介绍: 这篇论文对比分布式共识算法Paxos和Raft。讨论了为什么对于诞生的2014年诞生的Raft算法如此受业界亲睐。使用Raft的理论来解释Paxos算法,通过类比的方式发现,两者在大体上是相类似的。不同点在于Leader选举。论文得出的结论是:Raft比Paxos更易用是因为论文解释的比较清楚。

介绍: 卡内基梅隆大学2021年分布式系统课程主页,围绕这个并发和分布式系统讨论。分布式章节的讲师是DDIA书籍的作者Martin Kleppmann,并且相关的视频也已经放到[Youtube](https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_

HdUFe97RItdiB).

介绍: 在线电子书,讲述分布式系统模式。类似编程语言中的设计模式。列出了目前业界常用的分布式系统设计模式。WAL、两步提交、版本向量、复制日志等

介绍: 亚马逊自2007年发表了一篇DynamoDB论文后,对后面的分布式系统设计产生了深远的影响;论文主要介绍了亚马逊运营大规模 DynamoDB 的经验以及它的架构是如何满足客户工作负载不断增长的需求。这篇论文非常适合做DBaas服务的工程师阅读,让人有一种“知己难寻”的感觉

介绍: 自20世纪80年代成立以来,分布式共识一直是广泛的学术研究的主题。虽然定义不同,但分布式共识(或等同于原子广播)最常指的是如何在一组分布式节点之间决定一个有序的数值序列的问题。这可以用来实现一个只附加复制的日志,可以直接或间接地利用它来提供服务,如主备份复制或状态机复制。这些抽象可以反过来形成新的抽象的组成部分,如分布式键值存储。一些共识算法反而只决定一个单一的值或一个部分有序的值序列。统一分布式共识算法的是,无论延迟和崩溃,它们总是安全的(尽管它们不一定是拜占庭式的容错),而且只要有足够的活泼性,就能保证取得进展。列表中带⭐️ 的代表有影响力的论文。💎是项目作者认为不错的论文。