147
微信
DRDS产品概要__产品简介_分布式关系型数据库 DRDS-阿里云
业务面临的问题
单机数据库到达瓶颈
单机数据库在数据存储容量、访问容量、容灾等方面都会随着业务的增长而到达瓶颈,无论哪一个,对业务来说是一项相当艰巨的挑战。
存储容量瓶颈问题,虽然可以通过在一个机器下面挂很多块磁盘,做到10T,20T,30T容量,然后使用一个MySQL实例支撑,但是数据备份、数据管理(DDL)、数据检索与更新性能(DML)都会出现大幅下滑,让我们不得不重新考虑容量问题的解决方案。
访问容量瓶颈问题,通过增加CPU/内存/磁盘/网络等硬件缓解,但是廉价X86 PC 做到几十核目前就是顶配了,内存几百G也塞不下几十T数据的各种索引,磁盘IO毕竟比内存还是差点,通用网路也就到万兆,本质上无法避免单机瓶颈
容灾问题,单机总存在着0或者1的问题,所以做热备冷备,以求出故障时能够快速切换,但是数据库并不是应用,数据库数据存在状态,存在事务,真正宕机切换对于核心业务来说真的是一个艰难决定。
更要命的是,也许我们能够买到顶级容量的磁盘整列,上百核几T内存的机器,做机房、同城、异地热备冷备,但是由于数据库软件并不能充分利用硬件资源而功亏一篑,这也就是所谓的有钱也买不到符合需求的解决方案。
传统数据库成本高企
传统的数据库方案基于授权、基于服务咨询,带来相对安全、封闭的解决方案,但是因为缺少严格的价格对标、此种模式下存在的实施成本、销售渠道的层层盘剥,让业务付出相当高昂的代价。
所以业务每年付出几十万上百万数据库预算来支撑业务的时候,也许会思考是否有更加廉价的替代方案,省钱也好,用刀刃上也罢,仔细捋一下,产品方案挺多,但是要么贵,要么满足不了需求。
NOSQL/开源方案的艰难选择
上诉的种种原因,让业务将目标对准了NOSQL、对准了开源,确实这些产品当中有些产品非常优秀,能够解决数据库瓶颈,并且免费或者付出很少的费用,但是同时也带来了阵痛甚至是致命的隐患,这些隐患归结起来以下几个问题。
1.需要做适用于企业的管控等周边系统。
2.需要fix产品的bug和开发满足业务需求的功能。
3.需要在稳定性、性能问题做出保障。
最终,业务可能需要一整个团队来完全理解并开发维护这个开源产品。这个时候也给业务带来了3个问题。
1.是否下定决心开发维护这些产品?
2.能否做好上面3件事情?
3.业务发展重心是在做上面3件事情上?
数据库服务保障充满坎坷
数据库是同时涉及到硬件、系统、应用逻辑等多方面的计算机技术解决方案,所涉及到的技术深度和广度在计算机软件领域是数一数二的。
数据库服务包含资源管控和生命周期管理、分布式逻辑、高可用部署和切换、容灾备份、自助运维、疑难排查等,所涉及到的工作细节很多,更大问题是必须通过时间和丰富场景进行磨砺与积累。
DRDS解决问题的方法
使用分库分表解决容量问题
解决数据库容量问题的产品总体来说都是基于share nothing或者share anything架构,前者如同DRDS,使用多个廉价PC做数据水平拆分,服务和数据存储节点之间并不完全同步状态,后者使用共享内存、共享存储、infinibind、高配物理机结合出一个全功能数据库。
share anything架构能够满足大部分用户的数据库容量需求,但是本质上如同小型机+数据库仍然会碰到容量天花板,并且相当昂贵。
share nothing架构能够做到数据和访问容量通过简单堆叠机器进行扩展。DRDS通过SQL引擎和自助管控系统尽可能降低用户对分布式细节的感知。
最低成本解决用户数据库查询问题
DRDS需要在分布式情况下处理MySQL所有的SQL,并且保持SQL语义一致,这项工作是非常细节且具有挑战的。另外在分布式情况下,单个SQL可能涉及到多个数据存储节点的数据处理以及归并,这中间耗费在网络间数据传输以及数据合并的时间可能会超过同样一份数据在单机上的表现。
综合上诉两点,DRDS的数据水平拆分对用户使用有一定的限制,所以DRDS还提供了更低业务侵入性的读写分离功能。
读写分离功能能够线性增加数据库读能力,业务创建读写分离的DRDS数据库后,换一个连接即可使用,无需修改代码,无需迁移数据,非常适合在短时间内大幅提升数据库读性能的需求。
使用云计算降低成本
云计算的精华在于计算存储服务资源随开随用,并且可动态扩展,快速实施,这也就意味着成本预算周期减短,并且随着规模变大,资源和管控成本会逐步降低,总体上对业务收取的费用也会逐步降低。
DRDS产品本身使用阿里云云计算资源,成本也会受益于此,并且自动继承快速能力扩展、稳定性监控、资源隔离、灾备恢复、服务保障体系等特性。
DRDS产品按量计费模式、自助运维监控、动态升降配也秉承云计算核心理念,为业务带来快速、可保障的价值。
专业的工具和团队解决问题
DRDS产品在阿里巴巴集团内部的对应产品是TDDL,作为集团分布式数据库接入的标准,接入了几乎所有使用数据库的业务,磨砺了一支具备丰富分布式数据库问题解决能力的团队。其周边工具和具体业务解决方案,也在集团内部有着广泛使用和充分验证。
DRDS在阿里云公测在2014年12月,商业化也将近半年时间,积累了大量内部和外部用户使用支持经验,产品功能丰富度、稳定性、性能都有本质的提升,具备核心应用支撑能力。
DRDS作为分布式数据库服务层,还提供用户业务使用支持,利用已有的经验,帮助用户设计对口其业务的分布式数据库拆分策略,以便充分发挥分布式数据库对于业务的价值,并且长期提供咨询服务。
DRDS的架构
DRDS 目前定位成一个中间件,在业务应用和RDS之间,本身不承担数据存储,只负责解决分布式情况下数据操作路由、执行、数据处理等功能。
DRDS特性
DRDS具备share nothing架构的分布式数据库所具备的主要功能和feature。
简单使用
DRDS的使用与MySQL非常接近,建实例、建库、建表、SQL操作,唯一比较大的区别在于水平拆分模式下,DRDS对于建表需要指定拆分字段(类似索引),只要带上这个拆分字段,SQL只会在部分数据分片上执行,从而加速SQL执行速度。
DRDS提供的读写分离功能能够很方便在线调控读在主实例和备实例的读流量,并且可通过show node指令查看实际执行的读流量分配。
DRDS提供各种实用命令帮助用户更好地使用DRDS和排查问题,比如show slow查看慢SQL,show node查看数据存储节点流量分配,show datasources查看数据存储连接信息等等。
数据水平拆分
DRDS帮助您实现分库分表,能够将原来只能在单节点执行的SQL,转变为多节点执行的SQL,如同单个数据库体验。
但是分布式数据库和单机数据库本身必然会存在一定的使用习惯上的不同,例如低效的分布式事务、分布式join等,针对这些问题,DRDS的选择是:优先考虑性能和稳定性,兼顾软件的兼容性。
与市面上的一些开源的数据库切分工具相比,DRDS能够更智能的分析您的SQL,在结果集合并和分布式join优化等关键领域,我们都有成熟解决方案,能够帮您解决在分布式数据库场景中面临的大部分问题。
平滑扩展
DRDS的扩展分为服务层扩展和存储层扩展,服务层扩展通过DRDS控制台的升降配功能达到服务能力扩缩,存储层扩展通过DRDS控制台的数据库平滑扩容功能进行扩展。两者都是在线进行扩展,不影响用户使用。
MySQL兼容
DRDS有着比较完整的MySQL SQL兼容性,旨在降低用户从传统数据库迁移到DRDS的难度。具体参见DRDS的SQL支持文档.
事务支持
DRDS 对于单机事务完整支持,也就是业务中一个事务中的各个SQL最终都落到同一个数据库即可保障强一致,对于跨数据库的分布式事务,DRDS提供最终一致分布式事务给业务使用,目前处于内测阶段。
全局唯一数字序列服务
在分布式环境下,原有的mysql sequence生成机制无法高效的生成全局唯一的sequence.我们借鉴了oracle的sequence生成样例,实现了一个在mysql基础上的高效sequence生成器,能做到没有单点性能瓶颈,具备大并发获取和低延迟特性。
DRDS sequence功能的目标只是为了保证数据的全局唯一,虽然基本上是按时间序列获取的,但并不全局有序。
DRDS应用场景
DRDS 具备如同上述内容所描述的问题解决能力和分布式场景下满足业务需求的各种特性,典型的应用场景如下图。
最后更新:2016-11-23 16:44:15
上一篇:
服务配置相关问题__产品常见问题_阿里云物联网套件-阿里云
下一篇:
DRDS简单原理__产品简介_分布式关系型数据库 DRDS-阿里云
LogHub-预览数据__Getting-Started_日志服务-阿里云
开通MNS服务__快速入门_消息服务-阿里云
本地PostgreSQL迁移至RDS for PostgreSQL__数据迁移_用户指南_数据传输-阿里云
重启RDS实例__实例管理_API 参考_云数据库 RDS 版-阿里云
查询语法__API-Reference_日志服务-阿里云
Docker镜像制作__Docker_操作指南_批量计算-阿里云
Logtail机器组__公共资源说明_API-Reference_日志服务-阿里云
错误处理__基本介绍_SDK_日志服务-阿里云
重命名键__数据管理_DMS for Redis_用户指南(NoSQL)_数据管理-阿里云
创建触发器__数据库开发_用户指南(RDBMS)_数据管理-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云