分布式系统
文章平均质量分 94
lipeng08
字节跳动 分布式存储系统 开发工程师
展开
-
分布式系统基本概念-(1)
分布式系统概要昨天晚上看到了一本很有用的小册子,大约60多页,名字叫做Distributed systems for fun and profit,内容涉及了分布式系统的方方面面:有基本的分布式系统的概念,有复杂的分布式一致性协议,有关于分布式系统的扩展性,可用性,可靠性,高吞吐,低延迟的讨论。不出意外的话,准备有两天的时间,把它的全部内容付诸于这篇博客中。事实上,只要在搜索随便输入那本书的名字...原创 2018-11-03 12:44:20 · 624 阅读 · 0 评论 -
Gossip协议-推导运算分析
简介Gossip协议又称传染病协议,因为gossip(流言)以类似于病毒的方式在计算机之间传播信息。Gossip协议满足的条件1,协议的核心包括周期性,成对性,内部进程交互 2,交互期间的信息量大小固定 3,节点交互后,至少一个agent获知另一个agent的状态 4,通信不可靠 5,交流的频率远远低于消息的传输延迟 6,对端选择的随机性,或者从全集,或者从部分集合 7,由于副本的存在,原创 2017-01-16 23:02:04 · 2518 阅读 · 0 评论 -
一致性hash的c++简单实现
很晚了,一致性hash的理论不再多说,直接上我写的c++代码代码功能: 1,初始化一些实际的server节点,每个server节点生成一堆虚拟节点 2,将所有的虚拟节点根据它的名字生成的hash key散布到一个环内 3,对新插入环内的元素(随机生成),计算它的hash key,然后在环中寻找大于等于它的虚拟节点,根据虚拟节点即可找到物理节点。随机生成很多歌元素,查看散布到各个节点的元素数量是原创 2017-01-10 23:54:04 · 2440 阅读 · 0 评论 -
CouchDB及Append-only B+树
前言今天晚上在写分布式系统上下层概念抽象-(2)的时候,遇到了一致性相关的内容,简单搜索了一些CAP的文章,就无意中看到了博文CouchDB Eventually Consistency。它是一个分布式的key-value数据库,感觉里面的设计还挺有意思的,很多ideas虽然知道,但是并没有和实际的系统挂钩,现在把它的一些设计思路写一写,主为备忘,权当一乐。分布式系统分布式系统需要处理的最典...原创 2018-11-04 23:08:00 · 1581 阅读 · 0 评论 -
分布式系统副本强一致-(4)
副本副本一致性是分布式系统的基本问题之一。副本问题是组通信问题,达成副本一致有很多种方式,在介绍具体算法之前,先从更高的层面上看看通信模型。客户端发起请求,最后客户端收到回复,有两种常见的模式:同步:所有节点必须全部成功,才返回client异步:一个成功,立刻返回同步副本从组通信的角度,同步副本是一个N-to-N的模型。也就是说在客户端返回之前,所有的server必须事先完成处...原创 2018-11-12 21:58:32 · 596 阅读 · 0 评论 -
分布式系统可靠性
角度分布式系统采用RS(k,m)编码故障类型有(磁盘,节点,扇区,机架,机房等故障)机房故障,系统降级,降级情况下的可靠性copyset下的系统可靠性被动和主动的可靠性数据部分修复的故障率数据散布而非单个磁盘可能创新点考虑全部故障,RS编码散布,多种散布方案 (被动)考虑全部故障,RS编码散布,多种散布方案 (主动)考虑copyset下的故障丢失考虑故障部分修复后的可...原创 2018-11-14 11:17:03 · 651 阅读 · 0 评论 -
并行系统
第一章performance,productivity以及generality三者只能取其2.原创 2018-11-12 11:59:46 · 335 阅读 · 0 评论 -
聊一聊分布式对象存储
1. 前言今天来聊聊我正在读的一本分布式对象存储的书籍。前天11月10号,想着京东有满200-100的活动,就买了一些书,准备沉淀一下。自己打算在分布式系统上搞几年,所以买的书基本上都是关于分布式存储的。本身也没想着买一些分布式系统的经典教材,就随便选了几本京东上销量比较高的,偏实用一些的书籍。权当心血来潮,未经过任何调研。当前看的这本是《分布式对象存储-原理,架构和go语言实现》。2. ...原创 2018-11-12 15:20:41 · 7994 阅读 · 0 评论 -
分布式系统时钟和有序-(3)
前言分布式系统本质上就是使用多机来解决单机的问题,为了保证它的通用性,必须能够保证如单机一样的order。所有你所关心的就是它确实像单机一样在执行操作。本章主要讲解分布式系统一个基本问题:时序问题。如果你还不了解分布式系统,那么欢迎戳它:分布式系统基本概念-(1)如果你想进一步了解分布式系统的基本特征以及consensus问题,那么欢迎戳它:分布式系统上下层概念抽象-(2)1. 全序和偏序...原创 2018-11-12 20:57:14 · 1451 阅读 · 0 评论 -
Flat Datacenter Storage
简介这一段一直在尝试构建对分布式系统更深的理解,期望能够在脑中形成知识图谱,然而却不可得。仔细分析了原因,感觉是因为自己读论文过于浮躁,读的多而不精,导致很多细节并无把握,最后虽然看起来读了很多(安慰自己内心式的自欺欺人),却往往是丢了西瓜捡了芝麻。今天要说的文章是关于扁平化数据存储的(FDS),发表在OSDI 2012。很惭愧,作为一个做分布式系统的同学,竟然还未认真读过此文。动机传统的分...原创 2018-11-22 22:17:56 · 608 阅读 · 0 评论 -
Redis
Redis简述简单说来,redis就是一个开源的基于内存的数据结构的存储器,它支持常见的各种各样的数据类型的存储,例如字符串,数组,集合,有序集合,hash等。它支持分布式的部署,平行扩容,master slave结构,可被用作缓存,或者数据库存储。实际应用中,你可以把它当成一个中心化的数据结构存储引擎,有命令行,java,c++以及python的库可以直接与Redis server进行通信。...原创 2018-11-02 22:02:38 · 289 阅读 · 0 评论 -
Apache Zookeeper
# ZooKeeperZookeeper是一个为分布式系统提供协调服务的多副本分布式系统。它提供如下能力:配置管理组管理ConsensusLeader选举集群探测分布式锁举例来说,假设在一个分布式系统中,会有一种配置需求,要将配置更新到一个分布式集群中的多台实例。对于这种情况,可以使用zookeeper来管理全局配置,zookeeper能够确保对配置的多个更新的一致性,当机器...原创 2018-11-02 22:00:54 · 1029 阅读 · 0 评论 -
分布式系统上下层概念抽象-(2)
前情回顾在上一个博客中已经讨论了分布式系统的第一章节,主要涉及了分布式系统的基本概念,基本特性,设计目标,以及设计技巧。简言之,由于分布式系统的两个基本限制:信息的有限速度传播以及故障的独立性,导致分布式系统在为了达成可扩展性,高性能,高可用,低延迟,高容错的道路上,要付出很多额外的代价。对于这种现实世界的分布式系统设计问题可以抽象成通用的model来解决,从而能够在系统设计之初就可以有更好的理...原创 2018-11-03 16:15:36 · 727 阅读 · 0 评论 -
QFS文件系统-学习记录
总览Quantcast File System (QFS) 是高性能,且具有故障容错能力的分布式文件系统。它可以支持MapReduce处理,以及其他应用程序的大文件的I/O操作。本文将会介绍QFS,它的相关配置等等。更详细的介绍,请参见QFS官方wiki如果你有什么未解决的问题,可发送邮件到 qfs-devel@googlegroups.com 或者搜索论坛 QFS Developer Mail原创 2016-05-19 21:30:45 · 7156 阅读 · 3 评论 -
CodePlugin:将Dedup应用到纠删码系统
Debup的纠删码应用论文名字:CodePlugin: Plugging Deduplication into Erasure Coding for Cloud Storage.简介当前云存储系统发展迅速,在一个系统中发生磁盘故障的也不再是例外,因此不少系统采用纠删码保护数据免于丢失;同时数据量的增大导致冗余的数据越来越多,一种常见的减少数据冗余的方式是采用dedup方式。 本文将dedup应用于纠原创 2016-04-09 22:43:00 · 752 阅读 · 0 评论 -
重复数据删除简介
简介重复数据删除,顾名思义,就是将多份重复的数据只存储一份,减少存储开销,同时也可以减少网络传输带宽。重复数据删除有两种处理方式,一种是同步方式,即存入数据之前就判断是否是重复数据,如果重复则存储指向源数据的指针即可,如果新数据则存入到系统中;另一种是异步方式,即离线处理,开启后台进程扫描磁盘,查看是否有重复的数据。文件级别判断整个文件是否重复。文件判重首先在系统中维护一个hash表,存储所有uni原创 2016-04-09 12:06:11 · 1033 阅读 · 0 评论 -
Generalizing RDP Codes Using the Combinatorial Method
摘要本文提出了PDHLatin,它是一种基于列汉密尔顿拉丁方(CHIS-column hamiltonian Latin squares)构造的校验块独立的2容错水平码。通过证明它是MDS码。 本文也提出了一种新的基于CHIS的校验块独立的2容错混合编码-PIMLatin。 这两种编码具有良好的扩展性以及结构多样性。 同时本文也讨论编码缩减技术,以及它所带来的参数扩展性,结构可变性和可靠性的提升。翻译 2016-05-06 17:32:57 · 1066 阅读 · 0 评论 -
MICS:副本和纠删码混合存储系统
摘要云存储系统的三个指标: 高可靠性,低存储开销,高读写性能。这三个指标是没有办法同时满足的,很多时候需要进行tradeoff。 副本系统和纠删码是两种在存储系统中广泛使用的策略,它们在保证高可靠性的前提下,选择了不同极端的tradeoff。 副本存储开销大,但性能较好;纠删码存储开销低,但性能较差。本文提出了MICS系统,它将一个对象以两种形式存储,一种采用副本,一种采用分片纠删码,不仅如此,还设原创 2016-04-11 21:37:12 · 6597 阅读 · 5 评论 -
Apache Flink
Apache Flink论文简读Apache Flink™: Stream and Batch Processing in a Single EngineFlink不同于Spark的batch processing,它着眼于data streaming processing。它的输入可被看做一条无穷的stream,将函数应用到stream上,再输出。Flink底层是流式处理,延迟更小,但是在某...原创 2018-11-02 21:39:36 · 2209 阅读 · 0 评论 -
Apache Kafka
Apache Kafka实时的生产者消费者处理系统,类似于消息队列的感觉。它将生产者和消费者松耦合,从而使得生产和消费不会相互制约。它可用于收集各种各样的消息,例如用户行为,传感器数据,日志,metrics等,在kafka的后面再对接多种多样的分析工具进行消费。架构设计Kafka是一个分布式的,分区的,多副本的commit log服务。消息按照种类被划分为不同的topics,同一个topic...原创 2018-11-02 21:54:15 · 256 阅读 · 0 评论 -
Apache Spark
Apache SparkApache Spark现在已经成为一种统一化的大数据处理引擎,它通过数据共享抽象Resilient Distributed Datasets (RDDs),来支持各种各样的数据处理工作,像SQL查询,batch处理,streaming,machine learning以及graph处理。Spark编程模型RDD抽象最关键的数据抽象是RDDs,它是一堆对象的集合,并...原创 2018-11-02 21:55:52 · 3475 阅读 · 0 评论