开发者社区> 问答> 正文

全局事务服务 GTS 应用场景如何使用?

GTS 可应用在涉及数据库操作的多个领域,包括但不限于金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、手游、视频、物联网、车联网等,典型的应用场景如下:

解决使用 DRDS 进行分库分表后产生的跨分库事务问题

DRDS 通过分库分表实现数据水平拆分, 来解决单机关系型数据库扩展性问题. 但是原有单库单表进行分库分表后, 单表的数据被分散到多个库的表中, 原来对单表多行数据进行的变更, 可能会变为对多库多表的数据变更,即单机本地事务变成了分布式事务。

DRDS 本身不支持分布式事务, 上述场景下再采用原来的单库事务进行操作会导致失败。在 DRDS 中加入 GTS 能够实现这种多个库交易操作的原子性,解决分布式数据库跨库事务的问题
解决跨服务事务问题

现代 IT 应用中,服务化的模式得到了广泛使用。比如大型电商应用中,为了系统解耦,常常将整个应用划分为多个系统,如商品系统、商家系统、用户系统、账务系统、物流系统等,各个系统会提供各自的服务。

一个简单的商品加入购物车的操作,会调用商品系统的服务来减掉库存,调用购物车系统的服务增加记录,调用结算系统的服务变更待结算金额等等操作。

使用 GTS 可以将调用这些服务的操作加入到一个全局事务中,让他们要么同时成功,要么同时失败,保证了各个系统的数据一致性。
GTS 配置 MQ 可以快速解决事务消息问题

有些系统在使用数据库保证系统内数据一致的同时, 也会使用消息队列(MQ) 作为和其他系统间的消息传递, 完成不同系统间的数据一致。

一个典型的场景,A 系统成功将本地数据 1 保存到数据库后, 通过 MQ 向 B 系统发送一条通知消息, B 系统收到消息后保存与数据 1 关联的数据 2, A、B 两个系统保持数据一致。但是当 A 系统成功保存数据但是未能成功调用消息系统发送通知时, 会导致 A 系统中有数据 1 而 B 系统中没有相应的数据 2, 即 A、B 两个系统出现数据不一致, 造成系统故障。

对于上述类似场景,GTS 能够将 A 系统向数据库写入数据 1 的本地事务, 和通过 MQ 向 B 系统发送通知放到一个全局事务中, 保证数据写入则消息一定发出,数据未写入则消息一定不会发出。

展开
收起
猫饭先生 2017-10-31 10:57:15 1849 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
GTS-分布式事务全新解决方案 立即下载
GTS内刊《新服务》 立即下载
GTS内刊 立即下载