分布式存储技术及应用
- 格式:pdf
- 大小:499.67 KB
- 文档页数:10
根据did you know(/)的数据,目前互联网上可访问的信息数量接近1秭= 1百万亿亿 (1024)。
毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。
分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。
分布式存储概念与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
具体技术及应用:海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。
本文接下来将会分别介绍这三种数据如何分布式存储。
结构化数据的存储及应用所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。
大多数系统都有大量的结构化数据,一般存储在Oracle或MySQL的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。
∙垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。
一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。
各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。
∙水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。
为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。
分布式存储及应用场景研究随着互联网技术的不断发展,大量的数据不断涌入人们的视野,这些数据需求储存与处理,传统的储存与计算方式已经无法满足大数据的需求。
因此,出现了一种新的技术——分布式存储技术。
一、分布式存储技术介绍分布式存储技术,是指将数据分别存储于多个物理节点上,并通过网络连接起来,形成一个虚拟的跨网络存储集群。
由于数据分存于多个节点上,相对传统的存储方式,分布式存储技术能大大提高储存资源的效率,同时还能为用户提供更可靠、灵活的存储服务。
与传统的集中式数据存储方式比较,分布式存储技术有以下优点:1. 高效可靠。
分布式存储技术采用的是多节点的存储方式,即使某一个节点损坏或出现故障,仍然可以保证数据的完整性和可用性。
2. 灵活性强。
分布式存储可以根据实际需求动态调整存储的空间大小,在存储空间不足的情况下,还可以扩展存储节点。
3. 易扩展。
在传统的集中式存储系统中,增加存储容量需要增加物理存储设备,增加存储节点比较麻烦。
而分布式存储系统则可以通过添加节点来实现存储容量的扩展。
二、分布式存储的应用场景1. 大型分布式应用程序分布式存储技术在大型分布式应用程序中得到广泛应用,尤其是在互联网技术领域。
例如,搜索引擎页面缓存、大量数据的在线分析和处理、电商网站的日志记录等。
2. 云计算分布式存储技术是云计算的核心技术之一,它可以用于云存储和云计算平台的实现。
目前,云存储和云计算已成为互联网的主流趋势,尤其是在数据的存储、备份和恢复、以及数据处理等方面。
3. 大数据场景随着大数据技术的不断发展,分布式存储技术也越来越得到广泛的应用。
目前,大数据技术已应用于几乎所有行业中,例如科研、金融、医疗、教育等。
在大数据场景中,需要处理的数据量非常庞大,并且需要快速高效的处理,分布式存储技术能够在较短的时间内完成数据的读写操作,大大提高了数据的处理效率。
三、分布式存储的挑战1. 网络传输带宽要求高。
分布式存储系统需要采用高速的网络传输技术,保证节点之间的数据传输速度比较快,这对网络传输带宽提出了较高要求。
分布式存储技术及其应用一、引言分布式存储技术在当今互联网时代得到了广泛的应用,最初应用于大型网站、互联网公司及数据中心等领域。
它是一种新型的存储技术,相比于传统的集中式存储技术有着很大的优势。
本文将分别从分布式存储技术的概念,技术特点,分类以及应用领域等方面进行深入浅出的介绍。
二、分布式存储技术的概念分布式存储技术是将数据分散存储在多个节点上的一种技术。
与传统的集中式存储技术相比,它的优势在于可以实现数据的高可用性、高可靠性以及横向扩展等功能。
当其中某个节点崩溃后,系统仍然可以继续运行,这种弹性不仅可以提高数据存储的可靠性,还能够大大提高系统的性能与可扩展性。
三、分布式存储技术的技术特点1. 高可用性:分布式存储技术可以实现数据的镜像备份,即将数据同时存储在多个节点上,一旦其中某一个节点发生故障,系统也可以从其他节点上恢复数据存储。
2. 高可靠性:分布式存储技术可以利用多个节点进行数据的存储和备份,从而实现数据的冗余存储,一旦其中某一个节点出现故障,系统可以从其他节点上恢复数据,从而保证数据的完整性和安全性。
3. 弹性扩展:随着数据量的不断增加,分布式存储技术可以根据实际情况增加节点数,实现数据的“横向扩展”,从而提高系统的可扩展性。
4. 高数据处理能力:分布式存储技术可以将数据分散存储在多个节点上,每个节点都具有数据处理的能力,可以通过负载均衡技术,将数据均匀分配到各个节点上并行处理,从而提高系统的处理能力。
四、分布式存储技术的分类1. 文件系统:Infiniband、Interconnect、GPFS等,具有高效率、可扩展性强等优点。
2. 分布式对象存储:Ceph、Swift、HDFS等,多用于云存储和大规模数据中心。
3. 分布式块存储:Gluster、DRBD等,常见于虚拟化环境中。
五、分布式存储技术的应用领域1. 互联网公司:分布式存储技术可以为互联网公司提供海量的数据存储,快速响应和高可靠性的服务支持;2. 科研领域:分布式存储技术可以为科研领域提供高效的分布式计算服务,支持海量数据分析和处理;3. 视频监控领域:分布式存储技术可以为视频监控领域提供高可靠性的数据存储和备份支持,以及快速的数据检索和回放服务。
大数据的分布式存储和计算技术在信息时代,数据被视为一种新的资源,具有巨大的商业价值和战略意义,尤其是互联网时代的数据爆炸,让大数据成为了此时此刻最为热门的话题。
面对海量数据,如何存储和分析这些数据一直是个难题,直到分布式存储和计算技术的出现。
本文将阐述大数据的分布式存储和计算技术的重要性,相关技术原理及应用场景。
一、分布式存储技术分布式存储技术(Distributed Storage)是指利用计算机网络将数据存储在多个独立的节点上,使得多个节点具有相互协同的能力,形成数据存储系统。
这样的存储系统不仅能够保证数据的容错性和可用性,还能够提高系统的可扩展性和吞吐量,使得大量数据能够得以存储和处理。
分布式存储技术是众多大数据技术中的重要一环,它可以有效地解决大规模数据存储和管理问题。
目前常见的分布式存储系统有HDFS、Ceph、GlusterFS等,其中HDFS是Apache Hadoop项目中的分布式文件系统,是目前使用最为广泛的分布式存储技术之一。
在HDFS中,文件会被拆分成若干个小文件块,然后存储在不同的节点上。
每个文件块都会有多个副本进行备份,以保证数据的可靠性。
通过这种方式,HDFS不仅可以解决大规模存储的问题,还能够提供高可用、高并发和数据安全等保障措施。
二、分布式计算技术分布式计算技术(Distributed Computing)是指将整个计算任务分布到多个节点上进行处理,从而实现对海量数据的高速计算和分析。
分布式计算技术还分为两种方式:1.基于网络通信的分布式计算,如Map Reduce、Spark等;2.基于共享内存的分布式计算,如MPI等。
基于网络通信的分布式计算技术可以分布式地执行计算任务,提升计算效率和数据处理能力。
目前最流行的两个分布式计算框架是Apache Hadoop和Apache Spark,两者之间各有优点。
Hadoop基于Map-Reduce框架,可以高效地处理大量的数据切片,具有良好的数据处理性能。
分布式存储技术与应用讲座观后感前几天去听了那个分布式存储技术与应用的讲座,真的是让我大开眼界,感觉就像是打开了一扇通往数据新世界的大门,而且这扇门后面充满了各种神奇的“魔法”。
讲座一开始,讲师就抛出了一个超级吓人的数据量,说现在每天产生的数据多得就像宇宙里数不清的星星。
我当时就在想,这么多数据得堆到哪儿去啊?这时候,分布式存储就像超级英雄闪亮登场了。
讲师讲得特别生动,他说传统的存储方式就像是把所有的东西都塞在一个小柜子里,东西多了不仅放不下,找起来还特别费劲。
但是分布式存储就不一样啦,它就像是召集了一群小精灵,每个小精灵都拿着一部分数据,然后它们分散在各个角落。
这样一来,不但能存下超级多的数据,而且找数据的时候就像在玩寻宝游戏,那些小精灵们通过一种神秘的网络魔法,很快就能把你要的数据找出来。
我特别感兴趣的是分布式存储在云计算里的应用。
讲师举了个例子,就好比你用云盘存照片和文件。
以前总担心云盘会突然崩溃,数据全没了。
但是有了分布式存储,就好像给你的数据穿上了好多层铠甲。
就算有几个小精灵出了问题,其他的小精灵也能把数据完好无损地保护起来,你还能轻松地从云盘里把照片拿出来发朋友圈呢。
而且啊,分布式存储在大数据分析这块也特别厉害。
就像要从一堆沙子里找特定的小石子一样,在海量的数据里找有用的信息,要是没有分布式存储这个好帮手,那简直就像大海捞针。
但是现在呢,通过分布式存储把数据分散又巧妙地联系起来,分析数据就像在有标记的地图上找宝藏,又快又准。
讲座里还提到了一些关于分布式存储的安全性。
我本来以为这么分散的数据会很容易被坏人偷走呢。
结果讲师告诉我,这就像是一群有魔法的小卫士在守护着数据。
每个小卫士都有自己的任务,而且它们之间还互相监督。
坏人要是想偷偷摸摸搞破坏,就像小偷闯进了一个到处都是陷阱和警报器的城堡,根本就无从下手。
听完这个讲座,我就觉得自己像是从一个只知道把东西乱放的小迷糊,变成了一个对数据存储有了新认识的小行家。
dds使用场景DDS(分布式数据存储)使用场景DDS(Distributed Data Storage)是一种分布式数据存储技术,广泛应用于各种场景中。
本文将介绍DDS的使用场景,包括金融领域、物联网、大数据分析等。
一、金融领域在金融领域,DDS被广泛应用于交易数据的存储和分析。
金融市场的交易数据量庞大,对实时性和可靠性要求极高。
DDS通过将数据分布式存储在多个节点上,提供高速的读写能力和高可用性,保证了交易数据的安全性和一致性。
同时,DDS还能够对交易数据进行实时分析,帮助金融机构进行风险控制和决策支持。
二、物联网在物联网应用中,DDS被用来存储和管理海量的传感器数据。
物联网设备通常分布在不同的地理位置,产生的数据量巨大且具有高实时性要求。
DDS通过将数据分布式存储在边缘节点上,实现了数据的高效采集、存储和传输。
同时,DDS还支持多种通信协议,能够与各种物联网设备进行无缝集成,提供灵活的数据存储和访问能力。
三、大数据分析在大数据分析场景中,DDS被用来存储和处理海量的结构化和非结构化数据。
大数据分析需要处理不同来源、不同格式的数据,而DDS能够提供高度可扩展的存储能力和强大的数据处理能力。
DDS 支持多种查询语言和分布式计算框架,能够快速地进行数据查询和分析,帮助企业发现潜在的商业机会和优化业务流程。
四、医疗健康在医疗健康领域,DDS被广泛应用于医疗数据的存储和共享。
医疗数据通常包括患者的病历、影像数据、实时监测数据等。
DDS通过将医疗数据分布式存储在多个医疗机构之间,实现了数据的安全共享和远程访问。
同时,DDS还支持数据的实时更新和同步,保证了医疗数据的准确性和一致性,提高了医疗诊断和治疗的效率。
五、智能交通在智能交通领域,DDS被用来存储和传输交通数据。
智能交通系统需要实时采集和处理交通流量、车辆位置等数据,以提供实时的路况信息和交通管理。
DDS通过将交通数据分布式存储在不同的交通节点上,实现了数据的高效采集和传输。
区块链知识:区块链中的分布式存储技术与应用区块链技术中的分布式存储技术是其中的关键要素之一,区块链的分布式存储技术可以帮助实现去中心化网络存储,提高数据安全性和可靠性,同时也为区块链提供了广泛的应用场景.一、区块链分布式存储技术概念分布式存储是指将大量数据均匀的分散存储在不同的节点上,节点之间互相备份,以此来提高数据的可靠性和安全性。
区块链中的分布式存储技术是指将区块链数据分散存储在网络中的全节点上,每个节点都有完整的数据备份、验证和更新,以此来实现去中心化和去信任中心化的数据共享。
在传统的中心化数据存储架构中,用户需要将数据存储在云服务器或数据中心这样的中心节点上,但是中心节点是数据安全和可靠性的瓶颈,一旦中心节点被攻击或者故障,所有数据都会面临失去或损坏的风险。
而在区块链的分布式存储架构中,数据是分布在网络中的多个节点上,只要其中的一个节点存在,就能读取到数据,这种去中心化的分布式存储架构能够大大提高数据的安全性和可靠性。
二、区块链分布式存储技术的特点1.去中心化的存储结构:区块链存储在整个网络的节点上,每个节点都有完整的数据备份、验证和更新。
去中心化的存储结构可以有效地避免因为中心节点故障、数据丢失或损坏的问题。
2.数据的公开透明:区块链的公开透明性是其最重要的特点之一,用户只需要通过网络就能查看和验证区块链中的数据,这也就是为什么区块链技术被广泛用于交易、投票结果等领域的原因之一。
3.安全性高:区块链中的数据是使用非对称加密技术加密的,只有私钥相关联的公钥才能够解密数据,这样的设计可以大大提高区块链数据在传输和存储过程中的安全性。
4.数据不可篡改:区块链中的数据是被记录在不可篡改的区块链中,每个区块都与前面的区块链接在一起,每个区块都有一个特定的哈希值,这个哈希值代表了整个区块中数据的唯一性,在数据连续的情况下,区块链上的数据不可篡改。
三、区块链分布式存储技术的应用场景1.金融、交易领域:区块链技术可以用于交易和金融领域的去中心化数字货币,比如比特币、以太币等数字货币,最近出现的一些囊括区块链和金融的应用也在尝试利用区块链的分布式存储技术来构建更为可靠和安全的金融交易系统。
区块链技术的分布式存储区块链技术是一种分布式账本技术,其核心特点是去中心化和安全性。
分布式存储是区块链技术中的一个重要组成部分,它有效地解决了传统存储方式中的中心化问题。
本文将介绍区块链技术的分布式存储原理及其应用。
一、分布式存储的原理区块链技术中的分布式存储是基于点对点网络的方式进行的。
传统的中心化存储方式,数据由一个或多个中心服务器存储,而分布式存储则将数据分散存储在网络中的不同节点上。
每个节点都保存了整个数据的一份拷贝,当有新的数据加入时,会通过一定的协议将数据同步到所有节点。
分布式存储的原理是通过副本机制来确保数据的可靠性和安全性。
每个节点都拥有完整的数据副本,即使有节点失效或被攻击,数据仍然可以从其他节点恢复。
此外,分布式存储还能提供高可用性和高并发性,因为读取数据时可以从多个节点并行获取。
二、分布式存储的优势分布式存储相比传统的中心化存储方式,有以下几个优势:1. 去中心化:数据不再由少数几个中心服务器控制,而是分散存储在网络中的各个节点上。
这样可以避免中心化存储方式中出现的单点故障和数据丢失的问题。
2. 安全性:由于每个节点都存储有一份完整的数据副本,即使有节点被攻击或者数据损坏,其他节点仍然可以通过共识机制保证数据的准确性。
因此,分布式存储相比中心化存储更加安全可靠。
3. 高可用性:分布式存储可以提供更高的可用性,因为即使有节点失效,数据仍然可以从其他节点获取。
这使得数据的读取速度更快,并且具有更好的容错能力。
4. 降低成本:传统的中心化存储方式需要大量的服务器和存储设备来维护,而分布式存储可以通过共享节点的方式来节省成本,并提供更好的扩展性。
三、区块链技术中的分布式存储应用分布式存储在区块链技术中有广泛的应用,以下是其中几个典型的应用场景:1. 区块链数据存储:区块链中的交易数据以及智能合约等相关数据都会进行分布式存储。
每个节点都保存了整个区块链的一份拷贝,并通过共识算法保证数据的正确性。
分布式存储技术及应用介绍分布式存储技术是指将数据分散存储在多个节点(服务器)上的一种存储方式。
它能够提供高可靠性、高扩展性和高并发性,因此在大规模数据存储和多用户访问的场景下被广泛应用。
下面将介绍几种常见的分布式存储技术及其应用。
1.分布式文件系统分布式文件系统是一种能够在多台独立的计算机上存储和访问文件的系统。
它将文件分割成多个块,并将这些块分散存储在多个节点上。
用户可以通过统一的文件路径来访问分布式文件系统中的文件,而不需要关心文件所存储的具体位置。
分布式文件系统常用的开源实现包括HDFS (Hadoop Distributed File System)和Ceph。
应用:分布式文件系统广泛应用于大数据领域,可以用于存储海量的数据文件,同时支持高并发访问。
例如,HDFS被广泛应用于Hadoop生态系统中,用于存储和处理大规模的数据集。
2.分布式对象存储分布式对象存储是一种将对象以键值对的形式存储在多个节点上的存储方式。
每个对象都有一个唯一的标识符,并且可以通过该标识符进行读写操作。
分布式对象存储系统通常提供高可靠性和高可用性,可以通过数据冗余和自动容错机制来保证数据的安全性和可靠性。
常见的分布式对象存储系统有OpenStack Swift和Amazon S3应用:分布式对象存储常用于存储海量的非结构化数据,例如图片、视频、日志等。
它可以提供高并发的访问能力,并且支持自动扩展存储容量。
例如,Amazon S3被广泛应用于云存储服务中,提供了安全、可靠的存储和访问服务。
3.分布式块存储分布式块存储是一种将数据以块的形式存储在多个节点上的存储方式。
每个块都有一个唯一的标识符,并且可以通过该标识符进行读写操作。
分布式块存储系统通常提供高性能和高容量的存储能力,可以通过数据冗余和数据分片技术来提高数据的可靠性和可用性。
常见的分布式块存储系统有Ceph和GlusterFS。
应用:分布式块存储常用于虚拟化环境中,提供虚拟机镜像的存储和访问。
分布式存储技术及应用根据did you know(/)的数据,目前互联网上可访问的信息数量接近1秭= 1百万亿亿 (1024)。
毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。
分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。
分布式存储概念与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
具体技术及应用:海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。
本文接下来将会分别介绍这三种数据如何分布式存储。
结构化数据的存储及应用所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。
大多数系统都有大量的结构化数据,一般存储在Oracle或MySQL的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。
∙垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。
一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。
各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。
∙水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。
为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。
垂直扩展与水平扩展各有优缺点,一般一个大型系统会将水平与垂直扩展结合使用。
实际应用:图1是为核高基项目设计的结构化数据分布式存储的架构图。
图1可水平&垂直切分扩展的数据访问框架∙采用了独立的分布式数据访问层,后端分布式数据库集群对前端应用透明。
∙集成了Memcached集群,减少对后端数据库的访问,提高数据的查询效率。
∙同时支持垂直及水平两种扩展方式。
∙基于全局唯一性主键范围的切分方式,减轻了后续维护的工作量。
∙全局唯一性主键的生成采用DRBD+Heartbeat技术保证了可靠性。
∙利用MySQL Replication技术实现高可用的架构。
注:以上的数据切分方案并不是唯一扩展MySql的方法,有兴趣的读者可以关注一下”云计算时代的MySQL-Clustrix Sierra分布式数据库系统”。
非结构化数据的存储及应用相对于结构化数据而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。
分布式文件系统是实现非结构化数据存储的主要技术,说到分布式文件系统就不得不提GFS (全称为"Google File System"),GFS的系统架构图如下图所示。
图2 Google-file-system架构图图3 Google-file-system架构图(详细)GFS将整个系统分为三类角色:Client(客户端)、Master(主服务器)、Chunk Server(数据块服务器)。
∙Client(客户端):是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。
应用程序直接调用这些库函数,并与该库链接在一起。
∙Master(主服务器):是GFS的管理节点,主要存储与数据文件相关的元数据,而不是Chunk(数据块)。
元数据包括:命名空间(Name Space),也就是整个文件系统的目录结构,一个能将64位标签映射到数据块的位置及其组成文件的表格,Chunk副本位置信息和哪个进程正在读写特定的数据块等。
还有Master节点会周期性地接收从每个Chunk节点来的更新("Heart- beat")来让元数据保持最新状态。
∙Chunk Server(数据块服务器):负责具体的存储工作,用来存储Chunk。
GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每一个Chunk以Block为单位进行划分,大小为64KB,每个Chunk有一个唯一的64位标签。
GFS采用副本的方式实现容错,每一个Chunk有多个存储副本(默认为三个)。
Chunk Server的个数可有有多个,它的数目直接决定了GFS的规模。
GFS之所以重要的原因在于,在Google公布了GFS论文之后,许多开源组织基于GFS的论文开发了各自的分布式文件系统,其中比较知名的有HDFS,MooseFS,MogileFS等。
实际应用:由于核高基的项目中未来会有大量的数据与应用需要存储,所以我们设计时也采用分布式文件系统的方案,由于开源的分布式文件系统可以基本满足我们需求,另外从时间上来说也比较紧张,所以我们采用了开源的MooseFS作为底层的分布式文件系统。
∙MooseFS存在的问题:由于MooseFS是也是按照GFS论文设计的,只有一个Master (主服务器),虽然可以增加一个备份的日志服务器,但是还是存在Master无法扩展的问题,当单一Master节点上存储的元数据越来越多的时候,Master节点占用的内存会越来越多,直到达到服务器的内存上限,所以单一Master节点存在内存上的瓶颈,只能存储有限的数据,可扩展性差,并且不稳定。
∙对MooseFS的优化:面对MooseFS存在的问题,我们采用了类似分布式数据库中的“Sharding”技术,设计了一个分布式文件系统访问框架,可以做到对分布式文件系统做垂直与水平切分。
这样就最大限度的保证了MooseFS系统的可扩展性与稳定性。
下图是为核高基项目设计的非结构化数据分布式存储的架构图。
我们设计了两种访问方式,一种是类似GFS的API访问方式,以库文件的方式提供,应用程序通过调用API直接访问分布式文件系统。
第二种是通过RESTful web Service访问。
图4可水平&垂直切分扩展的分布式文件系统访问框架(API版)图5可水平&垂直切分扩展的分布式文件系统访问框架(RESTful web Service版)半结构化数据的存储及应用就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,半结构化数据模型具有一定的结构性,但较之传统的关系和面向对象的模型更为灵活。
半结构数据模型完全不基于传统数据库模式的严格概念,这些模型中的数据都是自描述的。
由于半结构化数据没有严格的schema定义,所以不适合用传统的关系型数据库进行存储,适合存储这类数据的数据库被称作“NoSQL”数据库。
NoSQL的定义:被称作下一代的数据库,具有非关系型,分布式,轻量级,支持水平扩展且一般不保证遵循ACID原则的数据储存系统。
“NoSQL”其实是具有误导性的别名,称作Non Relational Database(非关系型数据库)更为恰当。
所谓“非关系型数据库”指的是:∙使用松耦合类型、可扩展的数据模式来对数据进行逻辑建模(Map,列,文档,图表等),而不是使用固定的关系模式元组来构建数据模型。
∙以遵循于CAP定理(能保证在一致性,可用性和分区容忍性三者中中达到任意两个)的跨多节点数据分布模型而设计,支持水平伸缩。
这意味着对于多数据中心和动态供应(在生产集群中透明地加入/删除节点)的必要支持,也即弹性(Elasticity)。
∙拥有在磁盘或内存中,或者在这两者中都有的,对数据持久化的能力,有时候还可以使用可热插拔的定制存储。
∙支持多种的‘Non-SQL’接口(通常多于一种)来进行数据访问。
图6是Sourav Mazumder提出的NoSQL总体架构:图6 NoSQL总体架构∙接口:REST (HBase,CouchDB,Riak等),MapReduce (HBase,CouchDB,MongoDB,Hypertable等),Get/Put (Voldemort,Scalaris等),Thrift (HBase,Hypertable,Cassandra等),语言特定的API(MongoDB)。
∙逻辑数据模型:面向键值对的(Voldemort,Dynomite 等),面向Column Family的(BigTable,HBase,Hypertable 等),面向文档的(Couch DB,MongoDB等),面向图的(Neo4j, Infogrid等)∙数据分布模型:致性和可用性(HBase,Hypertable, MongoDB等),可用性和可分区性(Cassandra等)。
一致性和可分区性的组合会导致一些非额定的节点产生可用性的损失。
有趣的是目前还没有一个“非关系型数据库”支持这一组合。
∙数据持久性:基于内存的(如Redis,Scalaris, Terrastore),基于磁盘的(如MongoDB,Riak等),或内存及磁盘二者的结合(如 HBase,Hypertable,Cassandra)。
存储的类型有助于我们辨别该解决方案适用于哪种类型。
然而,在大多数情况下人们发现基于组合方案的解决方案是最佳的选择。
既能通过内存数据存储支持高性能,又能在写入足够多的数据后存储到磁盘来保证持续性。
NoSQL中的重要理论基础:CAP理论:∙C: Consistency 一致性∙A: Availability 可用性(指的是快速获取数据)∙P: Tolerance of network Partition 分区容忍性(分布式)图7 CAP理论CAP原理告诉我们,这三个因素最多只能满足两个,不可能三者兼顾。
对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。
对于大型网站来说,分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。
对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也可以解释为什么传统数据库的扩展能力有限的原因。
BASE模型:说起来很有趣,BASE的英文意义是碱,而ACID是酸。
真的是水火不容啊。
∙Basically Availble –基本可用∙Soft-state –软状态/柔性事务∙Eventual Consistency –最终一致性BASE模型是传统ACID模型的反面,不同于ACID模型,BASE强调牺牲高一致性,从而获得可用性或可靠性。