【创新项目探索】CANTIAN引擎:打造分布式数据库存储架构
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、运维工具集成
欢迎感兴趣的朋友们参与进来,代码地址: