一分钟了解阿里云产品:分布式关系型数据库DRDS

一、             概述

 

阿里云发布的产品种类齐全,今天就让我们一起来了解下分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)吧。

 

 

什么是DRDS呢?

 

DRDS是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。前身为淘宝TDDL,是近千个应用首选组件,已稳定服务了七年以上。

 

 

那么,DRDS有什么优势呢?

 

  • DRDS简单易用。如同单MySQL数据库使用,兼容MySQL交互协议,兼容90%以上的MySQL SQL。
  • DRDS稳定可靠。共享阿里TDDL、COBAR组件,支持阿里内部交易、商品等核心应用。
  • DRDS水平拆分,容量达单节点百倍,内部最大集群达200多个MySQL节点。
  • DRDS可扩展。增减节点对应用几乎无影响,独有的高效数据迁。

 

 

正是因为这些优势,DRDS为您快速搭建专业分布式关系型数据库服务,让你忘掉成长的烦恼!DRDS在功能上能给您提供如下服务:

 

  • 分布式SQL引擎:将数据按照条件分散到多个数据节点(分库分表),对于数据操作sql进行分布式优化,获得最佳执行效率。

 

  • 自主运维:DRDS的用户运维平台提供DRDS接入、分布式DDL、拆分信息维护、平滑扩缩容、分布式DML、监控等常用功能,让运维工作变得更简单。

 

  • 小表复制:对于配置表,常量表等不经常变化的表进行多节点对等同步,加速该类表与其他拆分表做关联查询的速度。

 

  • 分布式全局唯一id:提供全局唯一数字id服务,帮助您在分布式环境下,继续保持类似唯一键、主键等数据的全局(所有节点)唯一性。

 

 

您可能想知道,什么场景中适合应用DRDS呢?

 

DRDS典型的应用场景有:突破单个数据库瓶颈轻量级数据分析、冷热数据分离、动态数据读写分离等。

 

众多客户信赖DRDS,目前,虾米网、网聚宝、华甫达、安存等都在使用DRDS。

 

DRDS典型特性介绍:

https://www.aliyun.com/product/drds/?spm=5176.2115824.3.55.Dvizj4

 

 

 

二、             技术点(DRDS五大热点技术问题分析)

 

在上一篇文章中,我们为大家介绍DRDS的概况,分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。前身为淘宝TDDL,是近千个应用首选组件,已稳定服务了七年以上。那在使用过程中,经常遇到的热门技术问题有哪些呢?

 

控制台使用:

https://help.aliyun.com/document_detail/drds/quick-start/console_use.html?spm=5176.docdrds/brief-manual/summary.6.85.SSvRzC

 

DRDS使用:

https://help.aliyun.com/document_detail/drds/quick-start/drds_use.html?spm=5176.docdrds/quick-start/console_use.6.86.XlYpih

 

数据拆分策略:

https://help.aliyun.com/document_detail/drds/best-practice/best_shard.html?spm=5176.docdrds/quick-start/drds_use.6.88.fH106h

 

数据的导入与导出:

https://help.aliyun.com/document_detail/drds/best-practice/best_data_import_export.html?spm=5176.docdrds/best-practice/best_connection_pool.6.90.lgPvqW

 

SQL优化:

https://help.aliyun.com/document_detail/drds/best-practice/best_sql_optimizer.html?spm=5176.docdrds/best-practice/best_data_import_export.6.91.CsOioq

 

 

希望上面的内容,能够对大家有所帮助。

 

 

 

三、             体验(DRDS分布式事务在奥林公司咖狗网的应用实践)

 

咖狗网是奥林科技旗下的国际物流交易服务平台。基于该平台,国际物流货代企业可以获取运价发布、在线订舱等服务。

 

咖狗网采用SOA(service-oriented architecture)技术架构,如下图所示:

一分钟了解阿里云产品:分布式关系型数据库DRDS

 

咖狗网由若干个业务模块组成(运价模块、买家模块、卖家模块等),模块之间通过RPC服务进行交互。以订舱场景为例,涉及的业务模块包括:

一分钟了解阿里云产品:分布式关系型数据库DRDS

 

用户进行订舱操作,后台的RPC服务会在运价模块中扣除仓位信息、在买家模块/卖家模块中插入订单信息、在积分模块中累加积分。

 

问题描述

多个RPC服务的调用,涉及多个数据库中多张数据库表的操作。如何保证多个RPC服务在业务上能够保持最终一致?这个问题曾一度困扰奥林公司平台开发部的设计人员。通过查阅相关资料得知,我们遇到的问题属于“SOA系统中的分布式事务”范畴。网上也有一些相关的解决方案介绍,比如两阶段提交、WS-Transaction标准等。但是,基于我们当时的人力、在有限的时间内,开发一个两阶段提交框架,似乎不太现实。

 

 

解决方案

通过多方打听了解到,淘宝的分布式中间件(TXC),可以解决我们的问题,现已集成到DRDS中。

DRDS分布式事务的原理:

分布式事务协调器负责分配事务上下文id,应用层代码将该id透传给业务上需要保证最终一致性各RPC服务。事务协调器根据各RPC服务预处理的结果(成功/失败),来决定整个事务的统一提交/回滚。业务SQL在执行前后,会生成事务日志,在日志中包含前置镜像和后置镜像。提交的时候,删除事务日志即可;回滚的时候,依赖事务日志中包含的前置镜像和后置镜像。如果回滚失败,会通过异常处理机制,通知用户人工介入。

基于咖狗网技术架构,将DRDS分布式事务集成进来,仅需要两个步骤:

 

1、在REST层模块中,通过事务模块开启一个全局事务,生成全局事务xid。在RPC服务调用过程中,需要将该xid透传给各RPC服务。代码如下:

一分钟了解阿里云产品:分布式关系型数据库DRDS

2、在RPC服务的接口实现中,将xid设置到与业务操作相同的数据库连接中。

为了保证将xid设置到与业务操作相同的数据库连接中,通过Spring的AOP切面方法来实现。

 

经过与阿里技术人员近一周的联调,一路披荆斩棘,咖狗网的分布式事务问题最终解决。

感谢阿里中间件团队在该项目中提供的帮助!

 

如果您想详细了解DRDS,请访问:

https://bbs.aliyun.com/read/243060.html?spm=5176.bbsl258.0.0.RRRGDi

 

汇通天下,基于DRDS实现数据扩展:

https://yq.aliyun.com/articles/6833?spm=5176.100240.searchblog.8.C3ZVbx

 

 

 

上一篇:一分钟了解阿里云产品:操作审计


下一篇:使用hql当异常查询:Xxx is not mapped[from Xxx where ...]