产品架构
📄字数 1.5K
👁️阅读量 加载中...
软件架构
虚谷数据库采用自研分布式通信协议构建底层架构,通过创新性的节点对等处理机制,打破传统主从架构限制,让所有节点具备同等的通信与协作能力;同时支持通过角色灵活配置,按需实现单机、双机高可用或分布式集群等多样化部署形态。在进程设计上,采用单进程多线程架构,将数据存储、SQL 解析、事务管理等核心功能模块封装为独立线程组,各线程组通过内部通信机制高效协同;并提供精细化的角色配置能力,可根据节点定位灵活开关功能模块,在保障架构轻量化的同时,满足不同场景下的资源调度需求。其核心特性包括:
- 支持事务ACID特性,可同时满足OLTP(在线事务处理)和OLAP(在线分析处理)场景需求,并能高效处理混合型业务负载。
- 具备数据强一致性和高可用性保障,所有节点均支持高性能事务处理,系统吞吐能力出色。
- 支持在线动态扩展与负载均衡,可灵活应对业务增长需求。
- 提供完善的安全保障机制,确保数据安全可靠。
- 高度兼容Oracle、MySQL、PostgreSQL等主流数据库的SQL语法,迁移成本低。

无共享架构
虚谷数据库是原生的分布式架构数据库,采用 Shared-Nothing(完全无共享)架构进行集群设计,物理资源无共享,数据切片存储,如图2所示。

集群架构
在整个集群中,按照功能职责,将服务端划分为四类角色:主控管理角色、工作计算角色、存储管理角色、变更收集角色,如图3所示。

一台物理服务器可部署一个或多个数据库角色。
- 主控管理角色:主要用于集群管理、心跳检测、全局锁仲裁(检测死锁并解锁)等,不参与用户请求响应。
- 工作计算角色:用于接收响应用户请求,完成任务的规划、执行、结果返回。
- 存储管理角色:用于存储数据库数据,实现数据的持久化、存储高可用、数据快速定位。
- 变更收集角色:用于收集集群数据变更信息,记载信息粒度达到事务级。
提供存算融合部署技术,实现在一台物理服务器上同时部署多个数据库角色,让一个节点的数据库进程执行多个数据库角色能力,保证所有节点都可以提供读写服务。
采用中心管理-对等处理的架构设计,所有工作节点均可接收用户请求,无需访问特定服务端,用户连接任一工作节点,均可访问其权限内可访问的所有数据。所以,当工作节点负载过高时,可通过增加工作节点分担负载压力,提高并发用户数,如图4所示。

数据存储节点不以逻辑表和业务维度进行数据切割,是以切分物理CHUNK的方式进行数据存储,数据通过系统内部算法进行分片处理并存储到各个存储节点。数据存储以8MB进行自动切片,主副版本依据内部存储落盘规则,将所有存储打散均衡分布到每一个存储节点中。当任意存储节点服务停止,会立即通知管理节点。管理节点则选择服务停止节点上存储的主版本数据对应的任一数据副本,将其切换为主版本,然后通知主版本向其余未停止服务的存储节点复制还原丢失的数据版本,提供数据访问服务,避免单点故障导致数据库业务中断,如图5所示。

当集群存储容量或I/O能力不足时,可按需增加存储节点,存储节点增加后集群数据自动进行数据迁移均衡。在扩展集群存储容量的同时,扩展节点作为工作节点也可分担一部分访问压力,为集群提供更高的存取性能。
变更收集节点可按需进行部署,该类角色节点提供集群变更收集功能,提供事务级粒度的变更收集。用户可通过系统内置包解析变更信息,解析后可提供字段数据输出或SQL输出,可用于同构或异构表的数据恢复与同步。
支持将集群全局的增量数据按事务提交时间进行日志记录,通过此方法,数据库用户可以按时间回溯访问具体的增量日志记录。