Apache Tephra-简介

What is Apache Tephra (TM)

 

Apache TephraApache HBase等分布式数据存储上提供全局一致的事务。虽然HBase提供了与rowregionACID操做的强大一致性,可是它牺牲了跨区域和跨表的一致性来支持可伸缩性。这种权衡要求应用程序开发人员在修改跨越区域边界时,处理确保一致性的复杂性。经过为跨地区、表或多个rpc的全球事务提供支持,Tephra简化了在HBase上的应用程序开发,而没有对许多工做负载的性能或可伸缩性产生重大影响。html

ApachePhoenix也使用了Tephra,并使用彻底的ACID语义添加跨行和跨表事务支持。apache

 

How It Works服务器

Tephra利用HBase的本地数据版原本为事务性的读和写提供多版本的并发控制(MVCC)。使用MVCC功能,每一个事务均可以看到本身的一致的数据快照,提供并发事务的快照隔离。并发

 

Tephra由三个主要组成部分组成:分布式

1.      事务服务器-维护事务状态的全局视图,分配新的事务id并执行冲突检测; oop

2.      事务客户端-协调开始、提交和回滚事务;性能

3   事务处理器协处理器 -将过滤应用于读取的数据(基于给定的事务的状态),并从旧的(再也不可见的)事务中清除全部数据。ui

 

Transaction Server

一个中央事务管理器为每一个开始的事务生成一个全局唯一的基于时间的事务ID,并维护全部进行中和最近提交的冲突检测事务的状态。虽然能够并发运行多个事务服务器实例来进行自动故障切换,但一次只有一个服务器实例正在积极地提供请求。经过Apache ZooKeeper在运行的实例中执行领导选举来协调这一点。活动事务服务器实例还将使用ZooKeeper中的服务发现界面注册自身,从而容许客户端发现当前活动的服务器实例,而无需其余配置。spa

Transaction Client

客户端调用活动事务服务器以便启动新的事务。这将向客户端返回一个新的事务实例,其中使用惟一的事务ID(用于标识事务的写入),以及要从读取(从正在进行或无效的事务)中排除的事务ID列表。执行写入时,客户端将覆盖具备事务ID的全部修改的HBase单元的时间戳。当从HBase读取数据时,客户端将跳过与任何排除的事务ID关联的单元。读取排除经过由TransactionProcessor协处理器注入的服务器端过滤器应用。htm

TransactionProcessorCoprocessor

事务处理器coprocessor被加载到全部那些执行事务读和写操做的HBase表中。当客户端读取数据时,它会根据客户端事务的快照来协调执行的服务器端过滤,任何当前正在进行的事务中的数据单元,或者那些已经失败且不能回滚的(“无效事务)的数据单元将在这些读取中被跳过。此外,TransactionProcessor清理任何对任何正在运行的事务再也不可见的数据版本。TransactionProcessor清理任何对任何正在运行的事务再也不可见的数据版本,这要么是由于单元格关联失败的事务,要么是来自更新的事务的写入成功地提交到相同的列中。

Is It Building?

Requirements

Java Runtime

Hadoop/HBaseEnvironment

Tephra须要一个健康的HBaseHDFS环境来工做。Tephra支持组件的这些版本:

 

Disclaimer