公众号
关注微信公众号
移动端
创头条企服版APP

玩转阿里云:如何使用DRDS突破单个数据库瓶颈

8291

业务场景

在实际工作中,由于企业的业务量会逐渐增多,企业后端的单个关系型数据库经常会面临如下问题:


存储容量瓶颈问题:大量的历史订单存储在某个数据库,可能导致数据库存储容量达到瓶颈,通常我们可以通过在一台机器下面挂载多块磁盘,达到10TB/20TB/30TB的容量。然后再使用一个MySQL实例支持,但数据备份,数据管理(DDL),数据检索与更新性能(DML)都会出现大幅下滑。


访问容量瓶颈问题:当大量客户的访问请求发送到单个数据库,数据库响应连接的进程数达到瓶颈,导致数据库无法响应客户端的请求,影响业务的正常处理。虽然我们可以通过增加CPU/内存/磁盘/网络等硬件缓解这种情况,但是廉价X86 PC做到几十核目前就是顶配了,内存几百G也无法容纳几十T数据的各种索引,磁盘IO毕竟比内存还是差一些,通用网络也就到万兆,本质上是无法避免数据库单机瓶颈的。


容灾问题:单机总存在着0或者1的问题,所以做热备冷备,以求出故障时能够快速切换,但是数据库并不是应用,数据库存在状态,存在事务,真正宕机切换对于核心业务来说真的是一个很艰难的决定。


对于阿里云的客户,可以使用分布式数据库DRDS服务解决如上问题:

  1. 利用DRDS的分库分表功能分散单个数据库的整体访问压力;

  2. 由于DRDS的数据水平拆分对用户使用有一定的限制,所以DRDS还提供更低业务侵入性的读写分离功能;

  3. DRDS自动继承快速扩展能力,稳定性监控,资源隔离,灾备恢复等特性。


总体来说,解决数据库容量问题的产品都是基于share anything或者share nothing架构:

share anything 架构使用共享内存、共享存储、infinibind、高配物理机结合出一个全功能数据库。这样的架构能够满足大部分用户的数据容量需求,但是本质上如同小型机+数据库,因此,这样的架构仍然会碰到容量天花板,并且相当昂贵;

share nothing架构使用多个廉价PC做数据拆分,服务和数据存储节点之间并不完全同步状态。这样的架构能够做到数据和访问容量通过简单堆叠机器进行扩展。DRDS就是利用这种架构,通过SQL引擎和自助管控系统尽可能降低用户对分布式细节的感知。


DRDS基本介绍

分布式数据库DRDS目前定位成一个中间件,在业务应用和RDS之间,本身不承担数据存储,只负责解决分布式情况下的数据操作、执行、数据处理等功能。DRDS的使用与MySQL非常接近,建实例、建库、建表、执行SQL操作,唯一比较大的区别在于水平拆分模式下,DRDS对于建表需要指定拆分字段(类似索引),只要带上这个拆分字段,SQL只会在部分数据分片上执行,从而加速SQL执行速度。


“分库分表”在DRDS里面是一个很重要的概念。DRDS在后端将数据量较大的数据表水平拆分到后端的每个RDS数据库中,这些拆分到RDS中的数据库被称为分库,分库中的表称为分表。DRDS由每个数据库负责每一部分数据的读写操作,从而有效的分散了整体访问压力,在系统扩容时,只需要水平增加分库的数量,并迁移相关数据,就可以提高DRDS系统的总容量。


“拆分键”是分库分表的重要概念,拆分键也称为分库/分表字段。DRDS根据拆分键的值将数据表水平拆分到后端的每个RDS分库里。也就是,键值相同的数据,一定会位于同一个RDS数据库里。DRDS除了可以定义分库键以外,每一张逻辑表都可以定义自己的拆分键。拆分键暂时只能是单个字段。如果分库键与分表键相同,那么在插入时只需要指定该分库/分表键。如果分库键与分表键不同,则在插入时需要分别指定分库键和分表键。


DRDS水平拆分原理

拆分字段:是DRDS中数据分布和SQL路由的凭证。

图 1

数据分布:DRDS中的数据是按照拆分字段值,加上特定的算法进行计算,根据结果存储数据到对应分片

图 2

SQL路由:当用户SQL遇到DRDS时,DRDS会理解整个SQL含义,然后按照拆分字段的值和执行策略将SQL路由到对应分区进行执行。

图 3

数据合并:如果一个SQL对应多个分片数据执行,DRDS会将各个分片返回的数据按照原始SQL语义进行合并。

图 4

云中沙箱DRDS初级实验介绍

云中沙箱http://www.aliyunedu.net)为学员提供一个云端实验平台,帮助用户熟练运用阿里云产品、技术、服务与解决方案,提升用户在阿里云上工作的操作能力。


云中沙箱提供 “SL034 使用分布式数据库DRDS突破单个数据库瓶颈” 自助实验,沙箱平台会在实验开始时,创建一台RDS实例和一台DRDS共享实例。首先,将数据样本导入到RDS新建数据库。模拟客户实际工作中,将百万行数据存储在单个RDS数据库中的场景。然后,使用DRDS建立拆分数据库和拆分数据表,也就是利用DRDS中的hash方法对单个RDS数据库进行拆分。之后,导入数据,开始进行拆分,将单个表中的数据可以拆分到分表中。最后,通过DMS查看分库分表的结果。


通过此实验,用户有能力掌握:

  1. 阿里云上使用DRDS拆分键,将RDS水平拆分;

  2. 通过 hint 方式实现对拆分的数据库进行查询。

实验架构图:

图 5

手痒痒了吗?想来试试手怎么玩转DRDS吗,赶紧订阅我们微信公众号去玩转沙箱实验把~我们的微信公众号:架构云专家频道

如果喜欢我们的话就赶紧订阅我们吧~~~每天定时推送新鲜干货~~~注我们的微信公众号:架构云专家频道 每天同步更新哟~~~

您也可以关注我们的官方微信公众号(ID:ctoutiao),给您更多好看的内容。

声明:本文由架构云专家频道企业号发布,依据企业号用户协议,该企业号为文章的真实性和准确性负责。创头条作为品牌传播平台,只为传播效果负责,在文章不存在违反法律规定的情况下,不继续承担甄别文章内容和观点的义务。
您阅读这篇文章花了0
转发这篇文章只需要1秒钟
喜欢这篇 0
评论一下 0
凯派尔知识产权全新业务全面上线
相关文章
评论
试试以这些内容开始评论吧
登录后发表评论
凯派尔知识产权全新业务全面上线
阿里云创新中心
×
#热门搜索#
精选双创服务
历史搜索 清空

Tel:18514777506

关注微信公众号

创头条企服版APP