当前位置: 首页 > 专利查询>福州大学专利>正文

一种基于HBase+Redis的分布式存储中间件制造技术

技术编号:27456594 阅读:28 留言:0更新日期:2021-02-25 04:59
本发明专利技术涉及一种基于HBase+Redis的分布式存储中间件,以HBase集群和Redis作为底层框架,包括存储模块和查询模块,所述存储模块包括负载均衡组件、数据缓存组件和数据同步组件;所述负载均衡组件实现HBase Region和RegionServer的负载均衡,以提高HBase的读写性能;所述数据缓存组件实现基于时间平滑方法计算的热值缓存淘汰策略,以提高缓存命中率;所述数据同步组件实现基于协处理器的HBase和Redis的数据同步,以避免脏数据的产生。该分布式存储中间件有利于提高数据读写速率。式存储中间件有利于提高数据读写速率。式存储中间件有利于提高数据读写速率。

【技术实现步骤摘要】
一种基于HBase+Redis的分布式存储中间件


[0001]本专利技术属于数据库
,具体涉及一种基于HBase+Redis提高数据读写速率的分布式存储中间件。

技术介绍

[0002]随着互联网的发展和大数据时代的到来,传统的数据存储、数据处理技术难以适应数据爆炸式的增长,非关系型数据库应运而生。HBase作为NoSQL数据库的典型代表,已被广泛应用于各行各业的数据存储与管理中。在HBase的发展过程中,HBase的负载均衡问题也开始显现。例如,在HBase分布式数据库环境中,由于分布式数据库中节点性能上的差异以及已存储数据量不同和数据库访问请求量不同,经常会出现以下情况:在某一个时刻,分布式数据库中某些节点的访问频率很高,节点负载很重,而另一些节点的访问频率很低,节点负载很低,导致了分布式数据库中节点负载不均衡的情况。负载不均衡就会影响HBase数据读写的性能,所以,需要通过一定的负载均衡策略,来均衡分布式数据库中各个节点的负载,使各个节点的负载达到均衡分配的状态,从而提高数据的读写性能。HBase作为分布式数据库,将数据存储在磁盘上,每次都需要从磁盘读取数据,影响数据读性能。
[0003]目前,在HBase上提高读写速度的负载均衡方案有基于子表限制的负载均衡方案,基于热点访问的负载均衡改进算法。在HBase增加数据缓存的方案有基于内存进行缓存的方案、使用原生Redis作为缓存的方案。基于子表限制的负载均衡方案,增加了对表的限制,只能在某些场景下提高系统性能,具有一定局限性;基于热点访问的负载均衡改进算法,在数据写入时需要计算每个Region的负载,再将数据写入Region中,这会影响数据的写性能。基于内存进行缓存的方案,可以提高数据的读性能,但是局限于内存的大小,无法适用于大规模的数据;基于原生Redis进行缓存的方案,使用LRU算法作为缓存淘汰策略,对于周期性、偶发性的批量查询的命中率很低。

技术实现思路

[0004]本专利技术的目的在于提供一种基于HBase+Redis的分布式存储中间件,该分布式存储中间件有利于提高数据读写速率。
[0005]为实现上述目的,本专利技术采用的技术方案是:一种基于HBase+Redis的分布式存储中间件,以HBase集群和Redis作为底层框架,包括存储模块和查询模块,所述存储模块包括负载均衡组件、数据缓存组件和数据同步组件;所述负载均衡组件实现HBase Region和RegionServer的负载均衡,以提高HBase的读写性能;所述数据缓存组件实现基于时间平滑方法计算的热值缓存淘汰策略,以提高缓存命中率;所述数据同步组件实现基于协处理器的HBase和Redis的数据同步,以避免脏数据的产生。
[0006]进一步地,所述负载均衡组件包括Region级别以及RegionServer级别的两种负载均衡策略。
[0007]进一步地,所述Region级别的负载均衡策略,根据预分区和带虚拟节点的一致性
哈希算法,避免数据写热点,即对HBase进行预分区,获取Region个数,将Region个数作为节点,采用带虚拟节点的一致性哈希算法获取数据存储Rowkey的Startkey。
[0008]进一步地,获取Region个数,包括以下步骤:
[0009]步骤a1:确定集群的预分区个数,单个节点的预分区个数的计算公式如下:
[0010][0011]其中,M表示RegionServer的内存大小;F表示RegionServer分给memstore的比例;S表示memstore的大小;A为表中列族的个数;
[0012]步骤a2:确定集群的节点个数,集群总的预分区个数的计算公式如下:
[0013]R=P*N
ꢀꢀꢀ
(2)
[0014]其中,R表示集群预分区的总个数,P表示每个节点的预分区个数,N表示集群中节点的个数。
[0015]进一步地,带虚拟节点的一致性哈希算法采用SHA_1算法。
[0016]进一步地,所述RegionServer级别的负载均衡策略,使用贪心算法对RegionServer中的Region进行调换,包括如下步骤:
[0017]步骤b1:输入RegionServer集合、负载均衡最大执行次数N,计算节点数n;
[0018]步骤b2:获取每个RegionServer中每个Region的请求数,统计节点的请求数作为负载load_i,i<n,统计最大负载load_max、最小负载load_min、集群的总负载load_sum和平均负载load_avg;
[0019]步骤b3:根据平均负载load_avg计算节点负载的理想上界load_Lmax和下界load_Lmin;
[0020]步骤b4:设置i=1,使用最小最大优先级队列定义超负载队列overload_queue和低负载队列underload_queue;
[0021]步骤b5:如果i<=n,转步骤b6,否则转步骤b11;
[0022]步骤b6:如果load_i>load_Lmax,转步骤b7,否则转步骤b8;
[0023]步骤b7:将第i个节点加入超负载队列;
[0024]步骤b8:如果load_i<load_Lmin,转步骤b9,否则转步骤b10;
[0025]步骤b9:将第i个节点加入低负载队列;
[0026]步骤b10:i=i+1,转步骤b5;
[0027]步骤b11:设置I=1,计算当前负载均衡指标current_T=load_max/load_avg;
[0028]步骤b12:如果i<=N,转步骤b13,否则结束;
[0029]步骤b13:搜索可交换Region,从overload_queue中取出最大负载节点为Nmax及负载最大的可交换Region为Rmax,从underload_queue取出最小负载节点为Nmin及负载最小的可交换Region为Rmin;
[0030]步骤b14:计算负载load_Nmax和load_Rmax,load_Nmin和load_Rmin;
[0031]h=load_Rmax

load_Rmin
[0032]步骤b15:如果Load_Rmax>load_Rmin且load_Nmax-h>load_Lmin且load_Nmin+h<load_Lmax,转步骤b16,否则转步骤b19;
[0033]步骤b16:交换Rmax和Rmin的位置,同时更新load_Nmax、load_Nmin、overload_
queue、underload_queue,计算当前负载均衡指标new_T;
[0034]步骤b17:如果new_T>current_T,转步骤b18,否则转步骤b20;
[0035]步骤b1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于HBase+Redis的分布式存储中间件,其特征在于,以HBase集群和Redis作为底层框架,包括存储模块和查询模块,所述存储模块包括负载均衡组件、数据缓存组件和数据同步组件;所述负载均衡组件实现HBase Region和RegionServer的负载均衡,以提高HBase的读写性能;所述数据缓存组件实现基于时间平滑方法计算的热值缓存淘汰策略,以提高缓存命中率;所述数据同步组件实现基于协处理器的HBase和Redis的数据同步,以避免脏数据的产生。2.根据权利要求1所述的一种基于HBase+Redis的分布式存储中间件,其特征在于,所述负载均衡组件包括Region级别以及RegionServer级别的两种负载均衡策略。3.根据权利要求2所述的一种基于HBase+Redis的分布式存储中间件,其特征在于,所述Region级别的负载均衡策略,根据预分区和带虚拟节点的一致性哈希算法,避免数据写热点,即对HBase进行预分区,获取Region个数,将Region个数作为节点,采用带虚拟节点的一致性哈希算法获取数据存储Rowkey的Startkey。4.根据权利要求3所述的一种基于HBase+Redis的分布式存储中间件,其特征在于,获取Region个数,包括以下步骤:步骤a1:确定集群的预分区个数,单个节点的预分区个数的计算公式如下:其中,M表示RegionServer的内存大小;F表示RegionServer分给memstore的比例;S表示memstore的大小;A为表中列族的个数;步骤a2:确定集群的节点个数,集群总的预分区个数的计算公式如下:R=P*N
ꢀꢀꢀ
(2)其中,R表示集群预分区的总个数,P表示每个节点的预分区个数,N表示集群中节点的个数。5.根据权利要求3所述的一种基于HBase+Redis的分布式存储中间件,其特征在于,带虚拟节点的一致性哈希算法采用SHA_1算法。6.根据权利要求2所述的一种基于HBase+Redis的分布式存储中间件,其特征在于,所述RegionServer级别的负载均衡策略,使用贪心算法对RegionServer中的Region进行调换,包括如下步骤:步骤b1:输入RegionServer集合、负载均衡最大执行次数N,计算节点数n;步骤b2:获取每个RegionServer中每个Region的请求数,统计节点的请求数作为负载load_i,i<n,统计最大负载load_max、最小负载load_min、集群的总负载load_sum和平均负载load_avg;步骤b3:根据平均负载load_avg计算节点负载的理想上界load_Lmax和下界load_Lmin;步骤b4:设置i=1,使用最小最大优先级队列定义超负载队列overload_queue和低负载队列underload_queue;步骤b5:如果i<=n,转步骤b6,否则转步骤b11;步骤b6:如果load_i>load_Lmax,转步骤b7,否则转步骤b8;步骤b7:将第i个节点加入超负载队列;
...

【专利技术属性】
技术研发人员:郭昆王钦泽郭文忠陈羽中许玲玲魏明洋
申请(专利权)人:福州大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1