YMatrix 架构

YMatrix 采用了 Share-nothing 并行架构。其核心特点是各个节点独立运行,不共享内存或存储,节点之间仅通过网络通信进行协作。这种架构广泛应用于分布式数据库、大数据系统和高并发 Web 服务中。

基础架构

一个完整的 YMatrix 生产集群包括:

  • 主节点 x 1
  • 备用主节点 x 1
  • 数据节点 x N (每个数据节点上运行多个主实例和镜像实例)

基础架构

主节点

  • 建立与管理客户端会话连接 :作为应用访问数据库的入口,负责接收并管理客户端的连接请求
  • 解析 SQL 语句并生成查询计划 :对客户端提交的 SQL 语句进行解析,生成分布式执行计划(Query Plan)
  • 分发查询计划并监控执行 :将生成的查询计划分发给所有数据节点(Segment)执行,同时监控查询的执行过程
  • 收集结果并返回客户端 :汇总各数据节点执行后的结果,最终返回给客户端
  • 存储数据字典 :不存储业务数据,仅存储系统元数据(数据字典),包括所有数据元素的定义及属性集合

备用主节点

  • 数据备份与一致性保障 :Mirror 实例与对应 Primary 实例保持完全一致的数据和功能,正常运行时不参与计算,仅同步主实例的数据变更
  • 故障自动切换 :当 Primary 实例或其所在主机发生故障(如宕机、掉电等)时,Mirror 实例会被自动提升为新的 Primary 实例,接替原 Primary 提供数据写入和业务查询服务,保障集群服务连续性
  • 分布隔离部署 :生产环境中,主实例与镜像实例通常部署在不同物理主机上,避免因单主机故障导致主实例和镜像实例同时失效

数据节点

数据节点是 YMatrix 进行数据存储、计算的核心单元。数据表的数据会根据配置打散分布至各个主实例(Primary)中,每个主实例独立持有与其他主实例完全不重合的数据分片。当执行查询时,主节点(Master)生成查询计划后分发至所有主实例并行执行,通过并行计算提升查询响应速度

主实例(Primary): 一个节点上可以有多个独立的主实例

  • 数据存储 :数据表的数据会根据配置打散分布至各个主实例中,每个主实例独立持有与其他主实例完全不重合的数据分片
  • 分布式执行查询 :负责执行主节点下发的查询计划,通过并行计算提升查询响应速度
  • 数据处理核心 :是数据节点实现高性能的关键,大量能力相同的主实例间平均分布数据和工作负载,使所有主实例能同时为一个任务工作并同步完成

镜像实例 (Mirror): 一个节点上可以有多个独立的镜像实例

  • 保持与主实例(Primary)数据一致:镜像实例与主实例保持完全一致的数据和功能。
  • 故障时接替主实例提供服务:当主实例发生故障(如所在机器掉电、实例故障等)时,镜像实例会被自动提升为主实例,接替其提供数据存储和计算服务,保障集群服务不中断。生产环境中,主实例与镜像实例通常分布在不同主机上,以避免单节点故障影响

查询执行

查询经过优化器生成执行计划,然后通过计算引擎、存储引擎读取相应数据,并进行计算,最终得到查询结果。

优化器

YMatrix 提供 2 种优化器:

  • PQO(Postgres Query Optimizer): 以 PostgreSQL 原生优化器为基础的优化器,适用与事务(TP )场景以及绝大多数分析(AP)型场景。
  • ORCA:是基于 Cascades 框架的优化器,能够在处理大型复杂查询时生成更合理的计划,降低系统资源占用,提升查询表现。

存储引擎

YMatrix 提供 2 种存储引擎:

  • HEAP: 继承自 PostgreSQL 的经典行存引擎,适合事务(TP)型场景,具有较好的写入、更新、删除的性能表现。
  • MARS3: YMatrix 自研的高性能行列混合存储引擎,在分析(AP)、时序场景中有着出色的性能表现,并能提高较好的压缩比。

计算引擎

YMatrix 提供了经过经过全面向量化改造的向量化执行引擎。在大数据量场景下,能够大幅提升查询速度。

高可用性

YMatrix 通过镜像机制保障集群的高可用性,同时还提供了异地灾备功能,保障极端条件下能够通过备用集群提供服务。

镜像机制

启用镜像功能后,每个主实例都会对应一个镜像实例,镜像实例与主实例会保持完全一致的数据和功能。在生产环境中,我们会保持主实例与对应的镜像主实例分布在不同的主机上。

  • 当集群正常工作时,镜像实例不参与计算,仅保持与主实例数据完全一致。
  • 当主实例故障,或主实例所在的机器发生掉电等意外情况时,对应的镜像实例就会接替发生故障的主实例提供服务,从而保障数据服务不中断。 镜像机制

状态管理

ALOHA(Advanced Least Operation High Availability) 是全新设计的集群状态管理服务。
YMatrix 集群中,会随机选取奇数个节点构建分布式 ETCD 集群 ,用以保存节点、实例状态;当故障(节点宕机/实例故障等)发生时,系统可根据集群状态进行调度,实现主备自动切换、故障自动转移等功能,保障集群的高可用性。 etcd

异地灾备

YMatrix 提供异地灾备集群部署方案。一旦主集群侧发生故障,可切换至备份集群,由备份集群提供正常服务,此时该集群的使用方式与正常 YMatrix 数据库集群使用方式保持一致。

灾备架构