美文网首页
分布式存储

分布式存储

作者: 滩主 | 来源:发表于2019-08-29 11:34 被阅读0次

分布式存储 = 单机存储引擎 + 分布式存储架构

image.png
image.png image.png image.png
image.png

news

https://github.com/OpenMPDK/uNVMe

单机存储引擎

首先基于这样的事实:磁盘的读写都是按着512Byte对齐的,针对单个磁盘扇区的操作是原子的,多个扇区就不是了,而且机械磁盘的顺序读写比随机读写要好很多

  • 假设我们的存储场景都是针对512Byte对齐内的数据做操作,那我们可以设计服务为每次写流程,先读取对应扇区到内存,修改内存数据,然后回写数据到磁盘,这样能很好满足ACID特性
    client(write x=100) => server(get sector/modify sector/write sector)
  • 但是通常我们的场景会复杂一些,修改的数据量会超过一个扇区,或者需要同时修改多个扇区里的数据,并且我们希望这批操作要么全部成功要么全部失败,此时明显我们不能直接修改磁盘数据(修改完部分扇区时,因为各种原因服务挂掉),由此我们引入WAL(write ahead log),修改磁盘数据前我们先记录数据当前状态至WAL并落盘,然后开始修改磁盘数据并删除这条log,最后返回客户端成功
    client(write x=100) => server(write log/get sector/modify sector/write sector/remove log)
    (若服务中间挂掉,恢复时读取该WAL, 即可恢复存储至安全状态,对应mysql的undo log)
  • 上面处理多扇区的写入方法中需要立即修改磁盘数据,我们知道WAL是顺序写可以充分利用磁盘性能,但是修改磁盘数据往往是随机操作,对机械磁盘非常不友好,因此我们引入另一种WAL2,记录数据写入之后的状态,并将要修改的数据先缓存在内存中,异步写入磁盘
    (若服务中间挂掉,恢复是先应用所有WAL2,再应用所有WAL, 即可恢复存储至安全状态, WAL2对应mysql的redo log)
  • 但是对于对象存储的场景还是有问题,因为对象存储的数据量都比较大,每次需要记录WAL写放大严重,因此像bluestore这类存储引擎的解决方式是对于一次写流程,先把非覆盖写、覆盖写中的对齐写(大块)写入磁盘新Block,再把覆盖写中非对齐写部分和相关信息一起写入log

相关文章

  • 分布式存储

    认识分布式存储 分布式存储系统,是通过网络将数据分散存储在多台独立的设备上。 分布式存储系统的特性 可扩展分布式存...

  • 分布式存储

    分布式存储 = 单机存储引擎 + 分布式存储架构 news https://github.com/OpenMPDK...

  • 分布式存储系统介绍(一)

    分布式存储系统 分布式存储按其存储接口分为三种:文件存储、块存储和对象存储。 1.文件存储 通常支持POSIX接口...

  • 干货:分布式系统学习笔记

    一、分布式的两大场景 数据存储的分布式 服务的分布式 二、数据存储的分布式 比如海量数据,单机存储不下,需要多机,...

  • 分布式爬虫笔记(三)- 分布式存储

    分布式存储 分布式的存储包括网页文件的存储和爬虫队列的存储,在前面分享的分布式爬虫笔记(二)- 多线程&多进程爬虫...

  • 《分布式技术原理与算法解析》学习笔记Day21

    分布式数据存储三要素 什么是分布式数据存储系统? 分布式存储系统的核心逻辑,就是将用户需要存储的数据根据某种规则存...

  • Hadoop相关介绍

    分布式存储系统HDFS(Hadoop Distributed File System)POSIX 分布式存储系统 ...

  • Hadoop理论知识

    1、hadoop的概念:分布式文件存储和计算框架 hdfs:使用分布式思想存储海量数据 MapReduce:分布式...

  • 前端nginx反代后端mogilefs存储实战实例

    一、MogileFS存储 1、MogileFS分布式文件存储系统 MogileFS是一个开源的分布式文件存储系统,...

  • 二、Hadoop 入门

    1、什么是hadoop 1.1功能详解 分布式存储和分布式计算,向下提供基于HDFS 的分布式文件存储系统,向上提...

网友评论

      本文标题:分布式存储

      本文链接:https://www.haomeiwen.com/subject/htnbectx.html