[发明专利]一种基于HBase的强有序队列操作的方法和装置有效
申请号: | 201710526912.6 | 申请日: | 2017-06-30 |
公开(公告)号: | CN107370797B | 公开(公告)日: | 2021-07-27 |
发明(设计)人: | 李雨明 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/24;H04L12/863;G06F16/27;G06F9/54 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 杨泽;刘芳 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 hbase 有序 队列 操作 方法 装置 | ||
1.一种基于HBase的强有序队列操作的方法,其中,该方法包括:
a获取多个客户端发送的队列操作请求,其中,所述队列操作请求所针对的队列位于HBase分布式数据库中,HBase分布式数据库包括多个区域region,不同的队列操作请求所针对的队列位于不同的region,且基于region的分裂特性,不同的region位于不同的区域服务Region Server上,Region Server用于获取队列操作请求;
b若多个队列操作请求同时且针对同一队列,对所述多个队列操作请求进行竞争队列锁;
c对于锁成功的队列操作请求,对所述队列进行与所述队列操作请求相对应的队列操作;
d所述队列操作完成后,解除所述队列锁;
e重复执行步骤b至d,直至完成对所述多个队列操作请求的执行,以实现基于HBase的强有序队列操作。
2.根据权利要求1所述的方法,其中,所述队列操作包括以下至少任一项:
-消息队列创建;
-批量消息写入;
-批量消息删除;
-消息队列删除。
3.根据权利要求2所述的方法,其中,所述队列操作包括批量消息写入,其中,该方法还包括:
基于所述队列操作请求,为所述队列的每个消息分配一个单调递增的消息ID,再结合用户ID和用户设备ID,确定每个消息所对应的行键。
4.根据权利要求3所述的方法,其中,该方法还包括:
缓存所述队列的最小消息ID和最大消息ID,当所述队列操作包括批量消息写入时,所述最大消息ID进行递增,当所述队列操作包括批量消息删除时,所述最小消息ID递增。
5.根据权利要求4所述的方法,其中,该方法还包括:
若所述缓存失效,利用HBase的扫描操作,读取所述队列中最小行键的一行和最大行键的一行,其中,所述行键中的消息ID对应所述队列的最小消息ID和最大消息ID。
6.根据权利要求3至5中任一项所述的方法,其中,该方法还包括:
根据所述行键的前两个字节,分裂HBase的区域。
7.根据权利要求1至6中任一项所述的方法,其中,该方法还包括:
所述客户端对来自各个对应用户设备的数据进行缓存,定时和/或定量地根据缓存后的数据,生成所述队列操作请求。
8.根据权利要求1至7中任一项所述的方法,其中,该方法还包括:
若HBase的其中一个区域出现异常,通过操作日志恢复消息数据,进行HLOG重塑。
9.一种基于HBase的强有序队列操作的有序装置,其中,该有序装置包括:
获取装置,用于获取多个客户端发送的队列操作请求,其中,所述队列操作请求所针对的队列位于HBase分布式数据库中,HBase分布式数据库包括多个区域region,不同的队列操作请求所针对的队列位于不同的region,且基于region的分裂特性,不同的region位于不同的区域服务Region Server上,Region Server包括获取装置;
竞争装置,用于若多个队列操作请求同时且针对同一队列,对所述多个队列操作请求进行竞争队列锁;
操作装置,用于对于锁成功的队列操作请求,对所述队列进行与所述队列操作请求相对应的队列操作;
解除装置,用于所述队列操作完成后,解除所述队列锁;
调度装置,用于调度所述竞争装置、操作装置和解除装置重复执行其操作,直至完成对所述多个队列操作请求的执行,以实现基于HBase的强有序队列操作。
10.根据权利要求9所述的有序装置,其中,所述队列操作包括以下至少任一项:
-消息队列创建;
-批量消息写入;
-批量消息删除;
-消息队列删除。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710526912.6/1.html,转载请声明来源钻瓜专利网。