【创新项目探索】CANTIAN引擎:打造分布式数据库存储架构

openEuler2023-10-11CANTIAN引擎

CANTIAN引擎介绍

CANTIAN引擎是一个能让普通的单机数据库变成具有类似Oracle RAC能力数据库的中间件。CANTIAN引擎采用了创新的存算分离架构,通过分布式缓存技术/事务MVCC机制/多主集群高可用等关键技术,使能分布式数据库,打造多读多写的分布式数据库存储架构。目前已经在openEuler社区开源。

仓库地址:https://gitee.com/openeuler/cantian

CANTIAN引擎架构

CANTIAN引擎,主要由四部分组成:

CANTIAN Connector:负责支持CANTIAN引擎作为分布式数据库的存储引擎插件,支持DDL、DML、事务等数据库功能,兼容分布式数据库的生态应用。

CMS: Cluster manager server,负责集群管理。

多读多写模块:CANTIAN引擎是基于共享存储的多写集群,各个节点在架构上对等,多读多写模块确保从任何一个节点都可以对数据库做DDL/DML/DCL等操作。任何一个节点做的修改,在满足隔离级别的要求下,其他节点都可以看到。所有计算节点共享和读写存储上同一份用户数据。

备份恢复模块:将数据库下的所有表导出成SQL语句或者表格文本,逻辑恢复时再将文本格式的逻辑数据文件导入到数据库中。

CANTIAN引擎功能

1、CANTIAN引擎是基于共享存储的多写集群,各个节点在架构上对等,从任何一个节点都可以对数据库做DDL/DML/DCL等操作。

2、作为分布式数据库的存储引擎插件,支持DDL、DML、事务等数据库功能,兼容分布式数据库的生态应用。

3、集群管理,包括集群成员状态维护、集群异常处理、仲裁等。

4、备份恢复,支将数据库下的所有表导出成SQL语句或者表格文本,逻辑恢复时再将文本格式的逻辑数据文件导入到数据库中。

应用场景

CANTIAN引擎基于共享存储,实现分布式数据库存算分离、多读多写架构创新。部署CANTIAN引擎后,性能10倍提升,无需分库分表,节点故障30秒内完成Failover,TCO降低30%+。

CANTIAN引擎主要优化

1、多读多写优化,整个多写集群通过如下集群组件把单机操作扩展到多节点集群:

  • 资源分布管理服务:管理分布式元数据信息,包括page/lock等资源在集群范围下的owner、权限、并发控制等信息;

  • 资源缓存融合模块:管理集群范围内page的并发控制,包括page读写的并发控制,全局page读写请求的处理,page owner/只读副本的管理,最新版本page在集群范围内传输和老版本的失效等操作;

  • 锁资源分布管理:管理集群范围内lock的并发控制,把spinlock, latch等锁资源扩展到整个集群;

2、集群管理,集群管理服务监控本节点资源和全局资源状态,并且节点间的集群管理服务之间通过心跳保持连接,能支持CANTIAN进程故障、节点故障、网络故障、存储链路故障、存储故障的检测与处理。

3、生态适配,CANTIAN引擎通过CANTIAN Connector和分布式数据库对接,CANTIAN Connector插件接收到MySQL SQL引擎调用存储引擎插件执行的请求,通过通信模块以及对接层逻辑将请求转到CANTIAN引擎内核,CANTIAN Connector插件与CANTIAN引擎通信模块设计为统一接口,动态可替换机制。

4、备份恢复,支将数据库下的所有表导出成SQL语句或者表格文本,逻辑恢复时再将文本格式的逻辑数据文件导入到数据库中。

后续规划

本项目已开源在openEuler社区,CANTIAN引擎会积极地支持新功能,后续规划如下:

1、双活容灾方案

2、提供MySQL日志解析接口

3、入湖工具

4、多租接口

5、DTS数据库迁移工具

6、运维工具集成

欢迎感兴趣的朋友们参与进来,代码地址:

https://gitee.com/openeuler/cantian


【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。