怎么解析RadonDB分布式数据库核心技术与实现

61次阅读
没有评论

共计 2190 个字符,预计需要花费 6 分钟才能阅读完成。

怎么解析 RadonDB 分布式数据库核心技术与实现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

摘要:随着数据规模的逐步扩大,存储和运维成本逐渐增加,企业对数据库的要求也逐渐提高。有人认为以 MySQL 为代表的传统数据库已经过时,不能满足数据爆炸时代企业的要求; 以 NoSQL 为代表的新型数据库仍有局限性,不具备 ACID 特性,很难满足企业对核心业务数据的严苛需求。此次分享的 RadonDB 是一款将分布式一致性协议 Raft 与 MySQL 相结合的新一代分布式关系型数据库。RadonDB 的最大特点是结合两类数据库的优点,让 DBA 无缝地从传统的、单机时代的 MySQL 过渡到云原生的、无限扩展的分布式关系型数据库。

RadonDB 架构图

RadonDB 定位是新一代分布式关系数据库,在今天这个云计算快速发展的时代,我们更愿意称它是一个云原生数据库,云原生数据库的天然属性是分布式、可扩展、高可用、强一致。下面的 MyNewSQL,是因为我们把 MySQL 和 NewSQL 融合起来,来满足以上的几个特性。

当中一个请求到来之后,SQL 层会把这个请求解析成分布式的执行计划,然后,把这个 SQL 在后端的存储层并行的执行。而且它还会进行二次运算,就是 Orderby/limit/groupby/aggration/join…. 等等。它还是一个无中心化的设计,部署起来比较方便,容易扩展,这是整个 SQL 层的一个设计。

Storage Nodes

再看存储层,存储层是 RadonDB 里一个比较新颖的设计,也是我们定位为在新一代分布式数据库的一个原因。

第一个挑战,怎么快速选主?

第二个挑战,选出新的主后,数据怎么快速地回放?

第三个挑战,数据回放完,数据怎么保证不丢失? RadonDB 是怎么解决的?

对于第一个挑战,我们使用了 Raft 协议,大家要知道,Raft 协议主要干两件事,第一个就是选主,第二个是数据同步。在 RadonDB 里只使用 Raft 进行选主,当主挂掉之后,我们使用 Raft 选出新的主,然后数据同步。我们是基于 MySQL 原生的 FGTID 机制和并行复制这些特性进行快速回放。

保证数据不丢失,我们还是基于 MySQL,并使用了 MySQL 的 Semi-Sync 机制,当用户写到主副本时,首先,它要到达一个从副本,从副本收到之后,再反馈给客户端,这样就时刻地保证了一个从副本与主副本的数据完全一致,从节点被选入新的主节点,保证了这个数据不丢失。

当选入新的主节点之后,RadonDB 的 Log 并行复制还是基于 MySQL 的机制,并行复制,快速地回放,这就等于实现了把 Raft 选主和 Log 并行复制结合。原生态 Raft 协议里这两个,Raft Log 并行回放是比较困难的,但是,我们结合 MySQL 就很好地完成了。而且,这三个副本是一个无中心化的设计,只要我们可达,它的部署比较灵活。

扩容

RadonDB 的底层是全部基于 MySQL,所以在扩容的时候也比较方便,因为 MySQL 有一套工具和机制。

大家可以看到上图,其实 MySQL Xa 机制总共有 5 个步骤,但是到 RadonDB 里,我们进行了抽象,就是进行了封装。我们实现了快照的隔离级别,实现了 Snapshot Isolation 事务隔离级别。

Binlog

另外,RadonDB 支持 Binlog,大家可能认为一个分布式数据库,就是里面需要放一些海量的数据,但数据一旦进入你的分布数据库,怎么能出来? 就比较麻烦,因此,RadonDB 提供一个 Binlog 机制,就是让数据能快速的同步处理。

OLTP + OLAP

比如说,我们有一个 OLAP 的集群,可设置为 RadonDB 的 Binlog,Binlog 是实时地更新,这就完成了一个异构化的过程和数据流出,而且是实时的。

大家也看到,在刚才的架构图里,右下角有一个计算节点,其实,我们的计算节点就是通过这种机制跟 RadonDB 的数据进行同步。这样,就把 OLTP 和 OLAP 结合了起来,当用户一个比较复杂的查询到达 RadonDB 之后,RadonDB 会根据 SQL 的模式发到 TP 节点还是 AP 节点,前端的用户是没有感知的,这就做到了一些资源的隔离。当然了,这也有一个缺点,数据可能是两份,但目前,我们是通过异构化、列式存储来进行的,高压缩做这种机制。

审计日志

另外,RadonDB 还提供了一些审计日志这些功能,为了方便大家对业务进行一些审计,而且审计机制还可以定位一些慢查询 SQL,因为分布式的数据库,节点比较多,所以定位一个 SQL 会比较复杂,有了审计日志,大家可以定位一些慢的 SQL。

备份和恢复

RadonDB 提供了一整套备份和恢复的工具,可以让用户快速地把数据流进去,流出来,比原生的要快很多。

性能

mysql show processlist;

第一条命是,MySQL 常用的,表示用户的链接到 RadonDB 的状态。

mysql show txnz;

第二个命令是,分布式事务在哪个阶段执行,耗时多少,这个都可以很清楚地看到。

mysql show queryz;

最后一个命令,具体哪些子句落到哪些节点,甚至耗时多少,比如说,某个节点有一些问题,都可以从这个上面反映出来,比较灵活。

看完上述内容,你们掌握怎么解析 RadonDB 分布式数据库核心技术与实现的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计2190字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)