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