最近根据多个应用使用阿里云 DRDS 产品状况,做了一个入门攻略。因为文档较多,全部看完需要时间,所以挑选了一些重要的点供各位参考。
一切的开始,需要了解这玩意到底是干什么的,推荐看下产品概述和产品基本原理
确认这个产品能够解决你的核心问题,接下来一个很重要的点是怎么用好这个产品,数据库产品我个人认为都是有坑的,只是坑大坑小,以及能否从坑里面爬出来的问题。
无论怎么样,简单上手下看看,快速入门系列文档 是比较合适的。
当你按步骤连上 DRDS 后,做了一些操作之后,你可能并不清楚到底发生了什么,如果这个时候马上去按照你的理解上业务表测试,可能就埋了坑,DRDS 这个产品的表结构设计和单机数据库有一个很重要的区别在于:怎么拆表。所以这个时候我推荐大家看下如何选择拆分键这个文档以及 DRDS 快速入门 这个视频,这个时间我认为花得是值得的。不过这里补充下,类似 MySQL 也存在聚簇索引怎么选择的问题,只是 MySQL 有二级索引支持,这个问题相对不严重,而类似分布式数据库,如果不支持全局二级索引,只能通过跨分片并行查询缓解,并发很可能就上不去了,如果支持了全局二级索引,并且能够用分布式事务保证,则会好很多,期待这个产品未来能够支持,这个时候拆分字段设计也不是特别重要的问题了。
接下来是一个初始化测试环境,进行数据导入或者造数据的过程,你对资源一定很关心,怎么配比 DRDS 和 RDS, 按照个人经验,DRDS 可以从最低配规格开始,因为我理解这个产品本身没有状态,升配如同应用扩机器一样会比较方便,RDS 的话测试环境 1 或者 2 个都行,生产可以参考如何选择分片数这个文档,但是有一点文档中没有提,需要考虑数据容量的问题,单节点 RDS 数据存储很大,后续在做备份、做只读实例、做容灾恢复,时间是以天来计的,所以如果程序能够改成水平拆分的,单个 RDS 数据量不超过 1TB 为好。举个非常简单的例子,你有 10T 数据,使用 10-15个 RDS 解决问题,而不是 5-6 个。
另外为了避免后续生产上的麻烦,建议选择 8c16g(包含)以上的 RDS 节点,用一堆屌丝实例堆出来的分布式数据库,稳定性远不如规格比较大的实例。
当你把环境规划好,在做功能开发的过程中,建议能够看下这个产品的大部分文档,并且推荐看下 DRDS 常见问题专用贴这个帖子,乍一看吓一跳,但是能够把坑告诉你的产品是不多的,并且了解这些内容,对团队开发遇到问题的解决速度会有帮助,另外这些问题,有些已经 fix 掉。
功能开发完毕,很多应用可能会直接上线,不过在此建议补充下性能测试,特别是核心场景。目前市面上提供的分布式数据库,即使功能兼容性再好,不做性能测试,也是不让人放心的,很可能发布失败,因为有些物理原理上的问题跨不过去(按照目前大部分产品的架构和硬件而言),所以这个时候你会导入一些数据到 DRDS 中,可以参考数据导入这个文档。
实际生产使用之前,你应该还会非常关心监控告警问题 ,前期 DRDS 监控并不丰富,且实时性不高,后来做了一次改造,好了不少,具体参见 DRDS 实例监控 ,配合近期上线的、万能的重启功能,终于圆满了,对于线上问题,不能重启很可能会放大影响,靠工单并不靠谱。
另外一个有意思的现象是, DRDS 提供了秒级统计的指令让业务自己能够有所发挥,参见这个指令的说明统计信息查询类语句,我为此还写过一篇文章使用Grafana快速搭建 DRDS 秒级监控,总体来说是有效的,里面包括ERROR_PER_SECOND, FULLGCCOUNT,CPU都是值得关注的指标,ERROR_PER_SECOND有数值的话,你的应用是不正常的(排除 VIOLATION_PER_SECOND ),FULLGCCOUNT 不断在增张的话(几秒钟变化一次),那很可能 SQL 出了问题,CPU 一直处于80%以上时,一个可能是存在大量数据导入导出或者数据处理,另外一个可能是应用流量过大等等,后续我专门写一篇文章对这些指标进行一下解析,这个指令是非常不错的。
当应用进行过性能测试或者真正上线功能之后,你会发现 DRDS 适用的场景可能覆盖不了你的所有场景,从云栖大会来看,这个产品比较适合前台落数据的业务 ,后台业务可能会碰到一些问题,不过我最近也观察到,这个产品上线了只读实例体系,特别是分析型只读实例,对于跨分片的大查询非常有利,从文档描述来看,是使用了类 Spark 方式直接对在线数据进行计算,具体文档可以参见 DRDS 只读实例介绍 ,不过建议后续主实例或者并发型只读实例上可以上线类似单机并行计算( SMP ),放弃一定并发度,加快面向 OLTP 类查询的速度,这样面对企业级应用场景的时候,会更加得心应手些。
当然大数据产品在某些情况下必不可少,这里推荐数据集成这个工具,详情参见文档数据集成介绍。
云上的数据传输服务 DTS 产品同样支持了 DRDS 产品,当然如果你不想付钱,想自己折腾下,也可以使用 github 上 alibaba/canal 产品。对于数据导入导出,以及同步,个人认为都做得不够好,什么时候能够出一个通杀的产品呢?值得期待。
整体使用指南就介绍到这里,如果对 DRDS 产品你有一次比较成功的使用,我相信还是会比较爽的,至少个人认为如此。