写点什么

eBay 发布分布式事务协议 GRIT,多数据库微服务的福音

  • 2019-11-12
  • 本文字数:880 字

    阅读完需:约 3 分钟

eBay发布分布式事务协议GRIT,多数据库微服务的福音

在 2019 年 IEEE 数据工程国际会议(ICDE)上,eBay 工程师提交了一篇论文,介绍了分布式数据库 ACID 事务协议——GRIT。GRIT的关键点在于支持跨微服务使用多个数据库,这些微服务通常用不同的语言实现,并且可能使用多个底层数据库。


eBay 的工程师在论文中写道,GRIT 的目标是填补现有 ACID 事务机制的空白,现有的事务机制在多数据库的情况下难以伸缩。


在涉及多个数据库的环境中,传统的两阶段提交(2PC)协议基本上是实现系统分布式事务的惟一选择。然而,由于路径太长,通常涉及多个协调参与者和阶段锁定,在需要伸缩的平台上表现不佳。另一方面,使用事务日志框架(如 Saga)要求应用程序做出复杂的补偿逻辑,并且可能会出现不可逆的部分成功事务,这会对业务产生影响。


下图显示了使用了两个数据库的微服务应用程序的 GRIT 架构。



如上图所示,GRIT 包括两个主要模块:一组对应于每个数据库的组件——数据库事务管理器(DBTM)、一个数据库事务日志(DBTL)、一个 LogPlayer 和两个负责协调的全局组件——全局事务管理器(GTM)和全局事务日志(GTL)。


GRIT 事务分为三个阶段。在事务执行期间,数据库服务收集事务的读操作和写操作,实际不修改任何数据。当事务被提交时,每个数据库将其读操作和写操作提交给它的 DBTM,DBTM 将对它们进行本地提交决策分析。所有参与的 DBTM 都将它们的本地决策提交给 GTM,GTM 做出全局提交决策。最后,如果事务成功,LogPlayer 将把 DBTL 中收集的条目发送给数据库。


总的来说,我们的方法在执行和提交过程中都避免了悲观锁定,也避免了等待物理提交。我们采用了更为乐观的方式,利用了逻辑提交日志,并使用确定性数据库技术将物理数据库变更移出提交决策过程,使得提交过程变得非常高效。


值得一提的是,GRIT 也可以用于单数据库应用程序。对于这种情况,不需要使用全局组件,提交事务的复杂性也小得多。eBay 工程师提供了一个 GRIT 示例,可用于扩展现有数据库,支持跨多个可用性区域的 ACID 事务。如果你对完整的细节感兴趣,不要错过他们发布的文章。


原文链接


GRIT Protocol Enables Distributed Transactions Across Multi-Database Microservices


2019-11-12 08:002284

评论 2 条评论

发布
用户头像
并没有给出如何解决分布式事务痛点的方案,从文章只看到每个应用将所有决策提交给GTM,由GTM统计进行提交事务。但如何解决GTM在提交过程中部分失败的问题呢?
2019-11-22 16:37
回复
用户头像
只是一个协议么,从文章看不出来什么优点啊
2019-11-22 01:19
回复
没有更多了
发现更多内容

3年才能驾驭新技术,不如试试这个低代码魔方

华为云开发者联盟

低代码 开发 华为云应用魔方 应用程序 魔方

数字货币钱包开发,imtoken钱包系统搭建

13530558032

量化交易APP开发,量化交易系统源码

13530558032

Vue进阶(幺幺玖):element-ui table组件适应性问题(横向滚动条)

No Silver Bullet

Vue 9月日更

分布式系统中协调和复制技术的原理

博文视点Broadview

【上汽零束SOA】云管端一体化SOA软件平台系列介绍之五:服务实现篇

SOA开发者平台

软件 车联网 物联网 汽车

NQI质量基础设施一站式方案,NQI一站式线上平台搭建

13530558032

高可用 | 关于 Xenon 高可用的一些思考

RadonDB

MySQL 数据库

Java 17 正式发布,Oracle 宣布从 JDK 17 开始正式免费,Java 迈入新时代

Java 编程 源码 架构

建立测试自动化策略【译】

FunTester

自动化测试 测试框架 测试管理 测试策略 FunTester

架构实战课程 模块三作业

Frank

Python——静态方法与类方法、类的导入

在即

9月日更

【上汽零束SOA】云管端一体化SOA软件平台系列介绍之六:数字生态篇

SOA开发者平台

软件 SOA 生态 汽车 OTA

《鸿蒙理论知识06》HarmonyOS概述之应用开发基础知识

孙叫兽

鸿蒙 HarmonyOS 鸿蒙系统 引航计划 领航计划

数据中心建设很复杂,但选择却能很简单:华为数据中心的多维创新

Canal Admin 高可用集群使用教程

Se7en

终于完成了私有NPM和PYPI repo的搭建

吴脑的键客

npm nexus pypi

穿越时空,跟我一起探索云栖数字谷(2021云栖大会免费送票)

阿里云CloudImagine

人工智能 云计算 阿里云 行业资讯 视频云

百度智慧输入,会是企业降本增效的“新生产力”吗?

ToB行业头条

百度 企业服务 百度输入法

【上汽零束SOA】云管端一体化SOA软件平台系列介绍之五:服务实现篇

SOA开发者

软件 SOA

Apollo 配置中心详细教程

牧小农

Apollo 阿波罗

netty系列之:在netty中处理CORS

程序那些事

Java Netty 程序那些事 响应式系统

MapReduce 示例:减少 Hadoop MapReduce 中的侧连接

华为云开发者联盟

hadoop mapreduce 排序 侧连接 联接

Opus从入门到精通(二):编解码器使用

轻口味

android 音视频 编解码 9月日更

计划会议要开始了,产品负责人却没来…

华为云开发者联盟

Scrum PO 开发团队 计划会议 Sprint

简单聊聊汽车OTA给OEM和Tire1带来的变化

SOA开发者

程序员 职业成长 汽车

模块3-作业

笑看风雨情

如何将外连接向内连接转换?

华为云开发者联盟

sql 数仓 GaussDB(DWS) 外连接 内连接

eBay发布分布式事务协议GRIT,多数据库微服务的福音_架构_Sergio De Simone_InfoQ精选文章