HBase:Timeline-consistent高可用讀取

2018-06-22 14:44 更新

在架構(gòu)上,HBase從一開(kāi)始就始終具有強(qiáng)大的一致性保證。所有讀取和寫(xiě)入操作都通過(guò)單個(gè)區(qū)域服務(wù)器進(jìn)行路由,這可以確保所有寫(xiě)入都按照順序進(jìn)行,并且所有讀取操作都可以看到最近提交的數(shù)據(jù)。

但是,由于將這些讀取單個(gè)歸位到單個(gè)位置,因此如果服務(wù)器變得不可用,則在區(qū)域服務(wù)器中托管的表區(qū)域?qū)⒃谝欢螘r(shí)間內(nèi)變得不可用。區(qū)域恢復(fù)過(guò)程中有三個(gè)階段:檢測(cè),分配和恢復(fù)。其中,檢測(cè)通常是最長(zhǎng)的,目前大約為20-30秒,具體取決于ZooKeeper會(huì)話(huà)超時(shí)時(shí)間。在此期間內(nèi),在恢復(fù)完成之前,客戶(hù)端將無(wú)法讀取區(qū)域數(shù)據(jù)。

但是,對(duì)于某些使用情況,數(shù)據(jù)可能是只讀的,或者對(duì)某些陳舊的數(shù)據(jù)進(jìn)行讀取是可以接受的。通過(guò)時(shí)間線(xiàn)一致(Timeline-consistent)的高可用讀取,HBase可以用于這類(lèi)對(duì)延遲敏感的應(yīng)用,這些應(yīng)用可能會(huì)在讀取完成時(shí)產(chǎn)生時(shí)間限制。

為了實(shí)現(xiàn)讀取的高可用性,HBase提供了一個(gè)稱(chēng)為區(qū)域復(fù)制的功能。在此模型中,對(duì)于表的每個(gè)區(qū)域,將會(huì)有多個(gè)副本在不同的RegionServers中打開(kāi)。默認(rèn)情況下,區(qū)域復(fù)制設(shè)置為1,因此只部署單個(gè)區(qū)域副本,并且不會(huì)從原始模型發(fā)生任何更改。如果區(qū)域復(fù)制設(shè)置為2或更多,則主服務(wù)器將分配表的區(qū)域副本。Load Balancer確保區(qū)域副本不共同托管在相同的區(qū)域服務(wù)器中,并且也位于同一機(jī)架中(如果可能)。

所有單個(gè)區(qū)域的副本將具有唯一的replica_id,從0開(kāi)始。具有replica_id == 0的區(qū)域副本稱(chēng)為主區(qū)域,其他次要區(qū)域或輔助。只有主服務(wù)器可以接受來(lái)自客戶(hù)端的寫(xiě)入,主服務(wù)器將始終包含最新的更改。由于所有寫(xiě)入操作都必須經(jīng)過(guò)主要區(qū)域,因此寫(xiě)入操作的可用性不高(意思是說(shuō),如果區(qū)域不可用,它們可能會(huì)阻塞一段時(shí)間)。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)