[发明专利]一种基于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 有序 队列 操作 方法 装置 | ||
本发明提供了一种基于HBase的强有序队列操作的方法和装置,获取多个客户端发送的队列操作请求,其中,所述队列操作请求所针对的队列位于HBase分布式数据库中,若多个队列操作请求同时且针对同一队列,对所述多个队列操作请求进行竞争队列锁,对于锁成功的队列操作请求,对所述队列进行与所述队列操作请求相对应的队列操作,所述队列操作完成后,解除所述队列锁,重复执行上述步骤,直至完成对所述多个队列操作请求的执行,以实现基于HBase的强有序队列操作。与现有技术相比,本发明具有高性能强有序、高可用性、支持海量设备和数据不容易丢失等优点,可应用于云的物联网接入服务,性能好、可靠性高、水平扩展性强,满足海量用户和设备的接入。
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于HBase的强有序队列操作的技术。
背景技术
公有云上,物联网服务往往是多租户的,每个用户有不同的设备,每个订阅设备有自己的消息队列。随着用户数和设备数目的增多,队列数目和队列数据大小也会剧增,往往会成为性能上的瓶颈。
现有可用的分布式队列方案大都是用Redis或者Kafka来实现,首先从分布式角度,两者都支持集群模式,能够形成分布式系统。其次从队列角度,Redis支持队列结构,Kafka的topic满足消息的有序写入,都可以当成队列使用。最后在多租户角度,可以做逻辑上的划分,比如以user+client形成唯一ID,作为Redis的Key或者Kafka的topic,即可形成多租户的分布式队列系统。
然而,Redis和Kafka在一定程度上,可以满足小规模的需求,但无法满足规模更大,可靠性更高的场景。首先从Redis来说,它是基于内存的数据库,对于海量存储来说,成本会相当高,它的集群模式是主从式的,存在丢失数据的风险,比如在主从复制时主节点宕机,或者主从节点都宕机了,数据会出现不一致和丢失的情况。其次从Kafka来说,存在性能瓶颈问题,由于Kafka将topic等信息存储在zookeeper中,当topic数目达到一定规模后,即znode数目很多,zookeeper的限制会导致kafka性能急剧下降。可见,目前公有云物联网服务商无法支撑海量接入规模,也无法做到高可用性和高可靠性。
因此,如何提供一种能够支持海量用户和设备接入的方法,成为本领域技术人员亟需解决的技术问题一致。
发明内容
本发明的目的是提供一种基于HBase的强有序队列操作的方法和装置。
根据本发明的一个方面,提供了一种基于HBase的强有序队列操作的方法,其中,该方法包括:
a获取多个客户端发送的队列操作请求,其中,所述队列操作请求所针对的队列位于HBase分布式数据库中;
b若多个队列操作请求同时且针对同一队列,对所述多个队列操作请求进行竞争队列锁;
c对于锁成功的队列操作请求,对所述队列进行与所述队列操作请求相对应的队列操作;
d所述队列操作完成后,解除所述队列锁;
e重复执行步骤b至d,直至完成对所述多个队列操作请求的执行,以实现基于HBase的强有序队列操作。
优选地,所述队列操作包括以下至少任一项:
-消息队列创建;
-批量消息写入;
-批量消息删除;
-消息队列删除。
更优选地,所述队列操作包括批量消息写入,其中,该方法还包括:
基于所述队列操作请求,为所述队列的每个消息分配一个单调递增的消息ID,再结合用户ID和用户设备ID,确定每个消息所对应的行键。
更优选地,该方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710526912.6/2.html,转载请声明来源钻瓜专利网。