概览 ---- OushuDB 是一款云原生架构的分布式数据库,支持高并发,高吞吐,高性能的弹性计算。 支持多主节点,多虚拟计算集群和多虚拟存储集群。任一层级节点都可以水平扩展,存储与计算完全分离。图1给出了一个典型的 OushuDB 集群的主要组件。 .. image:: ../_static/oushudb50-arch-1.png 图1. OushuDB 6.0 体系架构 在 OushuDB Main 节点内部有如下几个重要组件:资源管理器,查询解析器(Parser/Analyzer),优化器,容错服务,事务管理,权限安全,调度服务。在查询执行时,针对一个查询,弹性执行引擎会启动多个虚拟 Segment 同时执行查询,节点间数据交换通过 Interconnect(高速互联网络)进行。如果一个查询启动了 1000 个虚拟 Segment,意思是这个查询被均匀的分成了 1000 份任务,这些任务会并行执行。所以说虚拟 Segment 数其实表明了查询的并行度。查询的并行度是由弹性执行引擎根据查询大小以及当前资源使用情况动态确定的。这些组件的作用以及它们之间的关系如下: * 资源管理器:资源管理器负责整个集群的资源管理。资源管理模块能够感知集群健康状态,动态识别集群节点。协调并发查询之间的资源分配,避免查询之间相互影响,提升系统的可用性。 * 查询解析器:负责解析查询,并检查语法及语义。最终生成查询树传递给优化器。 * 分析器:针对语法树结构进行检查,对语法树进行数据补充或者必要的优化改进,在 OushuDB 中分析器和查询解析器是合并的。 * 优化器:负责接受查询树,生成查询计划。针对一个查询,可能有数亿个可能的等价的查询计划,但执行性能差别很大。优化器的作用是找出优化的查询计划。 * 容错服务:负责检测哪些节点可用,哪些节点不可用。不可用的机器会被排除出资源池。 * 事务管理: 提供分布式事务的控制能力,OushuDB 能够提供基于多版本的事务隔离机制。 * 权限安全:负责控制用户的行为,对用户权限进行约束,保障数据库访问安全。 * 调度器:优化器优化完查询以后,查询派遣器派遣计划到各个节点上执行,并协调查询执行的整个过程。查询派遣器是整个并行系统的粘合剂。 虚拟计算集群 Virtual Compute Cluster (VC) 是 OushuDB 的计算层,是由多个计算节点组成的。在每个计算节点上会运行一个 OushuDB Segment。Segment 实现了 OushuDB 的计算,在执行查询时,会在资源容器中启动多个查询执行器(QE),实现对数据的并行处理。计算层支持全新的 SIMD 向量化执行引擎,相比于传统的MPP数据库,能够实现数量级级别的查询性能提升。 计算层可以被划分为多个虚拟集群,每个虚拟集群相互独立,并且支持动态弹性扩展。当一个节点加入虚拟集群时,只要将其加入到某个虚拟集群,就能够接受未来的查询了。 在每个虚拟集群下节点可以分属于不同的虚拟集群实例,这些实例能够很方便的提供多租户支持。 计算层的集群虚拟化能够在物理上进行计算资源隔离,高效隔离执行错误,快速容错,增强计算弹性,集群内的数据共享也解决了数据孤岛问题。 虚拟存储集群 Virtual Storage Cluster (VSC) 是 OushuDB 的存储层,由存储节点组成的多个可插拔存储集群组成。 OushuDB 支持可插拔存储,包括 Magma、HDFS 并且支持用户对存储集群按照不同的特性与用途进行集群分组, 这些不同的存储集群是 OushuDB 中的虚拟存储集群。存储集群虚拟化可以支持更大规模的存储,支持多租户的存储资源隔离,并且可以提供全球级别的数据分布以及更完善的容灾级别。 Magma 是 OushuDB 自研的存储模式,是一种高可用的支持分布式事务的高性能分布式存储,支持存储与计算分离架构。 在虚拟存储集群中,主要分两类:元数据集群与数据集群。元数据集群依托于 Magma 存储,是 OushuDB 用来管理元数据的集群,相比于传统的集中式元数据管理,元数据集群能够极大的提高元数据管理上限,提升数据库容错能力。而用户数据存储则到数据集群中。