一款可能解放DBA的分布式数据库Radoiyiou.com

2019年03月12日 来源:

一款可能解放DBA的分布式数据库RadonDB的体验之旅

作者:李丹 来源:公众号 HULK一线技术杂谈

本文是来自逻辑思维DBA李丹在RadonDB体验会后的分享笔记。凭借在行业内多年的数据库开发和运维经验,李丹在DBA运维、扩容以及高可用等方面,给出了针对分布式数据库RadonDB的客观评价。

上上周收到吴炳锡老师和青云QingCloud的邀请,参加了即将开源的基于MySQL的一款分布式数据库RadonDB的技术交流会。由于本人对于各大公有云厂商底层技术的实现比较感兴趣,所以对此次技术交流会有一些心得并做了总结。接下来就给大家分享参与RadonDB的交流的一些心得。

背景介绍

在详细介绍RadonDB体验心得之前,我们先来介绍一下当下DBA在使用传统MySQL主从或主从+proxy架构模式下依然存在的一些棘手问题。

1。 基于第三方插件(通常MHA)的快速切换与数据一致性保证;

2。 单实例海量数据分库分表后的group、sort、limit及join查询;

3。 分库分片后各实例数据不均及数据增长后二次拆分问题;

4。 分库分片后跨实例操作的分布式事物保证问题。

RadonDB架构

总体上来说RadonDB相对优雅的解决了上述问题,不过要清楚知道RadonDB如何处理上述问题我们得首先了解一下它的整体架构。

眼看上去除了多出了计算节点(Compute Nodes),整个架构和一般的分库分表中间件+MySQL没什么太大的区别。但实际上里面的很多设计细节很值得玩味,具体如下:

SQL节点(SQL Node)

SQL节点(SQL Node),负责一些如分布式执行计划和分布式事物协调的工作,因此一般的DML操作都具备了分布式事物保证,不过DDL没有提供类似的保障。

当然DDL操作一般变更频率不高,同时小概率失败(可手动重试)也并不影响业务,DBA在使用上进行控制即可。需要提醒的是为了保障分布式事物Snapshot隔离级别,SQL节点只有一个对外提供写,其他节点只读。

更重要的一点是每个SQL节点存储了一份表(table)存储分布的元数据,借助元数据信息可以很方便的进行后端存储节点的数据迁移操作(有点类似mongo的balance功能)。SQL节点之间会相互进行通信交换元数据的变化信息,通信协议类似于redis cluster 采用的当前流行的gossip协议。

存储节点(Storage Nodes)

存储节点(Storage Nodes),实际上直接使用的是MySQL5.7(其实这样的道理许多人懂也兼容5.6+GTID)的默认三个节点的N组(N=1)主从集群结构。不过这里引入了与mongo类似的raft(分布式一致性协议)协议来进行自动高可用切换。RadonDB的raft协议实现主要是基于GTID日志,因此RadonDB要求必须开启GTID复制模式,同时为了提供金融场景下的数据强一致性保障,RadonDB要求采用强semi-sync+永不超时机制。在实际的使用中DBA自己可以依据不同的场景进行不同的配置。

计算节点(Compute Nodes)

计算节点(Compute Nodes),这个设计让人眼前一亮,之前也设计过分布式proxy Atlas,当时一直为高并发查询与跨物理节点的复杂查询并存时的性能问题头疼不已。实际上SQL节点会对请求SQL进行解析,并决定哪些是复杂SQL,然后将对应请求路由至计算节点。

需要注意的是计算节点存储的是所有Storage Nodes集群的全量数据,并且内部通过基于binlog订阅-消费模式来对数据进行增量更新。值得一提的是计算节点采用插件模式,也就意味着计算节点不一定非要是MySQL,也可以是其他类型的DB。当然计算节点因为存储的是全量数据,虽然当前采用压缩存储不过也有较大的存储空间代价。

数据均衡

介绍完RadonDB整体架构,个人对它的表存储设计和数据均衡印象深刻。通常的关系型数据库的拆分或者常见的开源proxy一般都是没有解决不同分片数据均衡的问题,而RadonDB提供了一个新的解决思路,表存储策略具体见下图:

从上图可以看到在RadonDB里创建一个以id作为分片key的表t1,表t1会默认被自动切分为32张小表,它们均匀的分散在多个存储节点上。每个小表都有一个自己的哈希区间,用于标识自己所能存储的HASH范围。通过交流发现,实际上这种拆分方式借鉴的就是redis cluster slot的存储分配策略。这样切分的好处就是即使一张100GB+的逻辑表,实际上在集群节点的存储会被切分成很小的多张表,这对于维护和数据迁移还是比较优雅的。

接下来我们看一下RadonDB是如何进行扩容,或者说数据均衡的,具体迁移过程也可以用如下图来说明:

绿色框里表示添加一个分片后数据的分布情况,实际上RadonDB会通过基于Go语言自研的shifter工具(源码尚未开源,以工具方式提供使用)进行并发式全量+增量的同步,当然为了尽量减少迁移的数据量,RadonDB会优先以小表进行迁移。不过这里有一个问题需要注意,在迁移路由切换那一刻,原表需要一个只读状态,这期间对于业务来说可能会有一个瞬间的小抖动。

总结

总体来说,RadonDB实际可以理解为是一个中间件,并结合了当前流行的分布式一致性协议(raft)和通信协议(gossip)以及MySQL实现的一套分布式解决方案。

它解决了DBA一直面临的关系型数据库分布式事物、分布式模式下数据均衡、高可用切换、数据一致性及分布式模型下复杂查询性能等一系列问题。

不过在体验过程中也发现一些可以改进的点及实际使用建议。具体如下:

1。 分片扩容数据迁移采用的是全量+增量的方式,是否可以类似mongo的那样直接在分片之间进行数据同步而无需dump,这样的实现可能会更优雅些。

2。 一般可能会推荐RadonDB采用vip模式来实现对业务的透明访问,不过对于一般中小型企业并没有稳定可靠的lvs服务并且vip管理也是一个问题,这里建议使用服务发现或配置管理方案如开源的consul或360开源的qconf。

3。 部分自建私有云平台可能因为之前对MySQL 5.5或5.6的技术定制高度依赖升级到5.7或后续的8.0难度较高,RadonDB可能是一个很好的契机或许可以一试。

RadonDB现已开源,希望RadonDB能给大家在MySQL运维上带来不一样的体验,敬请期待吧~

关注ITBear科技资讯公众号(itbear365 ),每天推送你感兴趣的科技内容。

声明:本文仅为传递更多络信息,不代表ITBear观点和意见,仅供参考了解,

更不能作为投资使用依据。

2010年杭州金融A轮企业
2012年东莞E轮企业
互联网不良资产处置市场的春天到了吗
相关文章
  • 素食之——双丝炒鸡蛋的做法
    素食之——双丝炒鸡蛋的做法

    素食之——双丝炒鸡蛋的做法蓬松的嫩鸡蛋,搭配脆甜的土豆,胡萝卜,加上香菜的独特香气,制造出清淡,宁静韵味口感。给孩子拌饭,营养丰富,口感适宜,虽然外观谈不上漂亮,但是朴素的味道还是非常好吃的~难度:切墩(初级) 主料鸡蛋6个土豆半个胡萝卜...

  • 中新网中央密集调整多名省部级高官
    中新网中央密集调整多名省部级高官

    资料图:陈全国资料图:秦光荣中新8月27日电 综合消息,中国省级党委换届大幕即将开启,连日来,中央密集调整多省区省部级高官。此轮人事变动中,各省之间交流、互动成为看点。在省部级官员调整的同时,司局级干部京官空降也在有序进行,中央和地方互动不...

  • 自治区食药监局出台餐饮服务食品安全日常监督管理巡查制度
    自治区食药监局出台餐饮服务食品安全日常监督管理巡查制度

    自治区食药监局出台《餐饮服务食品安全日常监督管理巡查制度》近日,为规范餐饮服务食品安全日常监督检查行为,推进餐饮服务食品安全日常监管巡查工作标准化、制度化。自治区食品药品监督管理局制定出台了《自治区食品药品监督管理局餐饮服务食品安全日...

  • 广州一女子身穿球衣凌晨坠楼疑与看世界杯有关
    广州一女子身穿球衣凌晨坠楼疑与看世界杯有关

    来源:广州上午,广州市天河区员村一横路兰亭上东小区一名女子从高层坠楼。附近有保安称女子当时身着球衣,怀疑与世界杯有关。目前,警方正在进一步调查中。来到事发现场天河区员村一横路7号,见到在一家名叫王老二烟酒店的门口,警方已拉起警戒线,并用...

  • 小私募3月规模飙涨1500万公私募仓位已
    小私募3月规模飙涨1500万公私募仓位已

    “从7月到现在不到三个月,管理资金就由上半年的1000万增加到了2500万。”一家本地小型私募基金执行总经理刘先生说。股市回暖,一些亿元级的大户以及公私募基金却在此时嗅到了机会。统计显示,今年前7个月,两市共增加1128户过亿资产账户,仅六七月两个月,...

  • 泰执政党力挺英拉参加大选将其定为头号候选人
    泰执政党力挺英拉参加大选将其定为头号候选人

    报道称,为泰党在该党9日举行的高级成员会议上达成一致,决定将英拉定为该党在下届大选中的头号候选人。普拉彭称,英拉在其现任期内显示出强有力的领导力,做出决断,保护了泰国的民主和大众,如果为泰党赢得下届大选,为泰党就将再次提名英拉任泰国总理...