小工具知识网

当前位置: 首页 > 行业知识 > 【参天引擎】华为参天引擎内核架构源码架构,多线程服务,数据节点管理,多节点间元数据管理

行业知识

【参天引擎】华为参天引擎内核架构源码架构,多线程服务,数据节点管理,多节点间元数据管理

2026-11-03 03:53:57 来源:互联网转载

cantian引擎源码结构

​专���内容:

  • 参天引擎内核架构

    本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。

  • 手写数据库toadb

    本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。

    本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学习。

    ​开源贡献:

    • toadb开源库

      个人主页:我的主页

      管理社区:开源数据库

      座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

      文章目录

      • cantian引擎源码结构
      • 前言
      • 概述
      • 源码地址
      • 源码目录结构
      • 主要模块介绍
        • cantianLib
          • 源码目录
          • 系统架构
          • CMS模块
            • 源码目录
            • 系统架构
            • 总结
            • 结尾

              前言

              国内数据库的发展如火如荼,每年的各种大会都会听到好消息,今年除了数据库本身的各种技术演进之外,华为发布了参天引擎,而且是做为数据库的一种基座形式,也就是所有数据库可以在参天引擎基础上,构建形成多主分布式架构的数据库系统,这也就是它叫引擎的目的。

              本专栏就来详细聊一聊参天引擎内部架构,以及如何适配参天引擎。

              概述

              cantian引擎核心代码已经基本开源,也让爱好者们跃跃欲试,今天给大家分享一下参天引擎的源码结构。

              源码地址

              gitee地址

              源码目录结构

              源代码主要在pkg/src目录下:

              [senllang@hatch src]$ lltotal 44drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 cluster-rw-r--r--.  1 senllang develops  792 Dec  9 14:03 CMakeLists.txtdrwxr-xr-x.  4 senllang develops   94 Dec  9 14:03 cmddrwxr-xr-x.  4 senllang develops   56 Dec  9 14:03 cmsdrwxr-xr-x.  3 senllang develops 8192 Dec  9 14:03 commondrwxr-xr-x.  3 senllang develops   39 Dec  9 14:03 driverdrwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 gstboxdrwxr-xr-x. 18 senllang develops 4096 Dec  9 14:03 kerneldrwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 mecdrwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 protocoldrwxr-xr-x.  2 senllang develops   66 Dec  9 14:03 rcdrwxr-xr-x.  3 senllang develops 4096 Dec  9 14:03 serverdrwxr-xr-x.  4 senllang develops 4096 Dec  9 14:03 tsedrwxr-xr-x.  2 senllang develops   60 Dec  9 14:03 upgrade_checkdrwxr-xr-x.  4 senllang develops   52 Dec  9 14:03 utilsdrwxr-xr-x.  2 senllang develops   72 Dec  9 14:03 version

              如上图,可以看到以模块命名的目录。

              主要模块介绍

              主要有几个模块:

              cantianLib

              可以做为一个单独的节点存在,如数据节点,或者协调节点等。一般做为数据节点,也就是管理数据的存储,它仅仅是管理协调的功能,实现数据和设备由CMS节点负责。

              cantianlib是数据库引擎与CMS节点之间的桥梁,它会处理各种SQL执行场景下对数据的请求,以及对于事务日志的记录。

              源码目录

              cantianLib 代码位于

              ./pkg/src/server/

              系统架构

              它也是多线程架构实现,它的前端是DB agent,通过监听来自它的网络请求,比如登陆数据库,执行DDL,DML等,将它们转换为对数据的请求,再发往CMS。主要包括几个服务:

              • kernel服务,主要用于数据和锁的请求处理,并且负责buffer管理,catalog元数据管理等;
              • DB后台服务,主要处理来自于DB agent的请求,将SQL场景转换为数据请求;通过将session绑定到线程服务中,可以处理数据并发访问;

                CMS模块

                CMS是一个核心服务,主要对分布式资源,分布式锁进行调度管理,还有存储设备进行管理。整体是一个多线程的架构,通过网络与前端进行交互,响应资源的请求,并从存储文件系统中进行获取。

                源码目录

                CMS模块的源码位于

                ./pkg/src/cms/cms

                系统架构

                它的代码架构如下图所示

                模块主要有三个阶段:

                • 初始化;包括配置加载和初始化,各服务的初始化,以及服务线程的启动,设备和网络的启动;
                • 运行阶段;主要处理来自message的事件,对消息进行处理响应;这里要主要不同资源,锁的请求分配;
                • 退出;在cms退出时,清理和落盘数据;

                  总结

                  总得来看,参天引擎分为三大块,

                  • 一是数据库计算结合的agent,这里并没有看到开源,它主要是在数据库计算时,需要的数据,向数据节点申请释放;
                  • 二是cantianLib,也就是数据节点,这部分维护数据库相关的数据,如数据的缓存,数据库的元数据等,在多节点间进行同步,还有一些多节点需要协调的业务,如备份,checkpoint,事务提交等;
                  • 第三部分是CMS,也就是物理存储部分,将数据时行分散到存储设备,管理数据分布,在请求数据时可以从物理设备读写数据;

                    当然对应的物理存储设备也算第四部分,可以对应NFS,也可以是DBstor,这部分的优化也没有开源。

                    结尾

                    非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

                    作者邮箱:study@senllang.onaliyun.com

                    如有错误或者疏漏欢迎指出,互相学习。

上一篇:如何让Obsidian实现电脑端和安卓端同步

下一篇:宝塔面板教程,轻松实现站点远程访问,IP访问站点不求人!