写点什么

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:002226

评论 2 条评论

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

新时代下,作为IT 管理员的我们如何快速构建一个安全高效的IT 体系

coxi_vv

1Panel 运维效率

员工绩效管理工具软件哪个好?2024年九大软件综合对比

爱吃小舅的鱼

研发团队 绩效管理 绩效管理软件

解锁未来财富密码:AI自动化副业创收班——终身财富加速器

霍格沃兹测试开发学社

MySQL 亿级数据平滑迁移实战

EquatorCoco

MySQL 数据库

关于智能编码助手【通义灵码】,开发者们这么说...

阿里云云效

阿里云 云原生 通义灵码

开发听书音频平台,如何在利润率下降环境中保持竞争力

软件开发-梦幻运营部

Go 语言异常处理

FunTester

关于Arrays.asList返回List无法新增和删除?

EquatorCoco

数据结构 后端

关于 IoTDB 的疑问,我们这次有奖征集!

Apache IoTDB

MES系统如何支持多品种小批量生产

万界星空科技

工业互联网 制造业 生产管理系统 mes 万界星空科技

2025第二十四届杭州国际智能楼宇展览会

AIOTE智博会

智能楼宇展 智能楼宇展会 智能楼宇展览会

关于智能编码助手【通义灵码】,开发者们这么说...

阿里巴巴云原生

阿里云 云原生 通义灵码

DAPP算力合约代币质押项目系统开发步骤详细解析

V\TG【ch3nguang】

RPA的九大主要特征:全面优化业务流程的利器

八爪鱼采集器︱RPA机器人

RPA 自动化 RPAxAI

快手主站前端工程化探索:Gundam 脚手架在新春除夕项目中的实践与展望

快手技术

前段

python Socket无限发送接收数据方式

我再BUG界嘎嘎乱杀

Python 编程 后端 socket 开发语言

Voice agent connected!回顾一场 24 小时的黑客松

声网

Python开发中,SQLAlchemy 的同步操作和异步操作封装,以及常规CRUD的处理。

不在线第一只蜗牛

Python 数据库 oracle

预制菜工厂MES系统:具体功能与应用场景

万界星空科技

mes 万界星空科技 预制菜加工 预制菜工厂 预制菜生产管理

云原生与AI融合持续深化,华为推动全球智能化新浪潮

新消费日报

如何使用 Higress 快速构建 AI 应用?

阿里巴巴云原生

阿里云 云原生 Higress

Python多进程日志以及分布式日志的实现方式

我再BUG界嘎嘎乱杀

Python 编程 多线程 日志 分布式日志

腾讯会议升级“万室如意”计划,助力实体会议室引入AI能力

Geek_2d6073

探索顶级免费文档管理系统:‌为您的企业找到最佳匹配!‌

爱吃小舅的鱼

文档管理 免费 文档管理工具

数业智能心大陆:用AI关怀青少年心理健康

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

统一多层网关好处多,阿里云云原生 API 网关打造全能型网关

阿里巴巴云原生

阿里云 云原生 云原生API

关于 API 你应该知道的一切

幂简集成

API

GitHub星标破万!Python学习教程(超详细),真的太强了!

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言 学习教程

上线一天销售额超15亿!《黑神话:悟空》火爆全网的技术秘诀!

可信AI进展

人工智能

阿里巴巴拍立淘API返回值:商品分类与属性的智能识别

技术冰糖葫芦

API Explorer API 接口 API 策略

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