阿里分布式数据库服务实践

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介:


沈询: 阿里巴巴资深技术专家,08年加入阿里巴巴,一直从事阿里分布式数据层方面的研发工作,参与了公司大部分的去IOE工作,具备较多实操经验。目前主要负责淘宝分布式数据层(TDDL),阿里分布式数据库服务(DRDS),阿里分布式消息服务(Notify,MetaQ)的开发和架构设计工作。

经过近一年的运营,阿里巴巴的分布式数据库(DRDS)已经协助电商,电信,银行,政府等多种类型的系统进行过业务分布式改造,在系统实施的过程中,我们碰到和解决了哪些问题? 他们是怎么解决的?背后的思考是什么?未来在何方? 以下来分享下精彩内容。

DRDS简介

起源

DRDS 脱胎于 alibaba的cobra 分布式数据库引擎06年上线使用,在alibaba有近百应用在使用,目前已经开源,DRDS80%的代码出自cobra proxySql解析器,执行流程配置)。

DRDS吸收了taobao TDDL分布式数据库引擎的大量优秀经验和解决方案,08年上线使用,目前在使用的应用近千个,大量实际应用解决方案支持分布式join,支持分布式aggregation (group sum max min),支持异步索引构建,支持Auto sharding ,自动扩容缩容。

从TDDL到DRDS,

DRDS专门针对外部用户进行了配置的重新设计简化了配置操作规范与流程尽可能使得应用像操作一个数据库一样的操作DRDS用户的专业化指导。

场景广泛:互联网应用,企业内大数据应用,政务类应用,物联网应用。

应用场景

应用的业务需求单机已经无法满足,一个RDS数据库的最大实例也无法满足用户的需求,可能遇到容量瓶颈、事务数瓶颈、读取瓶颈,我们就可以考虑使用分布式数据库了。

Scale out(多机水平扩展),使用廉价数据库阵列来满足用户需求—DRDS

优势:更轻量的使用数据库,未来更换的成本小;一次重构,以后基本再无需担心系统瓶颈。劣势:重构迁移需要付出成本;分布式环境下一些查询会被限制不允许执行;完成相同功能需要比单机扩展付出更多成本。

 

 

                                             图1

理想状态就是Scale out 与scale up结合。如图1所示,让系统架构具备scale out的能力,尽可能提升单机利用率,但不要过早过度设计。

 

                                        图2

何时应该选择Sharding方案?图2中的概要图给出了分析。

DRDS功能介绍

分布式MySQL执行引擎

具有非常高的兼容性,MySQL 5.5 的各类复杂查询都能做到,包括复杂的join,复杂的嵌套,复杂的函数。降低了迁移时候的成本。

智能下推的功能,减少网络传输,减少计算量,充分发挥下层存储的全部能力。

智能下推有两个典型的例子,图3为表A 分库分表3个的例子,图4为全表distinct groupby的执行计划的例子。

 

 

   图3

 4

 

弹性扩展

  自动扩容、缩容是另外一个重要功能。如图5DRDS可以做到原来一个库,下一步变成两个库,依然可以扩,对一些特殊需求也可以实现自动化后台迁移,自动扩容缩容。

  5

小表异步广播

  6

  如图6的跨机join的优势是一致性,空间比较节省。劣势是网络消耗和延迟增加。

  7

7小表广播join的优势是性能高,延迟低,网络消耗小,劣势是最终一致性,小表更新量不能太巨大。

DRDS实践

分布式查询优化

最终的目标是让所有请求可以水平扩展,要想达到这个目的,有两个基本的原则:1尽可能让所有查询发生在尽可能少的下层存储节点上,最好是只发生在一台上。将跨网络请求尽可能减少减少并行查询时的机器消耗。2选择的shardingKey要能够让所有存储节点均衡的负载读写请求。系统可以简单加机器来扩展没有系统瓶颈。案例1如图8所示是一个订单的场景,应该选择哪个列作为切分条件?按照买家ID的查询(买家查看自己买了哪些商品)。

 

    8

案例2如图9所示的过程就是数据的切分,应该选择哪个列作为切分条件?按照买家ID的查询(买家查看自己买了哪些商品);按照卖家ID的查询(卖家查看自己卖了哪些商品。

  9

10表达了异构复制,数据通过后台自动化逻辑复制过去,建立一个新的全表索引。

 10

案例三如图11所示,在原来表里加了type,关联两个表,但这两个表不在一台机器上,遇到这种场景就需要如图12所示的小表异步广播。

  11

  12

 

事务的分布式优化

  事务的分布式优化的目标是完整的事务支持,既要支持ACID,又可按需无限拓展。然而这种模型是不可能实现的。

那么我们该怎么办呢?优化事务的最重要的手段就是从强一致到最终一致。把这种情况拟人化场景为:李雷家住长江头,梅梅家住长江尾,日日思君不见君,送只玫瑰表心意。李雷希望(ACID):花别丢了,送不到给我退回来(原子性,A);花能瞬时送到梅梅家(强一致性和强隔离性,C&I);花别在路上坏了(D)。其中瞬时就是当李雷去检查的时候,要么花在李雷那,要么花在韩梅梅那。

实现方案一:李雷做火车到长江尾,亲手交给了梅梅。方案二:李雷将花交给邮递员邮递员做飞机把花送给韩梅梅李雷电话打了一天,韩梅梅都没接邮递员把花交给韩梅梅韩梅梅接起电话,告诉李雷收到花。方案二就是强一致,它的优势是编程模型简单,不用考虑邮递员运输中的各种并发问题。它的劣势是并发性能低,李雷一天都不用干活了。

真的遇到这种情况时,我们该采用最终一致进行优化,上述情景大体不变,更改为李雷打电话韩梅梅告诉他还没收到,李雷就去做了其他事情。最终一致的优势是无阻塞情况,并发性能好。劣势复杂度略高,需要考虑玫瑰已经发出,但对方还没收到的情况应该如何处理。

  图13展现了单机和分布式事务情况。所以我们建议结合最终一致和强一致,单机可以使用强一致,跨机建议使用最终一致。

  图13

 

 

从单机存储到DRDS迁移流程

迁移的目标是:保证业务线上正常运转;平滑过渡;减少运维。

迁移的步骤有三步:SETP1:读写在原来的单机数据库;数据通过“愚公数据迁移平台”写入云上DRDSSETP2:验证云上数据是否正确;验证云上DRDS是否能够很好的应对读流量压力。SETP3:夜间,停写几分钟;读写切换到DRDS;数据通过“愚公数据迁移平台”写回到云下单机数据库。



                                                                                              PPT下载地址:http://club.alibabatech.org/resource_detail.htm?topicId=156

 

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3天前
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
15 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
|
1月前
|
弹性计算 安全 关系型数据库
活动实践 | 自建数据库迁移到云数据库
通过阿里云RDS,用户可获得稳定、安全的企业级数据库服务,无需担心数据库管理与维护。该方案使用RDS确保数据库的可靠性、可用性和安全性,结合ECS和DTS服务,实现自建数据库平滑迁移到云端,支持WordPress等应用的快速部署与运行。通过一键部署模板,用户能迅速搭建ECS和RDS实例,完成数据迁移及应用上线,显著提升业务灵活性和效率。
|
26天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
27天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
5天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
24 0
|
1月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
70 4
|
2月前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
71 8
|
2月前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
72 15
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
140 3
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。