Apache Tephra-简介

来源:互联网 发布:淘宝两颗心 编辑:程序博客网 时间:2024/05/16 15:34

What is Apache Tephra (TM)

 

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

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

 

How It Works

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

 

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

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

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

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

 

Transaction Server

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

Transaction Client

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

TransactionProcessorCoprocessor

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

Is It Building?

Requirements

Java Runtime

Hadoop/HBaseEnvironment

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

 

Disclaimer

 

原创粉丝点击