分布式消息队列RabbitMQ 这篇文章简单讲述下分布式消息队列的基础知识,不会太深入,因为类似MQ这样的分布式组件有很多不同的种类,都有各自的特征和其对应的应用场景,需要在实际应用中才能更加深入的理解。整篇文章按照,分布式消息队列基础知识->AMQP协议->RabbitMQ实例来概述。1、分布式消息队列基础知识消息要想弄清楚分布式消息队列的具体意义,首先得从什么是消息入手。消息即是信息的载体。为了让消息发...
Zookeeper系列学习 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。本专栏主要从Zookeeper技术内幕和原理的角度深入Zookeeper内核。这里转载了一个csdn上zk的专题,博主讲述的非常清楚,zk的概念,zk的实现api及其应用场景。这里给出其每个单元链接:Zookeepe...
Paxos的实际应用 上一篇说明了paxos算法是如何实现数据一致性的,这一节我们来说明常见paxos的具体实际应用,这样可以更好的理解paxos的具体实现。1、Paxos应用一Chubby原理介绍Chubby是google提出的分布式锁服务,GFS和Big table等大型系统都可以用它来解决分布式写作、元数据存储和master选举等一些列功能。Chubby强大的锁功能,底层则是通过paxos分布式锁来实现的。...
分布式系统领域经典论文翻译集 文/phylips@bmy 分布式领域论文译序sql&nosql年代记SMAQ:海量数据的存储计算和查询一.google论文系列1. google系列论文译序2. The anatomy of a large-scale hypertextual...
Paxos算法总结 上一篇讲述了两个经典的分布式一致性协议(2PC、3PC),这篇博客开始讲解paxos协议,paxos算法是目前公认的解决分布式一致性问题最有效的算法之一。1、起源拜占庭将军问题提及paxos协议的起源,首先得说说这个“拜占庭将军”问题,这个问题实际上是分布式数据一致性问题的一个抽象故事。故事中的通讯员就是所谓的通信信道,拜占庭故事的结局就是在这种情况下将军之间不可能接收到一个完全正确的决...
经典一致性协议总结 上篇上述了分布式系统的一些经典理论,即在设计分布式系统时候应该考虑的问题,那么本篇主要讲述分布式系统中数据的一致性,即数据在不同节点中如何保证一致性的问题。经典一致性协议,主要分为以下三个:二阶段提交协议——2PC三阶段提交协议——3PCpaxos算法下面就这三个协议做具体的分析与总结。1、二阶段提交协议——2PC分布式系统中同样有数据库中的事务的概念,当不同的节点处理一个事物操...
分布式相关理论总结 1、集中式与分布式集中式:80年代主流,IBM大型机,价格昂贵,性能卓越,部署简单,但是单机扩容较为困难。分布式:由多个普通pc机组成,分布在不同的网络上,通过消息传递进行通信和协调的系统分布式系统五gu大特点:分布性:多台计算机在空间上随意分布,机器分布也随时变动对等性:所有计算机节点都是对等的,没有主从之分并发性:多个节点可能并发的操作访问一些共享资源缺乏全局时钟:难以定义并发事...
Linux IO barrier 转载博客:https://blog.csdn.net/younger_china/article/details/51138375I/O顺序问题是一个比较综合的问题,它涉及的层次比较多,从VFS page cache到I/O调度算法,从IO子系统到存储外设。而Linux I/O barrier就是其中重要的一部分。可能很多人认为,在做了文件写操作后,调用fsycn就能保证数据可靠地写入磁盘。大...
块设备层request plug/unplug机制 转载至博客:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=14528823&id=4778396一、基本原理Linux块设备层使用了plug/unplug(蓄流/泄流)的机制来提升IO吞吐量。基本原理为:当IO请求提交时,不知直接提交给底层驱动,而是先将其放入一个队列中(相当于水池),待一定时机或周期后再将该队列...
文件系统学习8——文件系统MQ队列机制详解 上一篇已经讲述了MQ多队列的机制,利用cpu的多核,配上多队列机制,并发的处理IO请求,提高效率。本篇详细讲述下从bio下发到IO调度器中,MQ队列机制是如何一步步完成的。1、MQ处理结构流图从整个流程图可以看到,主要是分为三个部分:初始化硬件设备的target参数、初始化请求队列request_queue以及bio请求的处理过程。前面两个过程主要是完成底层存储设备向文件系统的注册,同时完...
文件系统学习7——文件系统队列机制概述 前面几小节讲述linux文件系统是如何操作IO流的,本小节讲述文件系统的队列机制,主要集中在IO调度器这一层的队列调度上。1、队列机制linux中的队列机制主要发生在IO调度器这一层,首先给出IO调度器在整个IO栈的位置,如下图所示。它位于bio块层之下,硬件驱动层之上。pagecache刷新下来的数据会合成对应的bio,同一个任务的多个bio会下发到块层,进行IO调度。在早期的linux...
文件系统学习6——文件系统IO子系统的补充 在第5小节详细讲述了文件系统IO子系统的相关特性,在阅读完第5小节的文章后,本小节给出自己的一些疑惑,并对上述的疑惑进行补充说明。疑惑1:pagecache、buffer和bufferhead的区别与联系说明:首先需要明确的是linux系统中文件系统的缓冲区主要分为两个page cache和buffer cache,每一个 page cache 包含若干 buffer cache。与pag...
文件系统学习5——文件系统IO子系统 关于文件系统IO子系统的介绍,有一篇非常好的博客,详细了从上到下,由浅入深的讲述了IO子系统。这里给出原文的链接,方便大家共同学习。[IO系统]01 IO子系统[IO系统]02 用户态的文件IO操作[IO系统]03 虚拟文件系统(VFS)[IO系统]04 节点路径搜索[IO系统]05 open流程分析[IO系统]06 因OPEN建立的结构体关系[IO系统]07 IO写流程分析[IO...
文件系统学习4——日志文件系统的由来 1、日志文件系统的由来之前讲述的都是文件系统的基本功能,但是一直都集中在数据如何存放获取的过程上,那么文件系统对于数据的一致性又是如何保证的呢??同样,我们从一个文件的新建开始说起,类似第三小节,一个文件的新建步骤如下:先确定用户对于欲新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增;根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入...
文件系统学习3——文件系统相关操作流程 前文中讲到了文件系统有哪几类操作,这里对没类操作文件系统是如何寻址,如果读写的进行一个详细的说明。1、目录树的读取所有对文件的操作,给用户看来第一步就是得知道这个文件的目录,所以首先就需要读取目录。每个目录都是一个文件,该文件存放该目录下所有文件的相关信息,同样该文件也有对应的innode。简答步骤:由于目录树是由根目录开始读起,因此系统透过挂载的信息可以找到挂载点的 inode 号此时就...
文件系统学习2——文件系统的布局 说道文件系统的布局,就需要先从磁盘的逻辑结构说起。1、磁盘的逻辑结构这里说的磁盘逻辑结构不是指磁盘的物理结构,诸如磁道、磁臂和旋转这一类,这里的逻辑结构是指,磁盘给了一段物理空间,那么用户总要对这个物理空间进行划分,即所谓的逻辑空间,那么一块磁盘在逻辑空间上布局如下图所示:从图上我们可以总结出,一块磁盘的开始区域是主引导记录又称为MBR表,它由三个部分组成:硬盘主引导程序(BootLoad...
文件系统学习1——文件系统基本概念 2019.2.27最近准备学习一下文件系统的基本知识,学习路线如下:文件系统基本概念->文件系统磁盘布局->文件系统IO系统->MQ队列机制->IO管控。下面开始简单介绍一下文件系统的一些基本概念,大部分来自于书籍和一些博客上的内容,相关链接如下:Ext4专题文章索引linux文件系统详解鸟哥 Linux 磁盘与文件系统管理Linux 的虚拟文
计算机系统领域顶级会议--OSDI,SOSP 转载:原文链接: 计算机系统领域顶级会议–OSDI,SOSP【序言】按照USnews的分类,Computer Science被分为四个大类:AI, Programming Language, Systems, Theory.。毫无疑问,Systems是这四个大类中最要紧也是最大的一个。根据citeseer在2003年5月排出的所有计算机学科会议和期刊的影响因子排名[1],在前十位中的属于Sys...
SSD进阶分享 这里主要分享ssdfans上关于SSD内部常见FTL算法,接口协议等专栏,之前在有道云笔记中记录下来的,现分享如下:(1)FTL分析系列:http://note.youdao.com/noteshare?id=091e7455b7885cfd4a70f539ecec7c8b(2)NVMe分析系列:http://note.youdao.com/noteshare?id=6468f17af9e07...