首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

GRIT:eBay 研发的跨微服务分布式事务协议

2019-12-19

eBay 的技能人员最近展现了一种称为 GRIT 的散布式业务协议,支撑跨多个具有多个底层数据库的微服务的 ACID业务。

本文描绘了在 2019 年 IEEE 数据工程国际会议上发布的 GRIT 协议的根本思维,并供给了一个运用部分协议完结 JanusGraph 业务存储后端的示例。本例重视的是只要一个数据库的体系,可是正如咱们所说,GRIT 能够支撑包含多个数据库的体系的 ACID 业务 。

在 微服务 体系结构中,运用程序或许调用多个微服务,这些微服务一般由不同的团队以不同的运用程序语言完结,并或许运用多个底层数据库来完结其功用。这种盛行的架构为跨多个微服务的散布式业务一致性带来了新的应战。在微服务上下文中支撑 ACID 业务是一个实践的需求,可是运用现有的技能很难完结,因为为单个数据库规划的散布式业务机制很难经过微服务扩展到多个数据库。

在触及多个独立数据库的环境中,在运用程序不做额定作业的情况下,传统的两阶段提交协议 [1] 根本上是体系散布式业务的专一挑选。可是,因为或许需求和谐许多参加交互的体系,而且期间需求确定,它在横向扩展平台上的作用并不好。另一方面,运用由比如 Saga 之类的结构 [2] 履行的业务日志会导致运用程序发生杂乱的补偿逻辑,而且因为部分成功的业务不可逆,或许会影响业务。

为了处理这些问题,咱们开发了 GRIT ,这是一种用于散布式业务大局一致性的新协议,它奇妙地结合了来自达观并发操控 [3]、2PC 和确定性数据库 [4][5] 的思维,完结了跨多个底层数据库的微服务的高功能、大局一致性业务。

下图说明晰具有两个数据库的微服务体系中的 GRIT 协议。GRIT 组成部分包含 GTM、GTL、DBTM、DBTL 和 LogPlayer,如下图所示。

上图是在不凭借 GRIT 组件的情况下,一个一般的微服务架构的体系,它有两个横向扩展的数据库。它的组成部分如下:

GRIT 的首要组件包含:

为了了解协议的细节,咱们运用下图来展现散布式业务的首要进程。

在 GRIT 中,散布式业务要阅历三个阶段:

总的来说,咱们的办法在履行和提交进程中都避免了失望确定,也避免了物理提交等候。咱们选用达观的办法,运用逻辑提交日志,并运用确定性数据库技能将物理数据库修正移出提交决议计划进程,从而使提交进程十分高效,这与仿制中的日志播映相似。

GRIT 能够为调用微服务的运用程序完结高吞吐量且可串行化的散布式业务一致性,而且只需最少的和谐。GRIT 十分适合于抵触很少的业务,并为运用程序供给了要害的功用,不然就需求杂乱的机制来完结跨多个底层数据库的微服务的业务一致性。

如你所见,GRIT 协议包含两个部分:一个针对每个数据库,由 DBTM、DBTL 和 LogPlayer 履行,另一个跨数据库和谐,由 GTM 和 DBTM 履行。鄙人图中,咱们将演示下怎么运用 GRIT 协议的一部分为 JanusGraph 规划一个业务性图形存储后端。

下图展现了怎么运用两个可用区域布置来完结 NuGraphStore,仅供参考:

JanusGraph 的 NuGraphStore 后端包含以下几个组件:

当运用程序履行业务时,它能够从存储区读取数据及向存储区写入数据。关于读操作,存储插件直接与存储服务器通讯。当运用程序在业务上下文中从存储中读取数据时,存储插件还会盯梢读集。每次读取取得的有用信息是 key, lsn 对,其间 lsn 是反映读取键值时存储引擎状况的日志序列号。LSN 是业务修正条目的日志索引。它由 LogStore 分配,用于界说后端数据库的快照。没有找到的键也被记载为读集的一部分。与读操作不同,写操作的存储插件并不直接与存储服务器通讯。相反,存储插件缓存与业务写集对应的写入。

当业务提交时,存储插件将提交恳求连同为业务捕获的读集和写集提交给 DBTM。DBTM 为业务 OCC 履行规范的抵触查看。假如没有抵触,它将把写集耐久化到仿制的 LogStore 中。此刻,业务提交逻辑完结,DBTM 将呼应发回存储插件。LogPlayer 盯梢 LogStore 并依据数据散布将日志条目播映到后端的分片服务器。

需求指出的是,上面描绘是一个根本规划,功能和可靠性还有许多能够进步的当地。咱们信任,在跨组件优化或运用 DBTM 仿制来完结更高的可靠性之前,完善根本组件更高效。相同,咱们也有不同的办法来获取读集和写集。关于 KV 存储,咱们在抵触查看时需求的最简略方式是 key, lsn 对。可是,为了支撑更杂乱的体系,读集或许包含规模或谓词 [6]。在本文写作时,NuGraphStore 正在阅历开源进程。

1.  C. Mohan, Bruce Lindsay and R. Obermarck, “R* 散布式数据库办理体系中的业务办理” ACM Transactions on Database Systems , Volume 11 Issue 4, Dec. 1986, Pages 378 - 396.

2.  Pat Helland, “散布式业务之外:叛教者的观念”, CIDR 2007. 

3.  H.T. Kung, J.T. Robinson, “并发操控的达观办法”, ACM Transactions on Database Systems 6:2, June, 1981.

4.  Thomson, Alexander and Diamond, Thaddeus and Shao, Philip and Ren, Kun and Weng, Shu-Chun and Abadi, Daniel J, “Calvin:分区数据库体系的快速散布式业务”, SIGMOD 2012.

5.  Kun Ren, Alexander Thomson, Daniel Abadi, “确定性数据库体系优缺点评价”, VLDB 2014.

6. Thomas Neumann, Tobias M hlbauer, Alfons Kemper, “主存数据库体系的快速可串行化多版别并发操控”, SIGMOD 2015

本文开始发布于 eBay 的技能博客,由 InfoQ 中文站翻译并共享。

GRIT: a Protocol for Distributed Transactions across Microservices

热门文章

随机推荐

推荐文章