【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

评论 2 条评论

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

微信朋友圈高性能分析

十二万伏特皮卡丘

架构训练营

产研效率提升-工具篇-消息中心

循环智能

效率 方法 工具 流程 消息

模块二作业

秀聪

架构实战营

在线教育,百鬼夜行?

白洞计划

【LeetCode】最高频元素的频数Java题解

Albert

算法 LeetCode 7月日更

浪潮云洲走进包头 展示特色产业“触网”路径

浪潮云

工业互联网

Netty浅析

CodeWithBuff

Java Netty 源码剖析 I/O

超好玩:使用 Erda 构建部署应用是什么体验?

尔达Erda

开源 DevOps 云原生 PaaS Go 语言

ACM金牌选手算法讲解《线性表》

编程熊

算法 LeetCode 线性表 数据结构与算法

架构实战营模块 2 作业

zlz

Pandas高级教程之:window操作

程序那些事

Python 数据分析 pandas 程序那些事

DAPP系统源码模式开发定制

获客I3O6O643Z97

DAPP智能合约交易系统开发 DAPP系统开发

白林学院校友会小程序前端和后台管理系统设计方案

CC同学

校友录小程序 校友会小程序 同学录小程序

模块2作业G20210698020270

哆啦A萌

Rust从0到1-并发-状态共享

rust 并发 Concurrency 状态共享 Shared-State

Vue进阶(四十三):Vuex之Mutations详解

No Silver Bullet

Vue 7月日更 mutations

架构训练营模块二作业

以吻封笺

Python OpenCV 图像开闭操作,图像处理取经之旅第 39 篇

梦想橡皮擦

7月日更

手写插入排序算法

实力程序员

程序员 算法 排序 实力

调研字节码插桩技术,用于互联网分布式系统监控设计和实现!

小傅哥

Java asm javaagent 字节码增强 系统监控

PHA挖矿系统源码开发介绍

获客I3O6O643Z97

PHA矿机挖矿 PHA质押挖矿

Go语言,并发控制神器之Context

微客鸟窝

Go 语言

架构实战营模块二作业

A-领悟 Lifetruth‖

#架构实战营

模块二作业 微信朋友圈高性能复杂度分析

君子意如何

「架构师训练营第 1 期」

Vue进阶(九十七):对象动态添加属性和值

No Silver Bullet

Vue set 7月日更

WICC 2021即将召开 荔枝将揭秘高音质体验之关键技术

融云 RongCloud

秘乐魔方短视频系统开发简介

获客I3O6O643Z97

短视频挖矿

史上最全关于苹果开发者账号及上架APPStore总结

孙叫兽

苹果 APP开发 appstore app上架

带你了解两种线性规划的方法:稀疏矩阵存储和预处理

华为云开发者联盟

矩阵 存储 线性规划 稀疏矩阵 预处理

微信朋友圈的高性能复杂度分析

tjudream

架构 高性能 朋友圈

【Flutter 专题】82 初识 Flutter Stream (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

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