开源分布式数据库RadonDB的核心技

编者按:RadonDB是一款将分布式一致性协议Raft与MySQL相结合的新一代分布式关系型数据库,兼具NewSQL和MySQL两类数据库的优点,年5月10日,RadonDB在第九届中国数据库技术大会上正式宣布开源。

RadonDB的设计者张雁飞

本文,RadonDB的设计者张雁飞将从架构、执行、高可用等角度,结合开源代码为大家深度解析RadonDB的核心技术与实现。

为什么叫RadonDB

RadonDB是一个开源的分布式数据库。为什么叫RadonDB呢?

RadonDB中的Radon出自元素周期表,是一种惰性气体,名字叫做氡。因其化学性质比较稳定,所以我们就以此来命名了这款数据库产品。

RadonDB包含两个部分Radon和Xenon,并不是一个简单的数据库中间件。其中,Radon类似于一个数据库中间件,而Xenon是一个高可用的MySQL管理集群工具。

RadonDB架构

上图是RadonDB的整个架构图,其中最上面一层是Radon,一个分布式的SQL层,负责SQL的解析和转发。这一层就是大家说的数据库中间件,它会根据用户请求将SQL语句生成分布式执行计划,并推到下面的存储层。

下面这一层是Xenon,一个高可用的MySQL管理工具。在这一层的每个虚线框里都是一“主”两“从”的MySQL,都通过Xenon进行管理。

Xenon其实是一个无中心化的管理工具,当主节点挂了之后,会使用Raft协议进行选主,选出新的“主”之后,再根据MySQLBinlog这些机制进行数据同步,从而使新的主节点继续对外服务。

分布式SQL

RadonDB的主要功能是对用户SQL生成分布式计划以及执行器并行执行,当执行器下发到存储层以后,进行ORDERBY、LIMIT、GROUPBY等二次运算。

Radon支持集群模式,所以基本上是无状态的。当其中一个节点挂了之后,其他节点可以很快的迁移过去,保证Radon这一层的高可用。

如果从代码层面来看Radon的具体工作流程,用户SQL到达Radon之后,query.go文件会对SQL进行语法树的生成,生成之后根据SQL的类型进行处理。

首先,根据语法树生成分布式的执行计划。分布式的执行计划是根据路由表查找每个具体的数据分布在哪些后端,然后生成具体的子句。

分布式执行计划生成之后,就运行Insertexecutor文件,并下发到相应节点去执行。

以上,就是RadonDB中Radon这一层的基本工作机制。

RadonDB的一些技术细节

Radon这一层还有一个比较重要的功能——分布式事务。Radon分布式事务是基于MySQL原生事务——XA事务来进行的。

MySQL的XA事务在执行时可分为五个阶段:第一个阶段是XASTART,第二个阶段是SQL执行,第三个阶段是XAEND,第四个阶段是XAPREPARE,这个阶段其实数据已经通过Binlog传到了备库,即使主库挂了,重建之后事务仍然处于XAPREPARE状态,我们可以认为数据不会丢失。最后一个阶段是XACOMMIT。

RadonDB对这五个阶段进行了分工,共分成begin、execute、







































北京看白癜风哪间医院效果最好
北京看白癜风的最好医院



转载请注明:http://www.xcqg58.com/jbjj/8488.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了