DRDS总结文档

一、DRDS背景
单机数据库能够方便的满足用户对于关系查询类的需求,是目前业务应用中最常使用的软件。然而,对于很多应用而言,单机数据库最终都会遇到瓶颈, 包括访问量、数据容量、扩展性等等会碰到各类限制,特别在互联网时代,这个瓶颈会非常快地碰到,在时间紧张、技术储备有限的情况下,不得不使用高端机器和存储来缓解业务增长压力, 但仍然无法彻底突破瓶颈,同时给业务带来巨大的成本负担,水平拆分正式彻底解决这个问题的技术方案,通过数据多节点分片,辅以读写分离、高可用(HA)、平滑扩容等服务,很好地满足业务对于访问量、数据容量、扩展性等需求。
二、 DRDS 概述
分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。前身为淘宝TDDL,是近千个应用首选组件,已稳定服务了七年以上。 使用DRDS如同使用MySQL数据库,兼容MySQL交互协议让这个产品兼容几乎所有的客户端编程语言,90%以上的MySQL SQL支持让应用使用变得相对容易 。
三、产品功能
3.1、数据水平拆分
数据水平切分是一个解决系统存储瓶颈的最终极解决方案,数据库切分的核心思想比较简单:分而治之。将数据分散到多台机器,并保证请求能够平均的分发到这些机器上,以极低的成本来解决业务的各类性能瓶颈。 拆分的简单原理就是按某一个字段值mod拆分数,结果即对应分片。
切分也是带来一定的代价,分布式数据库会对一些原有单机数据库的场景进行限制,这些操作在数据拆分的环境下执行效率非常低,就算是功能上能够支持,也会因为性能问题而无法使用。
与市面上的一些开源的数据拆分工具相比,DRDS能够更智能的分析您的SQL,在结果集合并和分布式join优化等关键领域,都比较成熟,能够解决分布式数据库场景下的大部分问题。
3.1、读写分离
Mysql数据库一般都会做主备库,那么所有的读写操作都在主库做自然数据写入即可见的,但是这造成的问题也比较明显:主库压力比较大,性能下降明显,打造数据分享第一平台那么能否使用备库减轻主库压力呢? 答案是可以的,应用对于数据库数据的写入和读取有着不同的实时性要求,写操作基本要求实时,读操作对于某些应用场景不需要这种实时性的,对于这些请求,我们就可以到备库上去做,比如用户申请权限,审核的同学不需要在用户一提交申请就立即看到(延迟秒级别一般可接受)。
DRDS在支持读写分离上更近一步,应用只使用一个DRDS连接动态添加只读实例,在线调整读操作在主备上的权重,并且能够通过sql hint指定某一个sql必须到主库或者到只读实例上运行。
4.3. 平滑扩容
DRDS能够帮助用户实现在线的数据库平滑扩容,让用户能够按需的自由增减数据库,从而实现弹性按需使用数据库集群。在线数据库扩容的重点在于“在线”两字,也就是用户不需要停止业务系统进行割接操作,直接就可以添加新的mysql节点到集群中,实现无缝的自由扩展。
DRDS则将整个扩容的过程分为几个阶段,包括全量迁移、增量同步、切换数据库等几个步骤。数据会提前进行搬迁,并增量同步一段时间,因此可以在非常短的时间内(秒级别)完成数据库的最终扩容切换工作,对业务影响做到最小。
4.4. 分布式柔性事务
数据水平拆分的场景下,常常会碰到事务跨节点,虽然我们可以将事务中涉及到的表按照相同字段拆分,并且保持事务中的sql都落到一个节点上对分布式事务进行优化,但是仍然无法解决大量跨节点事务需求,在分布式的情况下, 目打造数据分享第一平台前DRDS通过分布式柔性事务组件保持事务各个分支的最终一致性,也就是要
么全成功,要么全失败,但是隔离级别在普通情况下会保持READ UNCOMMITED.

猜你喜欢

转载自blog.csdn.net/qq_36364521/article/details/82454383
今日推荐