0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析openEuler Cantian引擎

openEuler 来源:openEuler 2023-09-13 17:25 次阅读

在前阵子的DTCC 2023上,华为团队与万里开源联合发布了一个Mysql的共享存储并发读写的解决方案,其核心技术就是Cantian引擎。Cantian是一个能让普通的单机数据库变成具有类似Oracle RAC能力数据库的中间件,目前支持innodb,今后将支持更多的数据库存储引擎。目前已经在openEuler社区开源。

仓库地址:

https://gitee.com/openeuler/cantian

0113582c-5216-11ee-a25d-92fbcf53809c.png

上图是Cantian的一个逻辑架构图,基于企业级集中式存储,Cantian引擎在MySQL的SQL引擎与innodb存储引擎之间构建了一个中间层,这个中间层可以模拟innodb的行为,因此MySQL的SQL引擎可以十分方便地与之对接。因为innodb和事务控制是紧密相关的,因此Cantian里除了包含MySQL的存储层外还包含了MySQL的事务管理层。

01330488-5216-11ee-a25d-92fbcf53809c.png

在MySQL中引入Cantian引擎的好处是,加入这个中间层后,MySQL就具备了多节点并发读写的能力,摇身一变就变成了MySQL RAC了。上面这张图能够让大家更好地理解参天引擎。

在Cantian中,undo/temp/log虽然也存储在共享存储中,不过是实例独占式访问的,不在集群层面共享,平时只能在实例内读写。只有故障恢复时,集群中的其他实例才能读取。控制文件、system/users等表空间是可以在集群中并发读写的。

那么Cantian是如何实现多实例并发读写的呢?在本文第一张图中有一个Global Cache的示意,在多个实例之间通过缓冲区融合技术实现了多实例一致性访问。

0159460c-5216-11ee-a25d-92fbcf53809c.png

Cantian实现全局缓冲的算法与Oracle 9I RAC有些类似,根据算法,可以确定某个缓冲块的Master实例,当某实例拥有current block的时候可以直接访问,否则需要通过Master咨询该block是否在某个实例的缓冲中。Master通知该块的持有者将其发送给需要的数据库实例。

017d1ff0-5216-11ee-a25d-92fbcf53809c.png

大家看看上面这张Oracle 9i RAC Cache fusion的示意图,是不是有点和上面的图十分相似的感觉。不过Cantian在缓冲区融合算法的实现上和Oracle Cache Fusion有较大的差别,并且由于UNDO的访问特性限制,当MVCC需要一个经过多个实例多次变更的PRE-IMAGE的时候,在Cantian引擎里的组装过程有些复杂,需要一级级的向前传递,最终才能完成获取。

01a44328-5216-11ee-a25d-92fbcf53809c.png

这种模式的数据访问如果发生在一个多实例环境下,Cantian引擎可能存在一定的性能问题。如果能够实现在一个实例完成多次构建,则效率要高很多,只不过这可能会让分布式锁管理更为复杂。目前Cantian实现的Cache Fusion算法还只是第一代,随着该项目的发展,我想这方面的算法会进一步优化。

01cac2f0-5216-11ee-a25d-92fbcf53809c.png

目前Cantian已经实现了与MySQL的对接。MySQL SQL 层与 CTC 通过 MySQL 预定义的 hanlder/handlerton 接口进行交互,CTC插件接收到 MySQL SQL 引擎调用存储引擎插件执行的请求,通过共享内存通信模块以及对接层逻辑将请求转到 Cantian 引擎内核,CTC 插件与 Cantian 引擎通信模块设计为统一接口,动态可替换机制,支持单进程接口直接绑定、双进程共享内存通信两种部署模式。一个 Cantian 引擎进程可以对接一至多个 MySQL 实例,不同实例间通过不同的共享内存通道与 Cantian 引擎进行通信,CTC 插件会维护实例的启停时集群资源的分配与释放。MySQL 元数据仍通过 InnoDB 引擎存储与维护,但 MySQL 对元数据的修改操作会通过 CTC 与 Cantian 引擎广播到集群中存活的其他 MySQL 实例以保证集群的元数据一致性。广播过程中远端 MySQL 实例会使用对应权限的代理用户执行修改操作,从而保证集群执行语句时的用户权限的一致性。

020f21ca-5216-11ee-a25d-92fbcf53809c.png

在高可用方面,Cantian引擎加持下的MySQL数据库无需主从架构的故障切换,应用可以在0数据丢失的情况下实现秒钟级切换。这对于关键业务来说至关重要。

023778fa-5216-11ee-a25d-92fbcf53809c.png

Cantian引擎中的另外一个重要组件是DBStor,DBStor 通过直接提供数据库 Log 和 Page 的存储接口,将数据库业务的存储逻辑卸载,实现计算和存储的分离。DBStor 采用 c/s 架构,客户端部署在计算侧,提供给计算节点 Log和 Page 存储接口;服务端部署在存储节点,实现 Log 和 Page 的存储能力;客户端和服务端基于 TCP/RDMA 来进行通信。

02547964-5216-11ee-a25d-92fbcf53809c.png

DBStor私有接口适配其他友商的存储需要一定的适配工作。项目组也会陆续开展一些国内外存储系统的适配工作。这是一个生态构建的过程,需要通过社区生态来共同工作才能完成。在数据库存储引擎方面,Cantian目前已经适配了innodb,PostgreSQL存储引擎也在开发中,我想依托开源社区的力量,会有越来越多的数据库适配Cantian。

最后再分析一下Cantian的应用场景,我首先想到的是做数据库一体机。Cantian可以让一个单机集中式数据库快速地变成一个高性能、多读多写或者强一致性读写分离的数据库系统。如果在后端用高性能分布式存储替代集中式存储,还可以形成一个全软的解决方案。只不过目前Cantian引擎要想获得高性能,还必须依赖高速CMS网络和高性能低延时的集中式存储系统,因此全软的方案还不是目前的选项,不过作为一个开源项目,随着Cantian引擎的迭代发展,一切都是可能的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储系统
    +关注

    关注

    2

    文章

    382

    浏览量

    40705
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63371
  • 引擎
    +关注

    关注

    1

    文章

    344

    浏览量

    22278
  • MySQL
    +关注

    关注

    1

    文章

    775

    浏览量

    26005

原文标题:【创新项目探索】浅析openEuler Cantian引擎

文章出处:【微信号:openEulercommunity,微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何完成openEuler面向RK3399开发板的移植?

    如何制作openEuler的rootfs.img?如何完成openEuler面向RK3399开发板的移植?
    发表于 03-04 07:42

    欧拉开源操作系统(openEuler, 简称“欧拉”)简介

    ,创新分布式、实时加速引擎和基础服务,结合边缘、嵌入式领域竞争力探索,打造全场景协同的面向数字基础设施的开源操作系统。 业务价值:openEuler实现了从代码开源到产业生态的快速构建,为政府、银行、电信
    发表于 06-17 10:52

    openEuler 社区 2022 年 6 月运作报告

    openEuler社区运作报告2022年6月去年11月,openEuler社区捐赠给开放原子开源基金会后,openEuler在技术、商业、生态、开源建设等各方面取得显著发展。本月,我们来聊聊
    发表于 07-08 14:37

    openEuler 社区完成首批顾问专家聘用,共同为社区的发展​贡献力量

    openEuler 在2021年11月捐赠给开放原子开源基金会后,在生态构建、技术创新和商业落地全面加速,取得了跨越式进展。作为一个支持多样性计算和持续推动技术创新的操作系统开源社区
    发表于 07-29 10:11

    使用 Canonical MAAS 部署 openEuler 测试

    云、HPC 场景时,使用MAAS 是减少运维成本的最佳选择之一。在本文的测试 中,展示了如何通过Packer 为 MAAS 构建 openEuler 映像并验证MAAS部署,可使用的临时解决方法以及如
    发表于 08-24 11:43

    openEuler 资源利用率提升之道 03:rubik 混部引擎简介

    ,为了保障在线业务服务质量,防范关键业务 QoS 违规,rubik 混部引擎规划提供多重保障以提升工作负载的运行效率及稳定性。第一道防线 - 基于内核特性的资源隔离抢占机制openEuler Kernel
    发表于 09-01 11:00

    一次 Rancher 和 openEuler 的上云之旅

    社区建设 Cloud Image。对于云原生场景,很显然这是一项非常重要的基础工作。部署 Rancher 以及下游集群openEuler 虽然内置了 Docker 引擎,但最终我们仍然决定不使
    发表于 09-29 10:57

    RISC-V SIG 推出基于openEuler 的下游发行版 Eulaceura

    近日,openEuler RISC-V SIG 推出了一款基于 openEuler 的发行版-Eulaceura。这是首个基于 openEuler 开发的 RISC-V 架构的发行版,给
    发表于 12-22 15:52

    openEuler 加入 RISC-V Landscape,相关技术已完成生态适配

    开源欧拉 openEuler 已加入 RISC-V Landscape。此次加入 RISC-V Landscape, 意味着 openEuler 在对 RISC-V 架构的生态适配
    发表于 03-16 15:10

    欧拉(openEuler)麒麟信安专场:麒麟信安为openEuler社区赋能

    欧拉(openEuler)麒麟信安专场:麒麟信安为openEuler社区赋能,具备独立维护、演进能力开放、协作,共享
    的头像 发表于 11-09 16:16 1510次阅读
    欧拉(<b class='flag-5'>openEuler</b>)麒麟信安专场:麒麟信安为<b class='flag-5'>openEuler</b>社区赋能

    欧拉(openEuler)Summit 2021:基于AI的操作系统性能调优引擎

     欧拉(openEuler)Summit 2021直播会上,重点介绍基于AI的操作系统性能调优引擎
    的头像 发表于 11-10 10:46 1858次阅读
    欧拉(<b class='flag-5'>openEuler</b>)Summit 2021:基于AI的操作系统性能调优<b class='flag-5'>引擎</b>

    openEuler Summit开发者峰会:基于AI的操作系统性能调优引擎A-Tune

    openEuler Summit开发者峰会:基于AI的操作系统性能调优引擎A-Tune
    的头像 发表于 11-10 10:51 1361次阅读
    <b class='flag-5'>openEuler</b> Summit开发者峰会:基于AI的操作系统性能调优<b class='flag-5'>引擎</b>A-Tune

    欧拉(openEuler)Summit 2021:欧拉demo分享——A-Tune

    欧拉(openEuler)Summit 2021上,关于A-Tune:基于AI的操作系统性能调优引擎案例分享。
    的头像 发表于 11-10 10:18 1217次阅读
    欧拉(<b class='flag-5'>openEuler</b>)Summit 2021:欧拉demo分享——A-Tune

    openEuler Call for X 计划”正式启动

    openEuler最具价值专家, openEuler Valuable Professional,是openEuler社区颁发给技术专家的一项荣誉认证,以此表彰他们热衷实践、乐于分享的布道精神,为
    的头像 发表于 06-21 14:36 404次阅读
    “<b class='flag-5'>openEuler</b> Call for X 计划”正式启动

    华为宣布CANTIAN引擎开源并发布分布式存储全闪新品

    8月25日,以“在一起,共迎新机遇”为主题的第三届华为数据存储用户精英论坛在西宁召开。在此次大会上, 华为正式宣布开源CANTIAN引擎,并推出分布式存储全闪新品。 同时,华为向与会客户汇报
    的头像 发表于 08-25 18:45 449次阅读
    华为宣布<b class='flag-5'>CANTIAN</b><b class='flag-5'>引擎</b>开源并发布分布式存储全闪新品