?专栏内容:
参天引擎内核架构
本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。手写数据库toadb
本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。
本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学习。
?开源贡献:
国内数据库的发展如火如荼,每年的各种大会都会听到好消息,今年除了数据库本身的各种技术演进之外,华为发布了参天引擎,而且是做为数据库的一种基座形式,也就是所有数据库可以在参天引擎基础上,构建形成多主分布式架构的数据库系统,这也就是它叫引擎的目的。
本专栏就来详细聊一聊参天引擎内部架构,以及如何适配参天引擎。
cantian引擎核心代码已经基本开源,也让爱好者们跃跃欲试,今天给大家分享一下参天引擎的源码结构。
源代码主要在pkg/src目录下:
[senllang@hatch src]$ ll
total 44
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 cluster
-rw-r--r--. 1 senllang develops 792 Dec 9 14:03 CMakeLists.txt
drwxr-xr-x. 4 senllang develops 94 Dec 9 14:03 cmd
drwxr-xr-x. 4 senllang develops 56 Dec 9 14:03 cms
drwxr-xr-x. 3 senllang develops 8192 Dec 9 14:03 common
drwxr-xr-x. 3 senllang develops 39 Dec 9 14:03 driver
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 gstbox
drwxr-xr-x. 18 senllang develops 4096 Dec 9 14:03 kernel
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 mec
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 protocol
drwxr-xr-x. 2 senllang develops 66 Dec 9 14:03 rc
drwxr-xr-x. 3 senllang develops 4096 Dec 9 14:03 server
drwxr-xr-x. 4 senllang develops 4096 Dec 9 14:03 tse
drwxr-xr-x. 2 senllang develops 60 Dec 9 14:03 upgrade_check
drwxr-xr-x. 4 senllang develops 52 Dec 9 14:03 utils
drwxr-xr-x. 2 senllang develops 72 Dec 9 14:03 version
如上图,可以看到以模块命名的目录。
主要有几个模块:
可以做为一个单独的节点存在,如数据节点,或者协调节点等。一般做为数据节点,也就是管理数据的存储,它仅仅是管理协调的功能,实现数据和设备由CMS节点负责。
cantianlib是数据库引擎与CMS节点之间的桥梁,它会处理各种SQL执行场景下对数据的请求,以及对于事务日志的记录。
cantianLib 代码位于
./pkg/src/server/
它也是多线程架构实现,它的前端是DB agent,通过监听来自它的网络请求,比如登陆数据库,执行DDL,DML等,将它们转换为对数据的请求,再发往CMS。主要包括几个服务:
CMS是一个核心服务,主要对分布式资源,分布式锁进行调度管理,还有存储设备进行管理。整体是一个多线程的架构,通过网络与前端进行交互,响应资源的请求,并从存储文件系统中进行获取。
CMS模块的源码位于
./pkg/src/cms/cms
它的代码架构如下图所示
模块主要有三个阶段:
总得来看,参天引擎分为三大块,
当然对应的物理存储设备也算第四部分,可以对应NFS,也可以是DBstor,这部分的优化也没有开源。
非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!
作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。