写点什么

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

评论 2 条评论

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

【HarmonyOS NEXT】异步编程的神器之Promise

冉冉同学

鸿蒙 HarmonyOS 客户端 harmony HarmonyOS NEXT

淘宝商品详情API:实现商品属性与价格数据的动态同步

代码忍者

API 接口 pinduoduo API

告别延迟,酣战不停!GoLink携手火山引擎打造丝滑游戏加速体验

火山引擎边缘云

边缘计算 游戏 火山引擎 加速器

Java代码之美,从遵循样式规范开始

京东零售技术

Java 架构 后端 代码

EXCEL导入—设计与思考

京东科技开发者

昆仑万维推出「天工大模型4.0」4o版(Skywork 4o),实时语音对话助手Skyo上线在即

新消费日报

服装智能制造软件平台(源码+文档+部署+讲解)

深圳亥时科技

如何在Go语言中实现表单验证?整一个validator吧!

左诗右码

深入了解HR人事管理系统:8大厂商的综合评估

易成研发中心

企业人事管理系统对比:9款值得信赖的推荐

易成研发中心

如何安全有效的删代码?

京东科技开发者

即时通讯技术文集(第43期):直播技术合集(Part3) [共13篇]

JackJiang

即时通讯;IM;网络编程

位置共享可以修改自己位置吗

科技热闻

如何利用京东API接口在商品详情页展示全网价格数据信息

代码忍者

API 接口 pinduoduo API

2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。 请返回数组 nums 中交替子数组的总数。 输

福大大架构师每日一题

福大大架构师每日一题

家政平台(源码+文档+部署+讲解)

深圳亥时科技

大模型在软件测试中的应用论讨

京东科技开发者

人工智能 | 检索增强生成(RAG)

测试人

软件测试

【FAQ】HarmonyOS SDK 闭源开放能力 —ArkUI

HarmonyOS SDK

HarmonyOS

Crossover和虚拟机能玩的游戏一样吗 CrossOver相比于虚拟机有哪些优势

阿拉灯神丁

windows 游戏 虚拟机软件 Mac电脑软件 CrossOver 24

《一文讲透》第2期:两种 KWDB 的快速上手连接方式

KWDB数据库

oracle 物联网 JDBC 开源数据库 数据库架构

IoTDB 航空航天解决方案:从制造到试飞,助力国之重器翱翔长空

Apache IoTDB

如何进行需求全周期管理

易成研发中心

需求管理

《一文讲透》第 1 期:KWDB 单点安装部署

KWDB数据库

数据库 Influxdb 开源数据库 国产数据库 容器化部署

简单聊聊快递行业需要过等保的必要性-行云管家

行云管家

堡垒机 等保测评 过等保 快递

企业RAG构建中,如何用“行级别权限管控”避免数据泄露

Zilliz

权限管理 Milvus 企业数据安全

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