HBase:Timeline-consistent高可用读取

2018-06-22 14:44 更新

在架构上,HBase从一开始就始终具有强大的一致性保证。所有读取和写入操作都通过单个区域服务器进行路由,这可以确保所有写入都按照顺序进行,并且所有读取操作都可以看到最近提交的数据。

但是,由于将这些读取单个归位到单个位置,因此如果服务器变得不可用,则在区域服务器中托管的表区域将在一段时间内变得不可用。区域恢复过程中有三个阶段:检测,分配和恢复。其中,检测通常是最长的,目前大约为20-30秒,具体取决于ZooKeeper会话超时时间。在此期间内,在恢复完成之前,客户端将无法读取区域数据。

但是,对于某些使用情况,数据可能是只读的,或者对某些陈旧的数据进行读取是可以接受的。通过时间线一致(Timeline-consistent)的高可用读取,HBase可以用于这类对延迟敏感的应用,这些应用可能会在读取完成时产生时间限制。

为了实现读取的高可用性,HBase提供了一个称为区域复制的功能。在此模型中,对于表的每个区域,将会有多个副本在不同的RegionServers中打开。默认情况下,区域复制设置为1,因此只部署单个区域副本,并且不会从原始模型发生任何更改。如果区域复制设置为2或更多,则主服务器将分配表的区域副本。Load Balancer确保区域副本不共同托管在相同的区域服务器中,并且也位于同一机架中(如果可能)。

所有单个区域的副本将具有唯一的replica_id,从0开始。具有replica_id == 0的区域副本称为主区域,其他次要区域或辅助。只有主服务器可以接受来自客户端的写入,主服务器将始终包含最新的更改。由于所有写入操作都必须经过主要区域,因此写入操作的可用性不高(意思是说,如果区域不可用,它们可能会阻塞一段时间)。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号