DBScale大数据处理软件

一、DBScale 基本介绍

1. 产品介绍:

  • • DBScale 是基于MySQL开源数据库通讯协议的分布式数据处理软件, 其基本功能是相同的,设计初衷就是为了解决大数据量、高负载下的数据分布问题

  • • 该产品运行于客户端程序和数据库服务器之间,通过截取客户端程序发往数据库服务器的信息,按照需要进行修改等分析,然后转发给相应的数据库服务器;再从服务端接受返回的数据,转发给对应的客户端程序。

    • 对于客户端程序而言,就像是真正的数据库服务器,而没有必要去知道真正的数据存储位置,这就极大地提高了数据库系统的扩展性:当由于业务负载增大而增加数据库服务器时,只需要修改产品的配置信息,而没有必要重新部署客户端程序。

    • 除了对数据分布进行处理外,该产品还可以对各种故障进行处理,比如网络故障、后台数据库服务器不可用等,保证整个业务系统的稳定运行。同时,对业务负载进行一定的统计分析,定期保存这些状态报告到文件,供管理人员分析。

2. 产品架构:

DBScale的架构如图1所示:

  • • 从整个应用体系架构上来说,DBScale位于应用服务器与数据库服务器之间。当应用服务器发送数据请求时,首先发送到DBScale端,此时DBScale会对数据请求进行解析,对请求进行重构,然后发送到相应的数据库服务器上;数据库服务器对请求进行处理,将处理结果返回,DBScale会对结果集进行合以及再处理,返回给应用服务器最终的处理结果。

    • DBScale 支持基于MySQL 主从复制的读写分离。写操作将会发往主从复制的master节点,读操作将会发往主从复制的slave节点,在主从复制的数据源中可以有多个slave节点。

    • DBScale 支持库级别的分布式部署,将不同的库部署到不同的数据库实例上,在应用程序访问DBscale时,它会把请求转发给相应的数据库所在的实例;同时还增加了表和行级别的分布式部署,即可以将同一个库中的不同的表部署到不同的实例上,可以将一张大表按行拆分成多个分片,将不同的分片部署到不同的实例上,在应用程序访问DBScale时,它会根据请求中的表、行信息,分析出这条请求需要访问哪个或哪些实例,并自动合并处理后端实例返回的结果集合,保证执行结果的正确性。

    • 同时 DBScale 支持SQL语句的分布式并发执行,例如当有分区表的查询或修改操作时,DBScale会将该操作同时发给这个分区表所在的所有实例,每个实例将同时执行这条语句。

二、DBScale 功能特性

1、读写分离

DBScale 支持对应用的读写分离,该功能基于 Master-Slave 复制环境,主节点写,从节点读。从节点可以任意扩展,因此提高了数据库系统处理能力,可以根据负载情况进行扩展。

2、负载均衡

DBScale 基于 Master-Slave 复制环境提供读操作的负载均衡,读操作在从节点间进行负载均衡; DBScale 基于数据分布式部署提供写操作的负载均衡,写操作按照数据分布规制被分发到不同的物理机器上。

3、不同级别的数据分布式部署

DBScale 提供了 3 个级别的数据分布式部署: schema 级别的分布式部署、table 级别的分布式部署、table 内行数据的 sharding。这 3 种分布式部署方式可以同时使用,将数据以分布式的形式部署到多台物理机器上,通过并行计算极大地提高集群的吞吐能力。

4、Failover

DBScale 支持自动的故障处理:

  • • SQL 语句执行的故障重试

  • • 自动屏蔽故障节点和延迟过高的 slave

    • 故障无缝切换,对应用完全透明

    • 故障节点恢复后,自动将其加入集群

5、Replication 环境中的高可用处理

通常主从复制拓扑中只能有一个主节点,所以存在单点问题。DBScale 通过指定从节点是否可以作为复制主节点完美地解决了这个问题。当主节点出现故障时,DBScale 会从所有可以做主节点的从节点中选择一个数据最完整的作为新的主节点,并自动调整复制拓扑关系中的其他节点从新主节点复制数 据。当故障主节点恢复之后,DBScale 会自动将它作为新主节点的从节点加入集群。

DBScale 支持故障切换后的自动回切,当原主节点作为从节点加入集群之后,DBScale会在集群数据稳定负载可控的情况下,自动将集群的工作主级诶但切换回原主节点,即配置文件主节点。

6、分布式事务和分布式锁

• DBScale支持1阶段分布式事务

• DBScale支持基于XA的2阶段分布式事务

• DBScale支持分布式的锁,如LOCK TABLES 语句

7、SQL语句支持与扩展

• 支持SQL92标准的SQL语法解析

• 提供DBScale自定义的SQL语句扩展来进行集群状态获取与管理

8、DBScale 的高可用

DBScale 本身支持第三方 HA 软件,如 GreatTurbo HA

三、DBScale功能模块

1、数据分析系统

(1)概述

当客户端请求到达DBScale时,DBScale会首先对请求的SQL语句进行语法词法解析。然后按照解析出的语句特点、关键字段信息、以及配置的数据分布规则,对语句进行必要的重写、拆分,生成相应的执行节点并组装分布式执行计划。最后按照分布式执行计划进行SQL分布式调度执行。

(2)SQL语句解析

DBScale自主研发了基于flex和bison的SQL92词法和语法解析模块。当DBScale接收到一条SQL语句时,首先调用词法解析器,解析这条语句中词法是否正确,属于可以被DBScale正确执行的语句。如果解析不正确,会直接返回错误,停止语句的执行;如果解析通过,将SQL语句转换成DBScale内部处理的SQL对象数据结构,该结构包含了这条语句的类型、语法结构、关键字段值等,以便后续生成执行计划.

(3)执行计划生成

生成执行计划是在DBScale对SQL分析过程时一个非常重要的步骤,它制定了一个分布式的执行方案。该方案主要包含了如何转发和如何进行结果集合并处理。

DBScale根据语句解析模块生成的SQL对象数据结构以及后端数据分布式部署的元数据信息,生成一棵由一个或多个的执行节点组成的执行树。执行树的叶子节点确定如何转发,每个非叶节点对应一个数据操作,例如排序、分组、limit等。

2、数据查询系统

(1)概述

DBScale的数据查询系统主要的功能是将SQL语句正确且高效地分配到集群中的数据库节点进行执行。

数据查询系统高效的基础是对数据进行分布式部署。将数据库端的数据按照某些特定级别进行分布式部署,可以大幅提高数据查询、修改的效率。

(2)数据分布式部署

为了实现简洁高效的数据分布,DBScale引入了data-server,data-source和data-space的概念。data-server是后端数据库的物理描述,如:ip和端口;data-source是DBScale对一组data-server进行组织和管理的描述,如:后端有3个server,关系是1主两从,按照读写分离进行管理;data-space是DBScale对data-source的作用域描述,如:这个data-source响应db1这个数据库的请求;

DBScale通过data-space、data-source和data-server,将海量数据划分为不同的数据域,并根据相应的业务需求为每个数据域配置一组分布式的数据库实例,最终实现数据的分布式分布和管理。

(3)数据定位策略

对于分区表,DBScale通过配置特定的分区data-source来实现行级别的数据分布式部署。该data-source中包含了分区策略和物理分布信息。

目前支持的分区的方式包括hash,list,range 。

hash 分区指分区方式是基于hash算法来实现的,这里使用的是字符串 hash 算法,DBScale 将分区列的字符串值通过字符串 hash 算法转成一个整数,然后对该整数按照分片数取模,最终得出分区表的某一个行应该分布在哪一个分片。

range 分区指分区方式是基于range算法来实现的。首先要选取某一个列,该列的取值可以按照一定的范围来划分,比如数值3在0-10之间,15在10-20之间。根据该值的不同,将行数据划分到不同的分区上。目前只支持整数或关键字 MAXVALUE 作为 range 的上限。

list分区是基于list算法来实现的。该分区方式是定义几个list,属于某个list的数据保存到对应的分区上。

(4)数据读写分离

在DBScale中配置读写分离datasource来完成对数据库读和写的操作分开。

rwsplit data-source 是一个读写分离的数据源。所谓的读写分离就是查询操作 SQL,如 select、show、desc,会发送读节点,而写操作 SQL,如 update、insert、delete,会发送的写节点。它会包含 1 个用于写的 data-server 和多个用于读的 data-server。多个读的 data-server 直接进行负载 均衡。

3、数据处理系统

(1)概述

该模块最主要完成的功能为,当数据库服务器将处理完的结果集返回给DBScale时,DBScale需要对结果集进行合并、去重等进一步处理,然后将最终处理结果返回给客户端。

(2)结果集的处理

DBScale会按照分布式执行计划对各个节点返回的结果集进行合并处理,并保证结果的正确性。比如某个排序请求,涉及两个节点的数据,DBScale把请求分发到对应的两个节点、然后分别接收各个节点的结果集,并根据执行计划对两个结果集进行合并排序,以生成正确的结果集,最后将结果集返回给客户端。在整个结果集处理过程中,DBScale使用流式窗口处理技术。后端节点返回的数据流按照时间窗口分批处理,即保证了响应速度,也避免因缓存巨大的结果集造成计算资源的浪费。

公司介绍 | 联系我们 | 法律声明 ©2007-2012 万里开源 版权所有 京ICP备06057874