Omid

Omid

Omid是一個為分散式key-value存儲系統提供事務支持的開源項目,由老牌網際網路公司雅虎開源,由java語言實現,目錄僅支持HBase。

簡介

omid體系結構omid體系結構
Omid是一個為分散式key-value存儲系統提供事務支持的開源項目,由老牌網際網路公司雅虎開源,由java語言實現,目錄僅支持HBase。

體系結構

在Omid的體系結構中,以下兩個核心部分比較重要:
StatusOracle:一組用於進行預寫式日誌的伺服器。
bookkeeper:用於將日誌高效的複製到多個遠程結點(Bookies)。
在這個設計中,很好的保證了StatusOracle和HBase集群之間沒有直接聯繫,避免了不必要的耦合。

原始碼概況
在頁面下方的擴展閱讀中有Omid的原始碼,由在github託管。
主要有兩個包:com.yahoo.omid.tso和com.yahoo.omid.client,分別對應StatusOracle和HBase客戶端API。
服務端的核心類是:TSOHandler,顧名思義,他用於處理所有客戶端請求。TSOClient負責客戶端和服務端通信。

核心技術

快照隔離
快照隔離(Snapshotisolation,以下簡稱SI)技術能夠保證所有讀請求都能夠讀取一份特殊的資料庫數據快照,這份數據快照在那個瞬間是沒有並發事務的。

快照隔離技術快照隔離技術

為了實現SI,資料庫必須保存多個版本的數據,所有客戶端發起的事務操作,會根據自己的開始時間來檢測數據在不同版本之間的變更。
例如,如右邊圖片所示,事務txn_n_需要讀取被事務txn_o_更新過的數據,但是沒有被當前正在處理的事務txn_c更新完畢(我們認為一次事務沒有被提交,那么這次事務的更新對象沒有更新生效),因此,事務txn_n_可以順利進行。SI的最大優勢在於,寫請求不會阻塞其它讀請求。然而,當兩個並發事務更新同一個數據的時候,還是會存在衝突,在數據里,我們稱這個為行鎖。

相關詞條

相關搜尋

熱門詞條

聯絡我們