1、第0页第第4 4章章 数据存储数据存储第1页目录目录1.分布式存储系统2.分布式数据库3.分布式文件系统第2页分布式数据库分布式数据库l分布式数据库一般从单机关系数据库发展而来,用于存储结构化数据。l然而非关系型(NoSQL)数据库在分布式数据库领域也占据着越来越重要的地位,非关系型分布式数据库去掉了关系型数据库的关系型特性,使用简单的数据库结构,具有良好的读写性能,为大数据提供了高可用、高可扩展的存储方案。第3页分布式数据库简介分布式数据库简介l随着传统的数据库技术日趋成熟,以及计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。l分布式数据库
2、是数据库技术与网络技术相结合的产物,在数据库领域已形成一个分支。第4页分布式数据库简介分布式数据库简介起源与概念起源与概念 通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS(数据库管理系统)的一份完整拷贝副本,并具有自己局部的数据库。位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。分布式数据库系统分布式数据库系统第5页分布式数据库简介分布式数据库简介起源与概念起源与概念l分布式数据库系统第6页分布式数据库简介分布式数据库简介起源与概念起源与概念l分布式数据库系统p符合信息系统应用的需求;p符合当前企业组织的管理思想和管理方式。l对
3、于地域上分散而管理上又相对集中的大企业而言,数据通常是分布存储在不同地理位置,每个部门都会负责维护与自己工作相关的数据,整个企业的信息就被分隔成多个“信息孤岛”,分布式数据库为这些信息孤岛提供了一座桥梁。第7页分布式数据库简介分布式数据库简介起源与概念起源与概念l分布式数据库可以把子部门的信息通过网络连接起来,组成一个分布式存储系统。满足本地数据保存在本地维护;异地数据通过互联网进行存取的需求;允许各部门对数据进行局部控制和分散管理;提供整个组织的全局控制和高层次的协同管理。第8页分布式数据库简介分布式数据库简介起源与概念起源与概念l分布式数据库系统是数据库系统与计算机网络相结合的产物。p分布
4、式数据库系统产生于20世纪70年代末期,在20世纪80年代进入迅速成长阶段。p由于数据库应用需求的拓展和计算机硬件环境的改变,计算机网络与数字通信技术的飞速发展,卫星通信、蜂窝通信、计算机局域网、广域网和Internet的迅速发展,使得分布式数据库系统应运而生,并成为计算机技术最活跃的研究领域之一。第9页分布式数据库简介分布式数据库简介起源与概念起源与概念世界上第一个分布式数据库系统SDD-1,是由美国计算机公司于1976年至1978年设计,并于1979年在DEC-10和DEC-20计算机上面实现。1987年,关系数据库的最早设计者之一C.J.Date提出了分布式数据库系统应遵循的规则,作为分
5、布式数据库系统的理想目标或标准定义。20世纪90年代,分布式数据库系统已进入商品化应用阶段。一些数据库厂商也在不断推出和改进自己的分布式数据库产品,以适应应用的需求。但是实现和建立分布式数据库系统不是将数据库技术与网络技术简单结合,而是在这两种技术相互渗透和有机融合后的技术升华。l分布式数据库系统的发展第10页分布式数据库简介分布式数据库简介起源与概念起源与概念l目前,分布式数据库系统已发展成熟,主要的开发方向是开发基于客户机-服务器的系统或异构型多数据库系统。l分布式数据库的主要特点 用户不必关心数据的逻辑分区与物理位置分布式细节、副本数据一致性问题、局部数据库支持的数据模型等,使用起来如同
6、集中式数据库。透明性 分布式数据库依靠冗余实现系统可靠性、可用性,并改善其性能。多个节点存储数据副本,当某一节点数据遭到破坏时,冗余副本可保证数据的完整性。数据冗余性第11页分布式数据库简介分布式数据库简介起源与概念起源与概念l分布式数据库的主要特点 在分布式数据库中能够方便地通过水平扩展提高系统的整体性能,也能够通过垂直扩展来提高性能。同时,扩展并不需要修改系统程序。易于扩展性 各节点上的数据由本地的DBMS管理,DBMS有自治处理能力,能完成本地的应用或局部应用。自治性第12页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l应对大数据处理的分布式数据库
7、系统可以归纳为关系型和非关系型两种。关系型分布式数据库 关系型数据库发展比较早,其理论和应用比较丰富,如Oracle、Microsoft SQL Sever、MySQL等关系数据库系统已被广泛应用在各行各业。关系数据库设计之初并没有预见IT行业发展如此快速,总是假设系统运行在单机这一封闭系统上。随着对关系数据库扩展性、可用性和并发性等方面的要求日益提升,关系数据库也在进行相应的研发。第13页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l关系数据库的可扩展性实现思路有很多种。在应用层划分数据,将不同的数据分片划分到不同的关系数据库上,如MySQL Shar
8、ding、PostgreSQL。在关系数据库内部支持数据自动分片,如Microsoft SQL Azure。从存储引擎开始重写一个全新的分布式数据库,如Google Spanner和Alibaba OceanBase。第14页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构 MySQL Sharding指在MySQL的基础上,通过数据分片将数据进行水平切分或垂直切分,并将分片数据分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个shard。一个shard可以包含多个表的内容,甚至可以包含多个数据库实例中的内容。每个shard被放置在
9、一个数据库服务器上,一个数据库服务器可以处理一个或多个shard的数据。MySQL Sharding第15页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l数据分片p将数据全局地划分为相关的逻辑片段。p数据分片有水平切分、垂直切分、混合切分3种类型。水平切分 水平切分是按照某个字段的某种规则分散到多个节点数据库中,每个节点数据库中包含一部分数据。数据的水平切分还可以简单理解为按照数据行进行切分,即将表中的某些行切分到一个节点,并将另外某些行切分到其他节点,从分布式的整体来看它们是一个整体的表。第16页分布式数据库简介分布式数据库简介常见分布式数据库的技术架
10、常见分布式数据库的技术架构构垂直切分 一个数据库的多个表可能对应不同的业务,垂直切分是指按照业务将表进行分类并分布到不同的节点上。垂直拆分简单明了,拆分规则明确,应用程序模块清晰、明确、容易整合,但是当某个表的数据量达到一定程度后,扩展起来比较困难。混合切分 混合切分就是结合水平切分与垂直切分。第17页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lMySQL Sharding实现分布式存储的一般架构图p客户端p中间层dbproxy集群p数据库组p元数据服务器p常驻进程p第18页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术
11、架构构客户端l应用程序通过MySQL原生的客户端与系统交互,实现支持JDBC,并使得原有的单机访问数据库程序可以无缝迁移。第19页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构中间层dbproxy集群lMySQL dbproxy是MySQL客户端与服务器端的中间层,作用是解析客户端SQL请求并转发到后端的数据库。dbproxy中间层可以解析MySQL协议,执行SQL路由、SQL过滤、读写分离、结果归并、排序分组等。l中间层dbproxy集群由多个无状态的dbproxy组成,不会存在单点的情况。l此外,在客户端和中间层之间引入Linux虚拟服务器(Linux
12、 Virtual Server,LVS)可以对客户端请求进行负载均衡。但引入LVS后,客户端请求需要额外增加一层通信开销。因此,常见的做法是直接在客户端配置中间层服务器列表,由客户端处理请求负载均衡以及中间层服务器故障等情况。第20页l每个dbgroup由N台数据库机器组成,其中一台为主机(Master),另外N-1台为备机(Slave)。l主机负责所有的写事务及强一致读事务,并将操作以binlog(MySQL的二进制日志)的形式复制到备机,备机可以支持有一定延迟的读事务。数据库组分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构第21页分布式数据库简介分布式
13、数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l元数据服务器主要负责维护dbgroup拆分规则,并用于dbgroup选主(选择Master)。ldbproxy通过元数据服务器获取拆分规则,从而确定SQL语句的执行计划。此外,如果dbgroup的主机出现故障,那么需要通过元数据服务器为dbgroup重新选主(选择Master)。l元数据服务器本身也需要多个副本实现HA(高可用),HA常见的实现方式是采用Zookeeper。元数据服务器第22页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构常驻进程l部署在每台数据库服务器上的常驻进程,用于实现监
14、控、单点切换、安装、卸载程序等。ldbgroup中的数据库需要进行主备切换、软件升级等,这些控制逻辑需要与数据库读写事务处理逻辑隔离开。第23页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l假设数据库按照用户进行哈希分区,同一个用户的数据分布在一个数据库组上。l由于中间层的协议与MySQL兼容,所以客户端完全感受不到与访问单台MySQL机器之间的差别。如果SQL请求只涉及同一个用户,那么中间层将请求转发给相应的数据库组,等待返回结果并将结果返回给客户端。如果SQL请求涉及多个用户,那么中间层需要转发多个数据库组,等待返回结果并将结果执行合并、分组、排序等
15、操作后返回客户端。第24页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构 Google Spanner是Google的全球级分布式数据库(Globally-Distributed Database)。Spanner的扩展性达到了全球级,可以扩展到数百个数据中心、数百万台机器、上万亿行记录,并且能够通过同步复制和多版本控制满足外部一致性,从而支持跨数据中心事务。Spanner构建在Google分布式文件系统Colossus上。Colossus是GFS的延续,具有更好的实时性能,并且支持海量小文件。Google Spanner第25页分布式数据库简介分布式数据
16、库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lSpanner的架构图 第26页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lSpanner是全球性的,其中有以下两个一般分布式存储没有的概念。一个Spanner部署实例称为一个Universe。Universe支持多数据中心部署,且多个业务可以共享同一个Universe。Universe 每个Zone属于一个数据中心,一个数据中心可能有多个Zone。一般来说,Zone之间通信代价高,Zone内部通信代价低。Zone第27页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库
17、的技术架构构Spanner架构中的组件Universe Master:监控单个Universe里Zone级别的状态信息。Placement Driver:提供跨Zone数据迁移功能。zonemaster:管理Spanserver上的数据。Location Proxy:提供获取数据的位置信息服务。客户端需通过它才能知道数据由哪台Spannserver提供存储服务。Spanserver:提供存储服务。第28页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lSpanner架构中的组件Spanserverp每个Spanserver会服务多个子表,而每个子表又包含多
18、个目录。p当客户端往Spanner发送读写请求时,首先需要查找目录所在的Spanserver,接着从Spanserver读写数据。第29页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构 PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。PostgreSQL提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等。PostgreSQL还支持使用C语言写自定义函数、触发器,也支持使用流行的语言写自定义函数,如其中的PL/Perl提供了使用Perl语言写自
19、定义函数的功能。PostgreSQL第30页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l相比于运用广泛的MySQL,PostgreSQL的特点PostgreSQL功能强大 支持所有主流的多表连接查询方式和大多数SQL语法。性能优化工具和度量信息丰富 PostgreSQL有大量性能视图,可以方便地定位问题。在线操作功能好 PostgreSQL增加列可做到瞬间完成,还支持在线建索引,建索引过程中可以不锁更新操作。第31页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lPostgreSQL可以通过一些第三方的插件、软件等
20、实现分布式架构,如PL/Proxy。PL/Proxy PL/Proxy是一款能在PostgreSQL数据库中实现水平拆分的软件,可以帮助PostgreSQL实现基于数据库水平拆分的分布式架构,但PL/Proxy并不是分布式数据库软件。PL/Proxy本身并不是一个可以独立运行的进程,而只是安装到PostgreSQL的一种PL语言,但它可以将请求(对函数的调用)路由至后端的其他数据库。第32页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l基于数据库水平拆分的分布式架构第33页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构
21、构l在基于数据库水平拆分的分布式架构中p装有PL/Proxy的PostgreSQL数据库服务器作为“水平拆分的中间件”,不参与存储实际的数据。p后台部署的多台PostgreSQL数据库服务器则用于存储实际的数据。客户端把SQL查询请求发送至“水平拆分的中间件”“水平拆分的中间件”根据SQL查询中水平拆分键的Hash值,把SQL分发至底层的数据库服务器进行处理。第34页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构非关系型分布式数据库 随着数据量越来越大,关系型数据库开始在高可扩展性、高并发性等方面暴露出一些难以克服的缺点,而Key-Value存储系统、文档
22、型数据库等非关系型(NoSQL)数据库,逐渐成为大数据时代下分布式数据库领域的主力。NoSQL数据库不使用SQL语句,不需要事先修改结构定义就可以自由添加字段。NoSQL数据库不支持事务,不保证严格的一致性,而由应用程序来控制数据一致性。因此,各种NoSQL数据库均对分布式部署都有较好的支持。第35页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l非关系型分布式数据库种类很多,大致可以分成列存储数据库、文档存储型数据库、Key-Value存储数据库和图数据库等。类型类型典型代表典型代表特点特点列存储数据库HBase按列存储数据,最大特点是方便存储结构化和半
23、结构化数据,方便进行数据压缩,对针对某一列或某几列的查询具有较大的I/O优势CassandraHyperTable文档存储型数据库MongoDB一般采用类似JSON的格式存储,存储内容是文档型的,便于对某些字段建立索引,实现关系数据库的某些功能CouchDBKey-Value存储数据库Redis可以通过关键字(Key)快速查询到其值(Value),不必考虑值的存储格式BerkeleyDBMemcacheDB图数据库Neo4j是图形关系的最佳存储,若使用传统关系型数据库存储,则性能低下,设计复杂第36页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构 列式存储
24、数据库不是按行来存储和处理数据,而是将列和行分割在多个节点,以此实现可扩展性。列式存储数据库的主要灵感来源于Google的BigTable,HBase就是按照BigTable的编程模型开发的。HBase数据库的数据最终存放在分布式文件系统HDFS上,从而保证了其强大的存储能力。通过数据处理模型MapReduce可以方便地处理分布式数据库中的数据,还可以为数据库中的数据提供强大的计算能力。HBase第37页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lHBase实际上就是一个稀疏、多维、持久化存储的映射表,采用行键(Rowkey)、列族(Column Fa
25、mily)、列限定符(Column Qualifier)和时间戳(Timestamp)进行索引,每个值都是未经解释的字节数组byte。lHBase的数据模型的相关概念p表p行p列族p列限定符p单元格p时间戳第38页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l表pHBase采用表来组织数据,表由行和列组成,列划分为若干个列族。l行p每个HBase表由若干行组成,每个行由行键(Rowkey)标识。行键被保存为字节数组,并按照行键的字典顺序排序数据。l列族p一个HBase表被分组成许多列族的集合,集合是基本的访问控制单元。列族需要在表创建时就定义好,数量不能
26、太多,且不要频繁修改。第39页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l列限定符p列限定符定义在列族下,列族里的数据通过列限定符定位。p列限定符不用事先定义,也不需要在不同行之间保持一致,每一行的列都可以是不同的,对于空值不进行保存,因此非常适合数据稀疏的情况。l单元格p在HBase中,通过行、列族和列限定符确定一个单元格(Cell)。p单元格中存储的数据没有数据类型,都是字节数组。p每个单元格可以保存多个版本的数据,每个版本对应一个不同的时间戳。l时间戳p每个单元格都保存着多个版本的数据,这些版本采用时间戳进行索引。时间戳越大的数据越新。第40页分
27、布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l下表是一张存储学生信息的HBase表InfoNameMajorEmail202001001zhangsanM202001002lisiM202001003wangwuM第41页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l在存储学生信息的HBase表中p学生的学号作为行键标识每个学生信息;pInfo为列族;pName、Major、Email是Info下的列限定符,用来保存学生的姓名、专业、电子邮箱;p输入学生姓名、专业和邮箱具体值的位置为单元格;p由于学号20200100
28、3的学生有两个电子邮箱,所以Email下的单元格有两个版本的值,这两个版本的值具有不同的时间戳,以此区分值的版本。第42页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构 MongoDB数据库是一个高性能、非关系型的开源文档型数据库,在当前分布式数据库产品使用中非常流行。MongoDB支持松散的数据结构,使用文档型的存储方式,可以存放比较复杂的数据类型,不需要固定的表结构也可以对指定字段建立索引,实现关系型数据库的功能。MongoDB第43页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l在MongoDB数据库中包含一个
29、或多个集合。p每个集合在数据库中都有一个标识名,集合中可以包含多个文档对象。p集合是以特定格式组织起来的文档对象的集合,这个数据格式称作BSON。l由于MongoDB的数据结构非常简单,所以它的读写性能也非常高。第44页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构MongoDB的集群部署模式主从复制(Master-Slave)模式;副本集(Replica Set)模式;分片(Sharding)模式。第45页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构主从复制模式l主从复制是MongoDB中最简单的数据库同步备份的集
30、群技术,其基本的设置方式是建立一个主节点(Primary)和一个或多个从节点(Secondary)。第46页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l主从复制模式架构第47页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l主从复制模式比单节点的可用性好很多,可用于备份、故障恢复、读扩展等。l集群中的主从节点均运行MongoDB实例,完成数据的存储、查询与修改操作。集群中的主节点l主从复制模式的集群中只能有一个主节点,主节点提供所有的增、删、查、改服务。集群中的从节点l从节点不提供任何服务,但可以通过设置使从节点提
31、供查询服务,减少主节点的压力。l由于主节点记录在主节点上的所有操作,而从节点需要定期轮询主节点获取这些操作,所以每个从节点需要知道主节点的地址,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。第48页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l主从复制的集群中p当主节点出现故障时,只能人工介入,指定新的主节点,从节点不会自动升级为主节点。p同时,主节点出现故障的这段时间内,该集群架构只能处于只读状态。因此,主从复制模式的集群目前并不推荐在生产环境中使用。第49页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库
32、的技术架构构副本集模式l在MongoDB中,创建一个副本集,通过复制功能可以将数据副本保存到多台服务器上。l副本保存功能可以保证当一台或多台服务器出错时,应用程序能正常运行,数据不会丢失。第50页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l副本集模式p副本集模式的集群拥有一个主节点和多个从节点,这一点与主从复制模式类似,且主从节点所负责的工作也类似。第51页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构副本集模式与主从复制模式的区别 当集群中主节点发生故障时,副本集模式可以自动投票,选举出新的主节点,并引导其余的从
33、节点连接新的主节点,而且这个过程对应用是透明的。MongoDB的副本集模式是自带故障转移功能的主从复制模式。第52页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lMongoDB副本集模式架构使用的是N个mongod节点构建的具备自动容错功能、自动恢复功能的高可用方案。副本集中的主节点l在副本集模式架构中,任何节点都可作为主节点,但为了维持数据一致性,只能有一个主节点。l主节点负责数据的写入和更新,并在更新数据的同时,将操作信息写入名为oplog的日志文件当中。l主节点还负责指定其他节点为从节点,并设置从节点数据的可读性,从而让从节点分担集群读取数据的压力
34、。副本集中的主节点l从节点会定时轮询读取oplog日志,并根据日志内容同步更新自身的数据,保持与主节点一致。第53页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l在一些场景中,用户还可以使用副本集来扩展读性能,客户端有能力发送读写操作给不同的服务器,也可以在不同的数据中心获取不同的副本来扩展分布式应用的能力。副本集中的仲裁节点l在副本集模式架构中还有一个额外的仲裁节点(不需要使用专用的硬件设备),负责在主节点发生故障时,参与选举新节点作为主节点。l副本集模式架构中的各节点会通过心跳信息来检测各自的健康状况,当主节点出现故障时,多个从节点会触发一次新的选举
35、操作,并选举其中一个作为新的主节点。为了保证选举票数不同,副本集模式架构的节点数需要保持为奇数。第54页l构建一个MongoDB的分片集群,需要3个重要的组件,分别是分片服务器(Shard Server)、配置服务器(Config Server)和路由服务器(Route Server)。分片模式分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构第55页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l分片模式架构第56页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构Shard Serve
36、r(分片服务器)每个Shard Server(分片服务器)都是一个mongod数据库实例,用于存储实际的数据分片。整个数据库集合分成多个分片存储在不同的Shard Server中。在实际生产中,一个Shard Server可由几台机器组成一个副本集承担,因此每个分片都是一个副本集。每个分片都拥有复制功能,能够在节点故障时自动进行故障转移。第57页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构Config Server(配置服务器)Config Server(配置服务器)是独立的一个mongod进程,在集群启动最开始时建立,用于保存集群和分片的元数据,包括:
37、全局集群配置,每个数据库、集合和特定范围数据的位置,一份保存了数据在分片之间进行迁移的历史消息的变更记录。第58页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构Route Server(路由服务器)Route Server(路由服务器)是独立的一个mongos进程,Route Server在集群中可作为路由使用,客户端由此接入,让整个集群看起来像是一个单一的数据库,并提供客户端应用程序和分片集群之间的接口。Route Server本身不保存数据,当启动时,从Config Server加载集群信息到缓存中,并将客户端的请求路由给每个Shard Server,
38、在各Shard Server返回结果后进行聚合并返回客户端。第59页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l在MongoDB的3种集群模式中p副本集模式已经替代了主从复制模式,可通过备份保证集群的可靠性,分片机制为集群提供了可扩展性,以满足海量数据的存储和分析的需求。p在实际生产环境中,副本集模式和分片模式是结合起来使用的,可满足实际应用场景中高可用性和高可扩展性的需求。第60页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构 Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的
39、存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。Redis是REmote Dictionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。同大多数脚本语言中的字典一样,Redis字典中的键值除了可以是字符串,还可以是其他数据类型。Redis第61页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lRedis数据库中的所有数据都存储在内存中p由于内存的读写速度远快于硬盘,所以Redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势。在一台普通的笔记本电脑上,Redi
40、s可以在一秒内读写超过十万个键值。第62页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lRedis数据库将数据存储在内存中也存在一些问题,例如,程序退出后内存中的数据会丢失。不过Redis提供了持久化的功能。RDB持久化可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。RDB持久化可以手动执行,也可以通过服务器配置选项定期执行。RDB持久化可以将某个时间点上的数据库状态保存到一个RDB文件(压缩的二进制文件)中,通过该文件可以还原生成RDB文件时的数据库状态。第63页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术
41、架构构Redis常见的部署模式主从模式;哨兵(Sentinel)模式;Redis集群模式。lRedis虽然是作为数据库开发的,但是由于其提供了丰富的功能,越来越多的人将其用作缓存、队列系统等。第64页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构主从模式l通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,所以如果这台服务器出现硬盘故障等问题,那么也会导致数据丢失。l为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他服务器也可以继
42、续提供服务。为此,Redis提供了复制(replication)功能,可以实现当一个数据库中的数据更新后,自动将更新的数据同步到其他数据库上。第65页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l实现复制功能的主从模式架构图第66页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l主从模式中有一个主服务器(Master)和多个从服务器(Slave)主从模式中的主服务器l主服务器可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从服务器。主从模式中的从服务器l从服务器可以连接其他从服务器,形成级联结构。l从服务器
43、一般是只读的,并接受主数据库同步过来的数据。第67页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l主从复制分为全量复制和增量复制l主从模式实现了数据备份,做到读写分离,提高服务器性能。如果主节点由于故障下线了,那么从节点因为没有主节点而同步中断,所以需要人工进行故障转移工作。全量复制一般发生在Slave初始化阶段,这个时候Slave需要将Master上的所有数据复制一份。增量复制发生在主从断线重连时,如主从服务器数据不一致,则将主服务器的新增数据复制到从服务器。第68页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构S
44、entinel模式lSentinel(哨兵)是Redis的高可用性解决方案。l由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。第69页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lSentinel模式架构图 pMaster(主服务器)pSlave(从服务器)pSentinel(哨兵)系统第70页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构l主从模式下主节
45、点故障需要人工介入,而Sentinel的加入提供了哨兵工具来实现自动化的系统监控和故障恢复功能。l哨兵的作用就是监控Redis系统的运行状况。哨兵的功能监控主服务器和从服务器是否正常运行;主服务器出现故障时自动将从服务器转换为主服务器。第71页lRedis集群模式是Redis提供的分布式数据库方案,其通过分片(Sharding)来进行数据共享,并提供复制和故障转移功能。l一个Redis集群通常由多个节点组成,最初每个节点都是独立的,需要将独立的节点连接起来才能形成可工作的集群。l任何两个Redis服务器节点之间都是相互连通的,客户端可以与任何一个节点相连接,以便访问集群中的任何一个节点,对其进
46、行存取和其他操作。Redis集群模式分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构第72页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lRedis集群模式架构第73页分布式数据库简介分布式数据库简介常见分布式数据库的技术架常见分布式数据库的技术架构构lRedis中的集群包含主节点和从节点两种类型的节点lRedis集群通过分片的方式保存数据库中的键值对p集群中的整个数据库被分为16 384个槽(slot),数据库的每个键都属于一个槽,集群中的每个节点可以处理1个或多个槽。主节点用于处理槽。从节点用于复制某个主节点,并在
47、被复制的主节点下线时,代替下线的主节点继续处理命令请求。第74页分布式数据库构建与配置实例分布式数据库构建与配置实例l目前在分布式数据库应用上,非结构化数据库HBase的应用非常广泛。l以HBase为例,分析非结构化数据库在构建时主要关注的配置项。第75页 单机模式是在一个虚拟机中启动所有的HBase进程,使用本地磁盘存储HBase数据,且不需要任何特定配置。数据将存储在当前用户配置的临时文件夹中,当HBase宕机后,删除此文件夹,将会删除HBase所有数据。因此这种方式比较简单,只适合运用在测试上。单机模式分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署lHBase可以运行在单机
48、模式、伪分布式模式和完全分布式模式这3种模式下,不同的模式提供的行为不同。第76页 在伪分布式模式下,HBase可以作为一个单节点运行的集群,但是运行的进程同完全分布式模式一样,需要启动Zookeeper进程、HMaster进程和RegionServer进程。伪分布模式分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署第77页 完全分布式模式将所有需要的服务(Zookeeper、Hadoop等)运行在多台服务器上,除了启动同伪分布式一样的进程外,还依赖HDFS进行数据存储。在实际生产环境中HBase通常部署为完全分布式模式,完全分布式模式HBase依赖HDFS存储数据,在磁盘容量上关
49、注较少,因此更加关注每个组件的内存容量。完全分布模式分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署第78页分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署lHBase的分布式架构图第79页分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署lHBase的分布式架构p使用Zookeeper进行HBase维护;p采用主HMaster、备HMaster结合的稳定结构;pRegionServer最少要在3个节点部署,保证当一个部署RegionServer的节点宕机时可进行更好的故障转移。第80页分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署lHBase部
50、署时,各组件的约束和原则。组件名称组件名称建议最小内存(以建议最小内存(以实际环境为准)实际环境为准)依赖关系依赖关系组件业务部署原则组件业务部署原则HM(HMaster)1GB依赖于HDFS、Zookeeper、Yarn分别部署在2个控制节点上,主备配置RS(RegionServer)6GB部署在DataNode所在控制节点TS(ThriftServer)1GB每个集群部署3个在不同的控制节点上,若ThriftServer访问HBase延时不能满足用户需求的时候,则可以部署多个TS在控制节点或数据节点上第81页分布式数据库构建与配置实例分布式数据库构建与配置实例部署部署HMaster HMa