ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:44KB ,
资源ID:10509    下载:注册后免费下载
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-10509.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(分布式存储技术及应用介绍.doc)为本站会员(李静文)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

分布式存储技术及应用介绍.doc

1、根据 did you know(http:/didyouknow.org/)的数据,目前互联网上可访问的信息数量接近 1 秭= 1 百万亿亿 (1024)。毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。分布式存储概念与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。具体技术及应用:海量

2、的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。 本文接下来将会分别介绍这三种数据如何分布式存储。结构化数据的存储及应用所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。大多数系统都有大量的结构化数据,一般存储在 Oracle 或 MySQL 的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个

3、小数据库,从而达到了数据库的扩展。一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的 hash 值。垂直扩展与水平扩展各有优缺点

4、,一般一个大型系统会将水平与垂直扩展结合使用。实际应用:图 1 是为核高基项目设计的结构化数据分布式存储的架构图。图 1 可水平&垂直切分扩展的数据访问框架采用了独立的分布式数据访问层,后端分布式数据库集群对前端应用透明。集成了 Memcached 集群,减少对后端数据库的访问,提高数据的查询效率。同时支持垂直及水平两种扩展方式。基于全局唯一性主键范围的切分方式,减轻了后续维护的工作量。全局唯一性主键的生成采用 DRBD+Heartbeat 技术保证了可靠性。利用 MySQL Replication 技术实现高可用的架构。注:以上的数据切分方案并不是唯一扩展 MySql 的方法,有兴趣的读者可

5、以关注一下” 云计算时代的 MySQL-Clustrix Sierra 分布式数据库系统”。非结构化数据的存储及应用相对于结构化数据而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。分布式文件系统是实现非结构化数据存储的主要技术,说到分布式文件系统就不得不提GFS(全称为“Google File System“),GFS 的系统架构图如下图所示。图 2 Google-file-system 架构图GFS 将整个系统分为三类角色:Client(客户端)、Master(主服务器)、Chunk Se

6、rver(数据块服务器)。Client(客户端):是 GFS 提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX 规范,以库文件的形式提供。应用程序直接调用这些库函数,并与该库链接在一起。Master(主服务器):是 GFS 的管理节点,主要存储与数据文件相关的元数据,而不是Chunk(数据块)。元数据包括:命名空间(Name Space),也就是整个文件系统的目录结构,一个能将 64 位标签映射到数据块的位置及其组成文件的表格,Chunk 副本位置信息和哪个进程正在读写特定的数据块等。还有 Master 节点会周期性地接收从每个 Chunk 节点来的更新(“Heart- beat“

7、)来让元数据保持最新状态。Chunk Server(数据块服务器):负责具体的存储工作,用来存储 Chunk。GFS 将文件按照固定大小进行分块,默认是 64MB,每一块称为一个 Chunk(数据块),每一个 Chunk 以Block 为单位进行划分,大小为 64KB,每个 Chunk 有一个唯一的 64 位标签。GFS 采用副本的方式实现容错,每一个 Chunk 有多个存储副本(默认为三个)。Chunk Server 的个数可有有多个,它的数目直接决定了 GFS 的规模。GFS 之所以重要的原因在于,在 Google 公布了 GFS 论文之后,许多开源组织基于 GFS 的论文开发了各自的分布

8、式文件系统,其中比较知名的有 HDFS,MooseFS,MogileFS 等。实际应用:由于核高基的项目中未来会有大量的数据与应用需要存储,所以我们设计时也采用分布式文件系统的方案,由于开源的分布式文件系统可以基本满足我们需求,另外从时间上来说也比较紧张,所以我们采用了开源的 MooseFS 作为底层的分布式文件系统。MooseFS 存在的问题:由于 MooseFS 是也是按照 GFS 论文设计的,只有一个 Master(主服务器),虽然可以增加一个备份的日志服务器,但是还是存在 Master 无法扩展的问题,当单一 Master 节点上存储的元数据越来越多的时候,Master 节点占用的内存

9、会越来越多,直到达到服务器的内存上限,所以单一 Master 节点存在内存上的瓶颈,只能存储有限的数据,可扩展性差,并且不稳定。对 MooseFS 的优化:面对 MooseFS 存在的问题,我们采用了类似分布式数据库中的“Sharding”技术,设计了一个分布式文件系统访问框架,可以做到对分布式文件系统做垂直与水平切分。这样就最大限度的保证了 MooseFS 系统的可扩展性与稳定性。下图是为核高基项目设计的非结构化数据分布式存储的架构图。我们设计了两种访问方式,一种是类似 GFS 的 API 访问方式,以库文件的方式提供,应用程序通过调用 API 直接访问分布式文件系统。第二种是通过 REST

10、ful web Service 访问。图 4 可水平&垂直切分扩展的分布式文件系统访问框架(API 版)图 5 可水平&垂直切分扩展的分布式文件系统访问框架(RESTful web Service 版)半结构化数据的存储及应用就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,半结构化数据模型具有一定的结构性,但较之传统的关系和面向对象的模型更为灵活。半结构数据模型完全不基于传统数据库模式的严格概念,这些模型中的数据都是自描述的。由于半结构化数据没有严格的 schema 定义,所以不适合用传统的关系型数据库进行存储,适合存储这类数

11、据的数据库被称作“NoSQL”数据库。NoSQL 的定义:被称作下一代的数据库,具有非关系型,分布式,轻量级,支持水平扩展且一般不保证遵循 ACID 原则的数据储存系统。“NoSQL ”其实是具有误导性的别名,称作 Non Relational Database(非关系型数据库)更为恰当。所谓“非关系型数据库”指的是:使用松耦合类型、可扩展的数据模式来对数据进行逻辑建模(Map,列,文档,图表等),而不是使用固定的关系模式元组来构建数据模型。以遵循于 CAP 定理(能保证在一致性,可用性和分区容忍性三者中中达到任意两个)的跨多节点数据分布模型而设计,支持水平伸缩。这意味着对于多数据中心和动态供

12、应(在生产集群中透明地加入/删除节点)的必要支持,也即弹性(Elasticity)。拥有在磁盘或内存中,或者在这两者中都有的,对数据持久化的能力,有时候还可以使用可热插拔的定制存储。支持多种的Non-SQL接口(通常多于一种)来进行数据访问。图 6 是 SouravMazumder 提出的 NoSQL 总体架构:图 6 NoSQL 总体架构接口:REST (HBase,CouchDB,Riak 等),MapReduce(HBase,CouchDB,MongoDB,Hypertable 等),Get/Put(Voldemort,Scalaris等),Thrift (HBase,Hypertabl

13、e,Cassandra 等),语言特定的 API(MongoDB)。逻辑数据模型:面向键值对的(Voldemort,Dynomite 等),面向 ColumnFamily 的(BigTable,HBase,Hypertable 等),面向文档的(CouchDB,MongoDB 等),面向图的(Neo4j, Infogrid 等)数据分布模型:致性和可用性(HBase,Hypertable, MongoDB 等),可用性和可分区性(Cassandra 等)。一致性和可分区性的组合会导致一些非额定的节点产生可用性的损失。有趣的是目前还没有一个“非关系型数据库”支持这一组合。数据持久性:基于内存的(

14、如 Redis,Scalaris, Terrastore),基于磁盘的(如MongoDB,Riak 等),或内存及磁盘二者的结合(如 HBase,Hypertable,Cassandra)。存储的类型有助于我们辨别该解决方案适用于哪种类型。然而,在大多数情况下人们发现基于组合方案的解决方案是最佳的选择。既能通过内存数据存储支持高性能,又能在写入足够多的数据后存储到磁盘来保证持续性。NoSQL 中的重要理论基础:CAP 理论:C: Consistency 一致性A: Availability 可用性(指的是快速获取数据)P: Tolerance of network Partition 分区容忍

15、性(分布式)图 7 CAP 理论CAP 原理告诉我们,这三个因素最多只能满足两个,不可能三者兼顾。对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。对于大型网站来说,分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。对应 CAP 理论,NoSQL 追求的是 AP,而传统数据库追求的是 CA,这也可以解释为什么 传统数据库的扩展能力有限的原因。BASE 模型:说起来很有趣,BASE 的英文意义是碱,而 ACID 是酸。真的是水火不容啊。Basically Availble 基本可用Soft-state 软状态/柔性事务Eventual Consistency 最终一致性BA

16、SE 模型是传统 ACID 模型的反面,不同于 ACID 模型,BASE 强调牺牲高一致性,从而获得可用性或可靠性。基本可用是指通过 Sharding,允许部分分区失败。软状态是指异步,允许数据在一段时间内的不一致,只要保证最终一致就可以了。最终一致性是整个 NoSQL 中的一个核心理念,强调最终数据是一致的就可以了,而不是时时一致。Quorum NRW:图 8 Quorum NRWN: 复制的节点数,即一份数据被保存的份数。 R: 成功读操作的最小节点数,即每次读取成功需要的份数。 W: 成功写操作的最小节点数 ,即每次写成功需要的份数。这三个因素决定了可用性,一致性和分区容错性。只需 W

17、+ R N,就可以保证强一致性。实际应用: 今年上半年我在 aspire 的搜索团队中负责互联网搜索的设计与开发,我设计的网页爬虫系统就是采用 Cassandra 来存储网页与链接信息的。下面结合我的实际使用经验谈谈我对 Cassandra 的看法:优点:弹性扩展:由于 Cassandra 是完全分布式的,使用时不需要再像使用 MySQL 那样自己设计复杂的数据切分方案,也不再配置复杂的 DRBD+Heartbeat,一切都变得非常简单了,只需要简单的配置就可以给一个集群中增加一个新的节点,而且对客户端完全是透明的,不需要任何更改。灵活的 schema:不需要象数据库一样预先设计 schema,增加或者删除字段非常方便。使用简单:由于没有类似 SQL 这样复杂的查询语言,学习成本不高,很容易上手。缺点:稳定性差:在我们的实际使用过程中发现,单机数据量达到 200G 以上,时不时就会发生宕机现象。缺乏管理与分析工具:传统的关系型数据都有比较好用的管理与分析工具,使用这些工具可以轻松的管理数据库,查看数据,分析性能瓶颈等,而 Cassandra 确缺少类似的工具,就连简单的查看一条数据,都要通过编程才能看到。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报