
# HBase增强特性
#### 全局索引
- 索引数据独立表存储：索引数据同步到单独索引表，索引表独立region进行分布，解耦实际的用户数据表，增强region稳定性。
- 索引查询链路优化：索引数据按照索引字段排序，只需要查询索引表的一个或者多个连续region，支持索引表中包含冗余列的用户数据，进行索引查询时在索引表上就可闭环，不需要再查询用户表。
 
#### Off Heap缓存
Data Block缓存到Off heap，读取数据过程中无需将数据拷贝到堆内存，降低性能毛刺，保证查询稳定性。
#### Tries Index
优化DataBlockIndex，将索引转化为前缀树，减少重复前缀占用内存，并使用LOUDS-Sparse编码成线性结构，节省的内存空间可以用于缓存更多的数据，减少数据读取的IO，提升整体吞吐量和时延的性能，优化前后对比节省了80%的内存消耗。
#### HBase双读
HBase存储场景下，因为GC、网络抖动、磁盘坏掉等原因，很难保证99.9%的查询稳定性。为了满足大数据量随机可读的要求，新增了HBase双读特性。HBase双读特性是建立在主备集群容灾能力之上，两套集群同时产生毛刺的概率要远远小于一套集群，采用双集群并发，保证查询的稳定性。当用户发起查询请求时，同时查询两个集群的HBase服务，在等待一段时间（最大容忍的毛刺时间）后，如果主集群没有返回结果，则可以使用响应最快的集群数据。
#### HBase冷热分离
数据按照时间戳写入，以热数据访问为主，冷数据存储在OBS上，降低存储成本，热数据存储在云盘上，保证查询时延。整体上大幅度降低了冷数据的存储成本，提升热数据的访问性能。
#### 数据热点自愈
HBase数据热点自愈是为解决因数据访问不均匀导致部分节点承受过高负载，进而引发系统性能下降问题而引入的自动调节机制。HBase作为分布式KV数据库，Region作为数据管理的最小单元。当用户表设计或Rowkey规划不合理时，请求会过度集中在少数固定Region上，导致业务压力集中于单节点，造成业务侧可感知的性能下降甚至请求失败。为此，HBase数据热点自愈需要具备以下核心能力：
- 通过监控各节点请求流量并进行聚合分析，快速识别高负载节点和热点Region，为问题定位提供依据。
- 基于采集信息自动诊断并执行Region分裂操作，通过打散热点区域来分散请求压力。
- 具备热点Rowkey的智能识别能力及相应的限流机制，形成完整的热点问题闭环处理方案。
 
