分布式存储系统的一些理解和实践
网络上的分布式存储系统技术及应用

网络上的分布式存储系统技术及应用一、引言随着互联网和大数据时代的到来,数据量的爆炸式增长和数据安全性的需求不断提高,传统单机存储已经不能满足现代化的需求,分布式存储系统成为了新的趋势。
本文主要介绍了网络上的分布式存储系统技术及其应用。
二、分布式存储系统的概念分布式存储系统是指将数据分布在多个独立的计算机节点上,通过网络连接互相通信与协同工作的一种存储方式。
与传统的集中式存储系统相比,分布式存储系统具有高可用性、高可靠性、高扩展性等优点。
由于分布式存储系统是由多个节点组成的,所以可以利用节点之间的并行计算能力来提高存储系统的性能。
三、分布式存储系统的架构分布式存储系统的架构可以大致分为以下几个层次:(1)客户端:客户端是用户与分布式存储系统交互的界面,负责接收用户的请求,并将请求发送到存储节点。
(2)网络层:网络层负责在存储节点之间传输数据,保证数据的可靠性和正确性。
(3)存储节点:存储节点是分布式存储系统的核心组成部分,负责存储用户数据。
每个存储节点都有自己的存储设备,可以通过网络连接与其他存储节点通信。
(4)存储管理层:存储管理层负责对存储节点进行管理和控制,包括数据块的分发、节点的加入和退出等。
四、分布式存储系统的技术(1)数据分块技术:数据分块技术是将大文件切割成多个小的数据块,然后把数据块分散到多个存储节点上。
这种技术可以提高存储系统的并行度和可扩展性,同时也可以提高数据的可靠性。
(2)数据备份技术:数据备份技术是指把同一份数据复制到不同的存储节点上,以保证数据的可靠性和容错性。
备份技术通常采用异步备份或增量备份方式,可以大大提高数据的可靠性。
(3)数据一致性技术:数据一致性技术是指保证数据副本之间的一致性,不同存储节点上的数据副本需要保持一致。
数据一致性技术通常采用复制策略、读写锁和版本控制等手段来保证数据一致性。
(4)故障恢复技术:故障恢复技术是指当存储节点发生故障时,如何保证数据的可靠性和可用性。
云计算中的分布式储存技术与应用

云计算中的分布式储存技术与应用随着互联网的快速发展,我们生活中面对的数据量越来越大。
这让存储成为了互联网发展的一个重要问题。
分布式储存技术,尤其是云计算的分布式储存技术因此得到了越来越广泛的应用和关注。
本文将从分布式储存的概念、云计算中的分布式储存技术的发展、优势、应用及其实现原理等方面讨论云计算中的分布式储存技术以及它在互联网信息化时代中的重要作用。
一、分布式储存的概念分布式储存,顾名思义,是指把数据分散存放在多个不同的物理节点上。
每个节点都可以独立运行并保有一部分数据。
由于数据分成多个部分存储在不同的地方,所以该系统对于单点故障和数据损失具有很好的容错性。
二、云计算中的分布式储存技术的发展随着云计算的发展,传统的单节点储存方式已不能满足现代互联网应用的需求。
分布式储存技术因此得到了广泛的应用。
目前,市场上主流的云计算服务提供商都提供了分布式储存服务。
例如,著名的S3服务就是亚马逊AWS提供的分布式储存服务,而Google Cloud的分布式储存服务则名为Google Cloud Storage。
三、云计算中的分布式储存技术的优势1.高可用性:分布式储存技术通过将数据分布在多个节点上,实现了数据的冗余备份,保证系统在物理节点故障时不会因此影响到系统的正常使用。
2.高扩展性:采用分布式储存技术的系统可以通过增加节点来扩展存储容量,这种方式相对来说更为经济实惠。
3.高性能:由于数据分散在多个节点上,分配给不同的处理单元进行处理,因此在某些情况下分布式储存技术可以比传统存储技术更具优势。
4.数据安全:分布式储存技术让数据存在于不同的地点,因此对于数据的安全性以及对攻击和用户误操作等情况的容错性有一定的保障作用。
同时,在分布式储存系统中,数据使用加密技术加密存储,可以有效地防止数据的泄露。
四、云计算中的分布式储存技术的应用云计算中的分布式储存技术广泛应用于各种应用场景,如存储、备份、互联网数据中心(IDC)、企业级云解决方案、在线视频等。
分布式存储技术及其应用

分布式存储技术及其应用一、引言分布式存储技术在当今互联网时代得到了广泛的应用,最初应用于大型网站、互联网公司及数据中心等领域。
它是一种新型的存储技术,相比于传统的集中式存储技术有着很大的优势。
本文将分别从分布式存储技术的概念,技术特点,分类以及应用领域等方面进行深入浅出的介绍。
二、分布式存储技术的概念分布式存储技术是将数据分散存储在多个节点上的一种技术。
与传统的集中式存储技术相比,它的优势在于可以实现数据的高可用性、高可靠性以及横向扩展等功能。
当其中某个节点崩溃后,系统仍然可以继续运行,这种弹性不仅可以提高数据存储的可靠性,还能够大大提高系统的性能与可扩展性。
三、分布式存储技术的技术特点1. 高可用性:分布式存储技术可以实现数据的镜像备份,即将数据同时存储在多个节点上,一旦其中某一个节点发生故障,系统也可以从其他节点上恢复数据存储。
2. 高可靠性:分布式存储技术可以利用多个节点进行数据的存储和备份,从而实现数据的冗余存储,一旦其中某一个节点出现故障,系统可以从其他节点上恢复数据,从而保证数据的完整性和安全性。
3. 弹性扩展:随着数据量的不断增加,分布式存储技术可以根据实际情况增加节点数,实现数据的“横向扩展”,从而提高系统的可扩展性。
4. 高数据处理能力:分布式存储技术可以将数据分散存储在多个节点上,每个节点都具有数据处理的能力,可以通过负载均衡技术,将数据均匀分配到各个节点上并行处理,从而提高系统的处理能力。
四、分布式存储技术的分类1. 文件系统:Infiniband、Interconnect、GPFS等,具有高效率、可扩展性强等优点。
2. 分布式对象存储:Ceph、Swift、HDFS等,多用于云存储和大规模数据中心。
3. 分布式块存储:Gluster、DRBD等,常见于虚拟化环境中。
五、分布式存储技术的应用领域1. 互联网公司:分布式存储技术可以为互联网公司提供海量的数据存储,快速响应和高可靠性的服务支持;2. 科研领域:分布式存储技术可以为科研领域提供高效的分布式计算服务,支持海量数据分析和处理;3. 视频监控领域:分布式存储技术可以为视频监控领域提供高可靠性的数据存储和备份支持,以及快速的数据检索和回放服务。
分布式存储系统的一些理解和实践

分布式存储系统的一些理解和实践张建伟一、分布式存储系统介绍1.简介互联网数据规模越来越大,并发请求越来越高,传统的关系数据库,在很多使用场景下并不能很好的满足需求。
分布式存储系统应运而生。
它有良好的扩展性,弱化关系数据模型,甚至弱化一致性要求,以得到高并发和高性能。
按功能分类,主要有以下几种:✧分布式文件系统hdfs ceph glusterfs tfs✧分布式对象存储s3(dynamo) ceph bcs(mola)✧分布式表格存储hbase cassandra oceanbase✧块存储ceph ebs(amazon)分布式存储系统,包括分布式系统和单机存储两部分;不同的系统,虽在功能支持、实现机制、实现语言等方面是有差异的,但其设计时,关注的关键问题是基本相同的。
单机存储的主流实现方式,有hash引擎、B+树引擎和LSM树(Log Structured Merge Tree)三种,不展开介绍。
本文第二章节,主要结合hbase、cassandra和ceph,讲下分布式系统设计部分,需要关注的关键问题。
2.适用场景各分布式存储系统功能定位不尽相同,但其适用和不适用的场景,在一定程度上是相同的,如下。
1)适用大数据量(大于100T,乃至几十PB)key/value或者半结构化数据高吞吐高性能高扩展2)不适用Sql查询复杂查询,如联表查询复杂事务二、分布式存储系统设计要点1.数据分布分布式存储,可以由成千甚至上万台机器组成,以实现海量数据存储和高并发。
那它最先要解决的就是数据分布问题,即哪些数据存储在哪些机器(节点)上。
常用的有hash类算法和用meta表映射两种方式。
一般完全分布式的设计(无master节点),会用hash类算法;而集中式的设计(有master节点)用meta表映射的方式。
两者各有优缺点,后面讲到具体问题时再做比较。
1)一致性hash将存储节点和操作的key(key唯一标识存储的object,有时也叫object name)都hash到0~2的32次方区间。
计算机网络中的分布式存储技术

计算机网络中的分布式存储技术随着互联网的不断发展,计算机网络中的存储需求也越来越大,传统的中心化存储方式已经无法满足对数据处理和存储的需求,分布式存储技术逐渐成为了大规模数据处理和存储的重要手段。
本文将从分布式存储技术的概念、工作原理、应用场景等方面进行论述。
一、分布式存储技术概述分布式存储技术是指将文件或数据分散存储在多个节点上,形成一个分布式的存储系统,通过节点之间的协作和数据共享,形成一个高可靠性、高性能的数据存储系统。
分布式存储技术由于具有高可扩展性、高可靠性等特点,在互联网应用中得到了广泛的应用。
二、分布式存储技术的工作原理在分布式存储系统中,数据通常被划分成小块,并分散存储在多个节点上,每个节点都具有相同的数据副本,这些节点通过网络连接起来形成一个具有高可靠性、高可扩展性的分布式存储系统。
在分布式存储系统中,数据的读写操作也是分布式进行的。
当一个客户端请求读取数据时,系统会根据数据块的位置,从离客户端最近的节点中读取数据块,并组合成完整的数据,返回给客户端。
同样地,当客户端请求写入数据时,将数据块分配到多个节点进行存储,并进行同步操作,以保证数据的一致性。
三、分布式存储技术的应用场景分布式存储技术在大规模数据存储、云存储、CDN等领域得到了广泛的应用。
1.大规模数据存储在大规模数据存储领域,分布式存储技术的高可扩展性、高可靠性等特点是非常适合这个领域的要求。
分布式存储系统可以针对不同的业务需求进行灵活的部署,可以根据数据的增长情况进行动态的扩容和缩容,从而满足不同业务场景的要求。
2.云存储在云存储领域,分布式存储技术可以实现多租户隔离的存储服务,可以根据客户的需求进行动态的资源分配,从而提供更加灵活、高效的云存储服务。
3.CDN在CDN领域,分布式存储技术可以实现全球负载均衡、就近访问等功能,可以提高网站的访问速度和稳定性,为用户提供更加优质的服务体验。
四、分布式存储技术的发展前景随着云计算、大数据等新兴技术的不断发展,分布式存储技术的应用场景会越来越广泛,未来分布式存储技术还有很大的发展潜力。
深入理解分布式存储系统的基本原理与方法

深入理解分布式存储系统的基本原理与方法分布式存储系统(Distributed Storage System)是一种将数据分布在多个存储节点上,通过网络进行数据交换和存取的系统。
它解决了传统集中式存储系统的单点故障、扩展性限制等问题,具有高可用性、高性能和可扩展性的特点。
本文将重点介绍分布式存储系统的基本原理和方法。
一、基本原理1.数据分布:分布式存储系统将数据划分为多个块或对象,并将其分布在不同的存储节点上,以实现数据的冗余备份和负载均衡。
常见的数据分布策略包括哈希算法、一致性哈希和副本策略等。
2.数据一致性:分布式存储系统需要保证数据的一致性,即各个节点之间的数据副本是一致的。
常见的实现方式有主从复制、多主复制和副本一致性协议等。
3.数据访问:分布式存储系统需要提供高效的数据访问方式,如随机读写、顺序读写和范围查询等。
常见的实现方法有索引结构、缓存技术和数据分片等。
4.容错机制:分布式存储系统需要具备容错性,即在节点故障、网络故障等情况下,仍能保证数据的可用性和一致性。
常见的容错机制有冗余备份、节点自动发现和故障恢复等。
5.扩展性:分布式存储系统可以随着数据量的增长而水平扩展,以满足大规模数据存储和处理的需求。
主要通过增加存储节点、负载均衡和数据迁移等方式实现。
二、常见方法1. GFS(Google File System):GFS是Google开发的分布式文件系统,采用了主从架构,其中一个主节点负责管理文件元数据和块映射表,多个从节点负责存储实际数据。
它具有高可用性和高性能的特点,通过数据的冗余备份和多级索引结构实现了容错性和高效访问。
2. HDFS(Hadoop Distributed File System):HDFS是Apache Hadoop项目中的分布式文件系统,采用了主从架构和区域复制的方式。
它将大文件划分为多个数据块,并将其分布在不同的存储节点上,通过一致性哈希算法实现负载均衡。
云计算中的分布式存储系统

云计算中的分布式存储系统云计算作为当今最火热的技术之一,已经成为了越来越多企业和个人的选择。
其中,分布式存储系统是云计算重要的组成部分之一。
本文将介绍云计算中的分布式存储系统的概念、意义、应用场景以及未来发展趋势。
一、分布式存储系统的概念分布式存储系统是指将数据分散存储在多个独立的存储节点上,通过各种技术手段进行管理和访问的一种存储方式。
其基本原理是通过将存储空间分散到多个物理服务器中,利用高速网络进行数据交换,在保证数据可靠性和安全性的前提下提高数据存取的效率。
分布式存储系统是云计算的重要组成部分之一,可以满足云计算中的海量数据存储与访问需求。
二、分布式存储系统的意义云计算带来的数据爆炸使得传统的中央化存储模式已经无法满足需求。
而分布式存储系统具有高可靠性、高可用性、高扩展性和高性能等优势,可以帮助企业和个人实现海量数据的存储与管理。
首先,分布式存储系统解决了传统存储方式中数据单点故障的问题。
如果一台机器崩溃,其上的数据将会全部丢失。
而在分布式存储模式中,数据是分散存储在全局的多个存储节点中,即使有某个节点发生故障,也能够通过数据备份实现快速恢复。
其次,分布式存储系统可以帮助企业实现数据多点备份和快速恢复。
可以将数据分散存储在多个地理位置,充分保证数据的可靠性。
当某个存储节点出现故障时,可以实现自动切换和数据备份,减少因数据丢失而带来的风险和损失。
最后,分布式存储系统可以有效提高数据存取效率。
采用分布式存储的方式,数据可以在多个存储节点中进行分散存储,当用户需要访问数据时,可以同时从多个存储节点中读取数据,提高数据的读取速度。
同时,借助高速网络技术,也可以实现数据的实时同步,保证数据的一致性和可用性。
三、分布式存储系统的应用场景分布式存储系统是一个强大的数据管理工具,可以广泛应用于各种场景中。
下面以云存储和大数据分析为例,来说明分布式存储系统的应用。
首先,在云存储领域,分布式存储系统可以帮助云存储服务提供商实现海量的数据存储和访问。
分布式存储系统设计与实现

分布式存储系统设计与实现随着互联网的发展,数据的存储和处理成为了人们关注的焦点。
而随着数据量的增加和业务需求的变化,传统的中心化存储系统已经无法满足需求。
为了解决这个问题,分布式存储系统应运而生。
本文将主要讲述分布式存储系统的设计和实现。
一、什么是分布式存储系统分布式存储系统是由多个服务器组成的存储系统,数据分散存储在不同的服务器上,通过网络进行数据共享和交换,从而提高数据访问效率和可靠性。
与传统的中心化存储系统相比,它具有充分利用网络带宽、容错性强、易于扩展等优势。
二、分布式存储系统的设计分布式存储系统的设计需要考虑以下几个方面:1、存储模型设计存储模型是分布式存储系统的核心。
它需要考虑数据的分布方式、复制和恢复策略、数据一致性等问题。
常见的存储模型包括哈希分片、副本分片、虚拟节点等。
2、数据分发策略设计由于数据存储在多个服务器上,如何有效地管理数据和进行数据传输是设计分布式存储系统不可忽视的问题。
数据的分布策略需要考虑数据的热度(使用频率)、网络带宽、服务器的负载等因素。
常见的策略包括散列分布、一致性哈希、随机分发、轮询调度等。
3、网络架构设计网络架构是指如何组织分布式存储系统的服务器,并将其组织成一个整体。
网络架构的好坏直接影响到系统的可扩展性和性能。
常见的架构模式包括客户端-服务器、点对点、中心节点等。
三、分布式存储系统的实现分布式存储系统的实现需要考虑以下几个方面:1、存储引擎实现存储引擎是指实现存储模型的底层服务。
它负责分布式数据存储、数据读写操作、元数据管理等功能。
所以存储引擎的设计应该考虑性能、数据一致性、容错性和扩展性等问题。
常见的存储引擎框架包括HDFS、TFS、Ceph、GlusterFS等。
2、通讯协议设计通讯协议是指实现不同服务器之间的数据传输的协议。
通讯协议的设计应该考虑性能、可靠性、安全性和扩展性等问题。
常见的协议有传输控制协议TCP、用户数据报协议UDP、数据报安全协议DTLS等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式存储系统的一些理解和实践张建伟一、分布式存储系统介绍1.简介互联网数据规模越来越大,并发请求越来越高,传统的关系数据库,在很多使用场景下并不能很好的满足需求。
分布式存储系统应运而生。
它有良好的扩展性,弱化关系数据模型,甚至弱化一致性要求,以得到高并发和高性能。
按功能分类,主要有以下几种:✧分布式文件系统hdfs ceph glusterfs tfs✧分布式对象存储s3(dynamo) ceph bcs(mola)✧分布式表格存储hbase cassandra oceanbase✧块存储ceph ebs(amazon)分布式存储系统,包括分布式系统和单机存储两部分;不同的系统,虽在功能支持、实现机制、实现语言等方面是有差异的,但其设计时,关注的关键问题是基本相同的。
单机存储的主流实现方式,有hash引擎、B+树引擎和LSM树(Log Structured Merge Tree)三种,不展开介绍。
本文第二章节,主要结合hbase、cassandra和ceph,讲下分布式系统设计部分,需要关注的关键问题。
2.适用场景各分布式存储系统功能定位不尽相同,但其适用和不适用的场景,在一定程度上是相同的,如下。
1)适用大数据量(大于100T,乃至几十PB)key/value或者半结构化数据高吞吐高性能高扩展2)不适用Sql查询复杂查询,如联表查询复杂事务二、分布式存储系统设计要点1.数据分布分布式存储,可以由成千甚至上万台机器组成,以实现海量数据存储和高并发。
那它最先要解决的就是数据分布问题,即哪些数据存储在哪些机器(节点)上。
常用的有hash类算法和用meta表映射两种方式。
一般完全分布式的设计(无master节点),会用hash类算法;而集中式的设计(有master节点)用meta表映射的方式。
两者各有优缺点,后面讲到具体问题时再做比较。
1)一致性hash将存储节点和操作的key(key唯一标识存储的object,有时也叫object name)都hash到0~2的32次方区间。
映射到如下环中的某个位置。
沿操作key的位置顺时针找到的第一个节点即为此key的primary存储节点。
如下图所示:图1 一致性hashCassandra借鉴了dynamo的实现,用了一致性hash的方式。
节点的hash值(也叫token),可以手动分配或者自动生成。
Key的hash值即md5(key)。
每个表可以在建表时指定副本数,当副本数为3时,找primary存储节点后,顺时针方向的下2个存储节点即为replica存储节点。
Hash类算法,优点是无需master节点,一个缺点是,不支持key的顺序扫描。
2)Crush算法也是一种类hash算法,随着ceph诞生,也是ceph的一大亮点。
Crush算法比较复杂,这里简化介绍下。
Ceph的每个Object最终都会映射到一组OSD中,由这组OSD保存这个Object,映射流程如下:Object → PG → OSD set•OSD先理解为机器节点吧•PG即Placement Groups,可以理解为存储在同一组OSD上的object的集合Object先映射到PG(Placement Group),再由PG映射到OSD set。
每个表空间有固定数量的pg,在建表时指定。
每个Object通过计算hash值并对pg数量取模得到它所对应的PG。
PG 再映射到一组OSD(OSD的个数由表的副本数决定,也是建表时指定),第一个OSD是Primary,剩下的都是Replicas。
PG → OSD set 的映射由几个因素决定:•CRUSH hash算法:一种伪随机算法。
•OSD MAP:包含当前所有OSD的状态、OSD的机器机架信息等。
•CRUSH Rules:数据映射的策略。
这些策略可以灵活的设置object存放的区域。
比如可以指定table1中所有objects放置在机架1上,所有objects的第1个副本放置在机架1上的服务器A上,第2个副本分布在机架1上的服务器B上。
table2中所有的object分布在机架2、3、4上,所有Object的第1个副本分布在机架2的服务器上,第2个副本分布在机架3的服器上,第3个副本分布在机架4的服务器上。
具体实现不再展开。
图2 ceph crush算法伪代码如下所示:Crush相比一致性hash更加灵活。
3)按range查表由master节点记录和管理每个表range的粒度,以及每个range的数据存储在哪些节点上。
range是根据key的字节序确定。
Client在执行key存取操作是,先到master,根据其所在range,查询其存储在哪些节点;再直接跟存储节点交互,实现存取。
Hbase是用这种方式实现,支持key的顺序扫描。
如下图所示,region即一段range的数据(存储在mater server上),region sever即实际存储节点。
图3 hbase region映射2.数据可靠性数据可靠性,即数据不丢失,是存储系统的第一职责。
图4 数据中心分布式一般采用普通服务器,要假设服务器和硬盘都是不可靠的。
如何保证在有硬件损坏时数据不丢失,是任何分布式存储系统都必须考虑的。
已有做法有以下几种。
1)多副本即数据保存N+1份(一般是3份),每一份都存储在不同的节点上。
在数据损坏N份时,仍能修复数据。
缺点是,需N倍的冗余存储空间。
hbase、cassandra、ceph都很好的支持。
2)纠删码即将一条数据切分成n等份,通过对这n份数据编码,得到m份相等大小的校验数据块儿。
这n+m份数据,各自存储在不同的节点上,拿到n+m中的任意n份数据,均可计算得到原始的数据。
一般n取10,m取3。
优点是,只需m/n倍的冗余空间,缺点是读写效率较低,且耗费cpu。
图5 纠删码✧Hbase:hdfs层为hbase提供支持。
✧Cassandra:社区版本不支持,社区还无添加此功能的路线图,之前社区有讨论过此功能,后来不了了之。
应该是主要考虑到纠删码方式对现有系统的存储结构、一致性语义都有较大影响,且性能较低。
✧Ceph:支持。
但在功能上有些缺失,比如不支持partial read,适合读远多于写的场景,应用较少。
3)跨级群自动备份一般为了更高的可靠性,数据会通过准实时备份机制,备份到另外一个IDC的存储集群。
✧Hbase:社区版本已经支持。
✧cassandra和ceph:都不支持,短期没有路线图,长远来讲,是需要添加的。
4)接入修复客户端写数据到存储集群,一般先按一定规则找到一个接入节点,再由次接入节点做proxy 将数据写到实际存储的节点。
假设需要写入3副本,如果接入节点发现,有的副本对应的存储节点此时不可用,或者写超时,那么会将写失败的节点及未写成功的数据存储下来。
之后,定时或者收到通知不可用节点变为可用时,尝试写入之前未写成功的数据。
✧Hbase:hdfs层会保证写入足够的副本,因为hdfs的namenode记录了每个block的meta数据(block存储在哪些datanode),一个datanode写失败,换一个写,直至写成功。
可以看到,记录meta这种方式很灵活✧Cassandra:有hinthandoff机制,原理如上✧Ceph:有pglog机制,原理如上5)全局扫描修复用以修复磁盘损坏、误删文件等原因引起的数据丢失。
由master节点发起全局数据,或者primary节点发起自己负责的range的数据,的多个副本间的数据扫描。
如果发现某个副本缺失,则进行修复。
Hbase、cassandra、ceph都有类似机制,原理类似,机制不同,这里不一一展开讲了。
✧Hbase:hdfs层的data node在发现盘损坏后,会收集剩下的所有block信息,并通知namenode对比修复✧Cassandra:基于Merkle tree的anti-entropy机制✧Ceph:scrub和deep-scrub机制3.可用性分布式存储系统,相比传统关系数据库,有更好的可用性。
在个别机器硬件或软件故障,甚至整个机房断电断网等极端情况下,仍不影响在线读写。
对于个别机器硬件或者软件故障,一般数据保存多份副本或者纠删码方式就能解决。
对于整个机房断电,只能是多副本的跨idc存储,一般分布式存储系统都支持这种方式,只是目前实际应用的很少。
保证可用性,另外一个影响因素是,整个系统是否有单点故障。
完全分布式的设计是没有单点的。
集中式的设计,有meta信息,需要meta server的角色,一般也会将meta server做成集群式,以避免单点问题。
下面结合例子讲下。
1)分布式or集中式✧Hbase:meta server是集群方式,通过zk的选举算法选出一个主节点来提供服务,主节点挂掉后,会重新选一个。
所以hbase的meta server也不算是单点的。
但其region server 是单点的,即一个region server挂掉,在master没有为其负责的region进行重分配前,这个region所负责的range,是无法提供在线读写的。
之所以存在此单点问题,猜测因为hbase设计之初,是为网页库这类离线存储设计的,而非在线服务。
另外,region server 的这种设计能较方便是实现强一致性和简单事务,后面会提到。
现在貌似已有region server的stand by机制,即一台region server挂掉,另一台准备就绪的能马上接替并提供服务。
Hbase架构如下:图6 hbase架构✧cassandra和ceph:是完全分布式的(ceph虽有monitor server,但仍可理解为完全分布式的,这里不展开了),无单点问题。
4.可扩展性存储系统的可扩展性,即扩容的难易程度。
可扩展性是分布式系统相比传统关系数据库,最大的优势。
各分布式存储系统都能很好的支持横向扩展。
由于实现方式的不同,扩容的难易程度还是有差异的。
一般集中式的系统扩容更加容易,完全分布式的系统会更加麻烦些。
下面结合例子讲下。
1)扩容✧Hbase:比较容易,扩容的大致过程为:增加一些region server,由master server做一下balance,即重新确定region server与region的对应关系(每个region负责一定范围的key,对应于hdfs上的一组文件),完全不需要拖数据。
而hdfs本身扩容也较容易,因为有name node存在(相当于master server,对写入hdfs的每个块儿都记录其存储节点),可以将新写入的文件写入到新扩容的server,这样不需要拖数据;如果要考虑写压力均衡(即不把写压力集中在新加入的机器上,仍然写所有机器),仍需要做数据迁移。