后端分布式系列:分布式存储-概述

分布式存储是相对于单机存储而言,之所以要分布自然是因为互联网时代信息数据大爆炸,单机已经难以满足大型应用的数据存储需求。

存储系统的关注点

关于存储系统,一般我们关注下面几个方面:

  1. 数据分布与负载均衡
  2. 数据存储的可靠性与一致性
  3. 数据访问性能
  4. 系统容错能力
  5. 系统扩展能力

在单机存储系统中有一种独立磁盘冗余阵列(RAID,redundant array of independent disks)技术,

是把相同的数据存储在多个硬盘不同地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。

这个技术基本解决了我们上面提到的前三点,数据可以通过磁盘阵列控制程序均匀分布在多个硬盘上,

以实现负载均衡,并通过冗余来保障可靠性。类似单机挂载多磁盘,数据在磁盘阵列上的冗余副本要保持一致也容易。

存储系统的访问性能基本受制于磁盘的性能,通过分散到多磁盘确实达到了提升性能的效果。

真正的问题难点在于后两点:

磁盘阵列解决了单一磁盘的脆弱性,但并不能提升存储子系统整体的可用性,或者说容错能力。

同理扩展能力同样受制于磁盘阵列的物理扩展槽的限制。

分布式存储的定义与分类

所以分布式存储应运而生,作为存储系统它同样需要面对上述问题。

先来看下它的定义:

分布式存储系统是大量普通 PC 服务器通过网络互联,对外作为一个整体提供存储服务。

从上面的定义看,更多时候我们把分布式存储作为一种服务面向各种不同的数据存储需求。

从数据存储模型上,我们可以进一步分类分布式存储服务为:

  1. 文件模型: 对应分布式文件系统,如:GFS、HDFS
  2. 关系模型: 对应分布式数据库系统,如:Google Spanner、Taobao OceanBase
  3. 键值模型: 很多 NoSQL 系统采用,如:Redis

分布式存储的得与失

面对单机存储系统面对两个难点,分布式存储系统通过集群方式扩展到几百甚至几千台集群规模来解决系统扩展能力,

通过软件层面对单机服务器的硬件容错能力大大提升了整体集群的容错能力。

在获得这些好处时,自然也有所牺牲,所谓有得必有失。

说到存储不得不提单机数据库存储的事务特性:A(原子性)C(一致性)I(隔离性)D(持久性),

而扩展到分布式存储后,受限于分布式 C(一致性)A(可用性)P(分区容忍性)理论,几乎不可能满足完整得事务特性。

各种分布式存储服务实现都对单机存储的事务特性作了权衡取舍,满足特定的服务场景需求。

另外分布式存储系统是基于网络互联的,所以除了基本得磁盘访问性能开销,还多了网络性能开销。

通常一般机械硬盘得平均寻道时间为 10ms,而机房内网得网络访问开销一般小于 0.5 ms,相对性能损失较小。

而原本由磁阵控制程序负责得数据在磁盘中的分布、负载均衡策略和一致性保障,

在分布式存储中都需要软件在整个机器集群层面去考虑,复杂度大大提高。

总结

最近打算对后端分布式架构设计领域知识做一个梳理,形成一个完善的知识体系,本文算一个开始吧。

上面对分布式存储服务进行了总体综述,了解了分布式存储服务的分类及其架构设计的关注点。

后续将进一步展开,深入到具体类型的分布式存储服务架构设计要点与实现细节。

参考

[1] 杨传辉. 大规模分布式存储系统. 机械工业出版社(2013-09), pp. 7-52



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 20:55:15

后端分布式系列:分布式存储-概述的相关文章

后端分布式系列:分布式存储-HDFS 与 GFS 的设计差异

「后端分布式系列」前面关于 HDFS 的一些文章介绍了它的整体架构和一些关键部件的设计实现要点. 我们知道 HDFS 最早是根据 GFS(Google File System)的论文概念模型来设计实现的. 然后呢,我就去把 GFS 的原始论文找出来仔细看了遍,GFS 的整体架构图如下: HDFS 参照了它所以大部分架构设计概念是类似的,比如 HDFS NameNode 相当于 GFS Master,HDFS DataNode 相当于 GFS chunkserver. 但还有些细节不同的地方,所以

后端分布式系列:分布式存储-HDFS 架构解析

本文以 Hadoop 提供的分布式文件系统(HDFS)为例来进一步展开解析分布式存储服务架构设计的要点. 架构目标 任何一种软件框架或服务都是为了解决特定问题而产生的.还记得我们在 <分布式存储 - 概述>一文中描述的几个关注方面么?分布式文件系统属于分布式存储中的一种面向文件的数据模型,它需要解决单机文件系统面临的容量扩展和容错问题. 所以 HDFS 的架构设计目标就呼之欲出了: 面向超大文件或大量的文件数据集 自动检测局部的硬件错误并快速恢复 基于此目标,考虑应用场景出于简化设计和实现的目

后端分布式系列:分布式存储-HDFS DataNode 设计实现解析

前文分析了 NameNode,本文进一步解析 DataNode 的设计和实现要点. 文件存储 DataNode 正如其名是负责存储文件数据的节点.HDFS 中文件的存储方式是将文件按块(block)切分,默认一个 block 64MB(该大小可配置).若文件大小超过一个 block 的容量可能会被切分为多个 block,并存储在不同的 DataNode 上.若文件大小小于一个 block 的容量,则文件只有一个 block,实际占用的存储空间为文件大小容量加上一点额外的校验数据.也可以这么说一个

后端分布式系列:分布式存储-MySQL 数据库双向同步复制

MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的同一字段的两地变更,会引发数据一致性判断冲突,尽可能通过业务场景设计规避.双主双写并同步复制可能引发主键冲突,需避免使用数据库自增类主键方案.另外,双向同步潜在可能引发循环同步的问题,需要做回环控制. 如上图所示,复制程序写入时也会产生 binlog,如何识别由复制程序产生的 binlog 并将其过

分布式系列一: 概述

分布式系统的特点 高并发,大流量(qps,tps) 海量数据 什么是分布式 分布式系统是由很多计算机组成, 他们之间的通信通过网络连接完成, 对外表现为一个整体. 分布式技术上需要解决两个问题, 一个是业务拆解, 一个是节点通信. 分布式和集群的关系 分布式是指一个系统由多个业务模块组成,他们分别部署到不同服务器; 集群是指一个业务部署到多个服务器; 分布式发展历史 1964年IBM发布大型机之后, 引领系统向集中式方向发展; PC机发展起来后, 它的性能和计算能力得到迅猛发展, 同时集中式发展

快速入门系列--MVC--01概述

虽然使用MVC已经不少年,相关技术的学习进行了多次,但是很多技术思路的理解其实都不够深入.其实就在MVC框架中有很多设计模式和设计思路的体现,例如DependencyResolver类就包含我们常见的DI依赖注入概念和注册表模式(GetService)等内容,ExceptionFilter等过滤器就体现AOP的概念,整个MVC内置了一个IOC容器,基本上所有的框架类的对象都是通过这种方式来创建的.此外,一直觉得很j2ee的spring很棒,其实如果大家很熟悉EHAB(微软企业开发库)的话,就会发

Algorithms算法系列文章概述

(1)blog内所有文章并非全部原创,大部分整理参考自Robert Sedgewick and Kevin Wayne  所著Algorithms视频教程和书中例子中提到的数据源文件均可从http://algs4.cs.princeton.edu官方网站中获取 (2)blog中算法的描述大部分是java实现,部分c/c++ (3)转载请注明 本书框架: 1:基础   包含在随后文章中用来实现分析算法的基本原则和方法.java变成模型,数据抽象,基本数据结构,集合类的抽象数据类型,算法性能分析的方

Microsoft Windows Server 2003 R2 分布式文件系统解决方案概述

一.DFS.FSRM简介 Microsoft Windows Server 2003 R2 分布式文件系统解决方案概述 此处为微软technet上讲述的DFS(分布式文件系统的优势及特点),请午饭们耐心.细心的去参阅一下,对你去构建企业级的文件服务器会很有帮助的,还有需要提醒的是DFS是在windows 2003 R2时代就已经出现的产物,此处做搭建讲解主要是分享2008R2上面的一些配置. FSRM(文件服务器资源管理器)简介 此处为FSRM的介绍,大家先了解一下FSRM能帮我们做到什么,具有

ABP开发框架前后端开发系列---(11)菜单的动态管理

在前面随笔<ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理>中介绍了基于ABP框架服务构建的Winform客户端,客户端通过Web API调用的方式进行获取数据,从而实现了对组织机构.角色.用户.权限等管理,其中没有涉及菜单部分,本篇随笔介绍在ABP框架中实现菜单的管理,菜单是作为Winform或者Web动态构建界面的一个重要元素,同时也是作为角色权限控制的部分资源. 1.菜单的列表展示和管理 一般情况下,菜单的树形列表的显示可以分为多个节点,节点可以收缩也可以展开,当然节点