北冰洋以北 发表于 2024-6-13 13:25:48

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

cantian引擎源码结构

   ​专栏内容:


[*] 参天引擎内核架构
本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的环境下对故障容灾的支持。
[*] 手写数据库toadb
本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,碰到的问题等,让各人能跟上并且可以一起开发,让每个需要的人成为到场者。
本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学习。
    ​开源贡献:


[*]toadb开源库
个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以发奋图强;地势坤,君子以厚德载物.


前言

国内数据库的发展风起云涌,每年的各种大会都会听到好消息,今年除了数据库本身的各种技术演进之外,华为发布了参天引擎,而且是做为数据库的一种基座情势,也就是所有数据库可以在参天引擎基础上,构建形成多主分布式架构的数据库系统,这也就是它叫引擎的目的。
本专栏就来具体聊一聊参天引擎内部架构,以及如何适配参天引擎。
概述

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

gitee地址
源码目次结构

源代码主要在pkg/src目次下:
$ ll
total 44
drwxr-xr-x.2 senllang develops 4096 Dec9 14:03 cluster
-rw-r--r--.1 senllang develops792 Dec9 14:03 CMakeLists.txt
drwxr-xr-x.4 senllang develops   94 Dec9 14:03 cmd
drwxr-xr-x.4 senllang develops   56 Dec9 14:03 cms
drwxr-xr-x.3 senllang develops 8192 Dec9 14:03 common
drwxr-xr-x.3 senllang develops   39 Dec9 14:03 driver
drwxr-xr-x.2 senllang develops 4096 Dec9 14:03 gstbox
drwxr-xr-x. 18 senllang develops 4096 Dec9 14:03 kernel
drwxr-xr-x.2 senllang develops 4096 Dec9 14:03 mec
drwxr-xr-x.2 senllang develops 4096 Dec9 14:03 protocol
drwxr-xr-x.2 senllang develops   66 Dec9 14:03 rc
drwxr-xr-x.3 senllang develops 4096 Dec9 14:03 server
drwxr-xr-x.4 senllang develops 4096 Dec9 14:03 tse
drwxr-xr-x.2 senllang develops   60 Dec9 14:03 upgrade_check
drwxr-xr-x.4 senllang develops   52 Dec9 14:03 utils
drwxr-xr-x.2 senllang develops   72 Dec9 14:03 version

如上图,可以看到以模块命名的目次。
主要模块介绍

主要有几个模块:
cantianLib

可以做为一个单独的节点存在,如数据节点,大概和谐节点等。一样平常做为数据节点,也就是管理数据的存储,它仅仅是管理和谐的功能,实现数据和装备由CMS节点负责。
cantianlib是数据库引擎与CMS节点之间的桥梁,它会处置处罚各种SQL实行场景下对数据的请求,以及对于事件日记的记录。
源码目次

cantianLib 代码位于
./pkg/src/server/
系统架构

https://img-blog.csdnimg.cn/direct/b1d3aa400bca4279b2e414cffaac8a4e.png#pic_center
它也是多线程架构实现,它的前端是DB agent,通过监听来自它的网络请求,比如登陆数据库,实行DDL,DML等,将它们转换为对数据的请求,再发往CMS。主要包罗几个服务:


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

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

CMS模块的源码位于
./pkg/src/cms/cms
系统架构

它的代码架构如下图所示
https://img-blog.csdnimg.cn/direct/221338c69a5547309cefe535fc8a4c74.png#pic_center
模块主要有三个阶段:


[*]初始化;包罗设置加载和初始化,各服务的初始化,以及服务线程的启动,装备和网络的启动;
[*]运行阶段;主要处置处罚来自message的变乱,对消息进行处置处罚响应;这里要主要差别资源,锁的请求分配;
[*]退出;在cms退出时,清理和落盘数据;
总结

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


[*]一是数据库计算联合的agent,这里并没有看到开源,它主要是在数据库计算时,需要的数据,向数据节点申请开释;
[*]二是cantianLib,也就是数据节点,这部分维护数据库相干的数据,如数据的缓存,数据库的元数据等,在多节点间进行同步,另有一些多节点需要和谐的业务,如备份,checkpoint,事件提交等;
[*]第三部分是CMS,也就是物理存储部分,将数据时行分散到存储装备,管理数据分布,在请求数据时可以从物理装备读写数据;
当然对应的物理存储装备也算第四部分,可以对应NFS,也可以是DBstor,这部分的优化也没有开源。
末端

   非常感谢各人的支持,在欣赏的同时别忘了留下您宝贵的批评,如果以为值得鼓励,请点赞,收藏,我会更加努力!
作者邮箱:study@senllang.onaliyun.com
如有错误大概疏漏欢迎指出,互相学习。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【参天引擎】华为参天引擎内核架构源码架构,多线程服务,数据节点管理,多