一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于物联网流数据的发布订阅查询方法

2022-07-31 07:49:50 来源:中国专利 TAG:


1.本发明涉及物联网查询领域,更确切地说,它涉及一种用于物联网流数据的发布订阅查询方法。


背景技术:

2.近年来,随着物联网传感器技术的飞速发展,生活中遍布各种传感器进行数据的采集,用户根据其对不同的感兴趣的信息发布多种基于关键词和位置信息的订阅查询,基于位置的传感器信息订阅服务得以迅速发展。例如:apache kafka就是一个常在业界使用的分布式的发布-订阅消息系统,能够支撑海量数据的数据传递。在离线和实时的消息处理业务系统中,kafka都有广泛的应用,kafka将消息持久化到磁盘中,并对消息创建了备份保证了数据的安全。
3.但是现有的发布订阅系统用于物联网海量异构的流数据查询仍然面临以下挑战:首先,订阅者的订阅分布、兴趣以及传感器数据采集的动态性,造成了分布式订阅查询网络中不同服务器的负载不平衡,从而导致了订阅查询的滞后性,其吞吐量会出现明显的下滑。其次,没有一个专门针对物联网流数据结构涉及的发布订阅系统,现有技术的负载估算预测不准确,不利于负载均衡;最后,实时的负载均衡是np难问题,没有较好的解决方案可以快速进行负载的重新分配。因此,在物联网场景中直接使用现有的发布订阅系统,难以满足实际应用中的需要。


技术实现要素:

4.本发明的目的是克服现有技术中的不足,提供了一种用于物联网流数据的发布订阅查询方法,所述技术方案如下:
5.s1、发布订阅系统初始化:对查询物联网部署设备的地理空间进行划分,构建划分空间的空间四叉树索引结构,为不同的服务器初始化分配空间区域,对每一个划分后的区域指定相应的服务器进行发布订阅任务处理,同时维护工作负载估算信息;所述工作负载估算信息包括当前订阅查询数量、跨区域查询数量和数据处理数量;
6.s2、用户订阅信息更新维护:通过空间四叉树索引结构进行订阅信息的更新,同时更新关键字查询索引,维护订阅查询信息,更新工作负载估算信息中的当前订阅查询数量和跨区域查询数量;
7.s3、发布数据信息实时匹配:出现发布数据信息时,通过空间四叉树索引结构进行信息空间归属判断,并将数据发送给相应的服务器进行发布信息与订阅查询的匹配工作,后更新工作负载估算信息中的数据处理数量;
8.s4、线性时间估算负载变化:估算空间划分区域的负载变化,更新全局查询信息,包括判断有无订阅查询时间截止和进行查询删除操作,同时计算负载分配差异化阈值;
9.s5、负载均衡调整:当部分服务器负载分配差异超过预设阈值时,进行全局负载重分配。
10.作为优选,s1中,采用矩形划分法将发布信息可能出现的地理空间通过经纬度进行均匀的矩形划分,同时构建空间四叉树索引结构;所述空间四叉树索引结构具有叶子节点,所述叶子节点表示每一个被划分后的矩形区域。
11.作为优选,s1中,初始化服务器负载分配,通过随机分配让不同的服务器负责相同数量的空间区域,并记录区域分配表和区域维护负载估算信息表;所述区域分配表包括:空间区域到服务器编号的映射;所述区域维护负载估算信息表包括:当前时刻区域查询数量、当前时刻发布数据数量、跨区域查询数量、历史信息和新增跨区域查询数量。
12.作为优选,s2包括:
13.s201、订阅查询更新操作判断;
14.s202、订阅查询操作预处理;
15.s203、服务器端的关键词索引树更新;
16.s204、划分区域的负载估算信息更新。
17.作为优选,s201中,对接收到的订阅查询结构判断其对应的订阅查询更新操作;所述订阅查询更新操作包括:查询增加、查询删除、查询范围更新和非查询范围更新;所述订阅查询结构表示为:
18.qi=《k,r,t,v》
19.其中,k表示查询中的关键词文本信息,所述关键词文本信息通过且和或进行连接;r表示查询的范围,所述查询的范围由左上角经纬度坐标和右下角经纬度坐标组成;t表示查询持续时间,当到达所述查询持续时间后进行查询删除;v表示查询的约束数值条件。
20.作为优选,s202包括:
21.s2021、订阅查询增加操作预处理:对查询的范围进行处理,将两个经纬度坐标扩充为四个坐标点,通过空间四叉树索引判断查询范围涉及到几个划分后的区域空间,使用bkdrhash哈希函数计算得到查询的id,对查询进行切分,同时将切分后的查询分配给负责该区域的服务器,该服务器进行查询索引添加,更新关键词索引树;
22.s2022、订阅查询删除预处理和非查询范围更新操作预处理:使用bkdrhash哈希函数计算得到查询qi的id,从记录查询表中,查找qi的子查询划分情况,将查询删除和非查询范围更新任务发布给相对应的服务器,进行更新;
23.s2023、订阅查询范围更新操作预处理:使用bkdrhash哈希函数计算得到订阅查询结构qi的id,从记录查询表中,查找订阅查询结构qi的子查询划分情况,首先执行查询删除操作,后执行新的查询增加操作,完成查询范围更新操作更新。
24.作为优选,s3中,所述发布数据信息表示为:
25.o=《text,loc,time,val》
26.其中,text表示数据关键词信息,loc表示经纬度信息,time表示信息发布的时间,val表示对应关键词的数值信息数据。
27.作为优选,s4中,所述空间划分区域的负载表示为:
[0028][0029]
其中,li代表第i个空间划分区域的负载大小,表示当前时刻在该区域中存在的订阅查询数量,表示当前时刻出现在该区域中的发布数据数量,表示当前时刻在该
区域中需要更新的查询数量,a1、a2和a3分别代表相应的超参数;
[0030]
空间四叉树索引结构对服务器k的的负载表示为:
[0031][0032]
其中,n表示为该服务器负责的划分区域空间数量。
[0033]
作为优选,s4中,负载分配的不均衡阈值系数表示为:
[0034][0035]
其中,m表示有m个服务器,wj表示每个服务器的负载,μ表示最佳情况下每个服务器的负载量,cov表示当前分配的不均衡程度;cov越低代表负载越均衡,当cov超过阈值β时,需要进行负载任务的重新分配。
[0036]
作为优选,s5中,首先让各个服务器初始化订阅查询信息;然后采用贪心算法,根据用户各自的负载对其订阅的数据率总量进行排序;迭代地将负载最大划分区域分配给当前负载最小的服务器,直至将所有空间划分区域都分配给相应的服务器。
[0037]
本发明的有益效果是:本发明提供了一种用于物联网流数据的发布订阅查询方法,可以通过线性时间进行负载计算后进行辅助均衡分配,大幅提高查询系统吞吐率,进而可以满足实际应用中的需要。
附图说明
[0038]
图1为本技术提供的用于物联网流数据的发布订阅查询方法的整体流程图;
[0039]
图2为本技术提供的空间划分四叉树索引的结构示意图;
[0040]
图3为本技术提供的订阅者订阅更新的流程图;
[0041]
图4为本技术提供的关键词索引树的结构示意图;
[0042]
图5为本技术提供的发布数据匹配订阅查询的流程图;
[0043]
图6为本技术提供的线性时间估算负载变化的流程图;
[0044]
图7为本技术提供的负载估算信息维护的结构示意图。
具体实施方式
[0045]
下面结合实施例对本发明做进一步描述。下述实施例的说明只是用于帮助理解本发明。应当指出,对于本技术领域的普通人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
[0046]
实施例1:
[0047]
本技术提出一种用于物联网流数据的发布订阅查询方法,可以通过线性时间进行负载计算后进行辅助均衡分配,大幅提高查询系统吞吐率,如图1所示,该方法包括:
[0048]
s1、发布订阅系统初始化:对查询物联网部署设备的地理空间进行划分,构建划分空间的空间四叉树索引结构(如图2所示),为不同的服务器初始化分配空间区域,对每一个划分后的区域指定相应的服务器进行发布订阅任务处理,同时维护工作负载估算信息;工
作负载估算信息包括当前订阅查询数量、跨区域查询数量和数据处理数量;
[0049]
s2、用户订阅信息更新维护:通过空间四叉树索引结构进行订阅信息的更新,同时更新关键字查询索引,维护订阅查询信息,更新工作负载估算信息中的当前订阅查询数量和跨区域查询数量;需要说明的是,一个服务器的计算资源是有限的,在某一固定时间段该服务器可以处理的查询内容更新请求也是有限的;
[0050]
s3、发布数据信息实时匹配:出现发布数据信息时,通过空间四叉树索引结构进行信息空间归属判断,并将数据发送给相应的服务器进行发布信息与订阅查询的匹配工作,后更新工作负载估算信息中的数据处理数量;
[0051]
s4、线性时间估算负载变化:估算空间划分区域的负载变化,更新全局查询信息,包括判断有无订阅查询时间截止和进行查询删除操作,同时计算负载分配差异化阈值;
[0052]
s5、负载均衡调整:当部分服务器负载分配差异超过预设阈值时,进行全局负载重分配。
[0053]
s1中,采用矩形划分法将发布信息可能出现的地理空间通过经纬度进行均匀的矩形划分,同时构建空间四叉树索引结构;空间四叉树索引结构具有叶子节点,叶子节点表示每一个被划分后的矩形区域。
[0054]
此外,s1中,初始化服务器负载分配,通过随机分配让不同的服务器负责相同数量的空间区域,并记录区域分配表和区域维护负载估算信息表;区域分配表包括:空间区域到服务器编号的映射;区域维护负载估算信息表包括:当前时刻区域查询数量、当前时刻发布数据数量、跨区域查询数量、历史信息和新增跨区域查询数量。
[0055]
示例地,划分的矩形区域数量为n(通常为4的整数倍),现有的工作服务器数量为m,选取其中k台服务器作为发布数据流的调度和订阅查询的调度服务器,其余的m-k个服务器作为订阅匹配服务器,将n个空间区域均匀的随机划分给m-k个服务器进行负载划分,并维护相应的任务分配表。
[0056]
s2中,根据空间四叉树索引结构对查询空间进行划分,判断订阅查询更新需要涉及到的空间区域编号,并查表找出对应的服务器进行订阅查询索引的更新,如图3所示,具体包括:
[0057]
s201、订阅查询更新操作判断;
[0058]
s202、订阅查询操作预处理;
[0059]
s203、服务器端的关键词索引树更新;
[0060]
s204、划分区域的负载估算信息更新。
[0061]
s201中,对接收到的订阅查询结构判断其对应的订阅查询更新操作;订阅查询更新操作包括:查询增加、查询删除、查询范围更新和非查询范围更新;订阅查询结构表示为:
[0062]
qi=《k,r,t,v》
[0063]
其中,k表示查询中的关键词文本信息,关键词文本信息通过且和或进行连接,比如“温度and\or精度0.01”;r表示查询的范围,查询的范围由左上角经纬度坐标和右下角经纬度坐标组成,比如“({26.31e,119.46w},{26.59e,120.13w})”;t表示查询持续时间,当到达查询持续时间后进行查询删除;v表示查询的约束数值条件,比如“(x《=21.00and\or x》=25.00)”。
[0064]
s202包括:
[0065]
s2021、订阅查询增加操作预处理:对查询的范围进行处理,将两个经纬度坐标扩充为四个坐标点,通过空间四叉树索引结构判断查询范围涉及到几个划分后的区域空间,使用bkdrhash哈希函数计算得到订阅查询结构qi的id,对订阅查询结构qi进行切分,分成多个子区域;同时将切分后的查询分配给负责该区域的服务器,该服务器进行查询索引添加,更新关键词索引树。示例地,通过查询id配合空间分区编号得到新的子查询q
i_j
的id和子查询的查询范围,将子查询增加任务根据其所对应的分区编号分配到负责该空间区域的服务器中进行处理,并记录查询qi的子查询划分情况。
[0066]
s2022、订阅查询删除预处理和非查询范围更新操作预处理:使用bkdrhash哈希函数计算得到查询qi的id,从记录查询表中,查找qi的子查询划分情况,将查询删除和非查询范围更新任务发布给相对应的服务器,进行更新;
[0067]
s2023、订阅查询范围更新操作预处理:使用bkdrhash哈希函数计算得到订阅查询结构qi的id,从记录查询表中,查找订阅查询结构qi的子查询划分情况,首先执行查询删除操作,后执行新的查询增加操作,完成查询范围更新操作更新。
[0068]
s203中,对查询的关键词先进行字典序升序排序。
[0069]
对于子查询增加情况,在查询索引树(如图4所示)中根据关键词依次进行匹配,当出现不匹配时进行关键词序列的添加,最后在对应的查询链表中链接子查询信息,包括子查询范围和子查询数值约束。
[0070]
对于子查询删除情况,在查询索引树中根据关键词依次进行匹配直到结束,将链表中的子查询信息进行删除,当不存在查询节点后,依次删除关键字节点信息。
[0071]
对于非子查询范围更新的情况,在关键词索引树的更新分为两种,分别为关键词更新和查询数值更新。对于关键词更新,首先通过旧的关键词信息索引匹配到查询链表节点进行删除,然后进行子查询增加操作,在此时使用新的查询关键字。对于查询数值更新,在查询索引树中根据关键词依次进行匹配直到结束,将链表中的子查询信息进行删除,当不存在查询节点后,依次删除关键字节点信息。
[0072]
s204中,对上述区域维护负载估算信息表中和订阅查询相关的信息进行更新。
[0073]
此外,如图5所示,s3包括:
[0074]
s301、数据信息预处理:数据信息预处理需要将数据oi转发给需要的处理该数据进行订阅匹配的服务器,发布数据信息表示为:
[0075]
o=《text,loc,time,val》
[0076]
其中,text表示数据关键词信息,loc表示经纬度信息,time表示信息发布的时间,val表示对应关键词的数值信息数据。
[0077]
根据经纬度信息,从空间四叉树索引结构中查询得到信息数据出现的空间划分区域编号,同样通过查任务分配表得到负责处理该匹配任务的服务器,进行数据转发由该服务器完成订阅查询的数据匹配。
[0078]
s302、数据关键词匹配:将对象的text关键词信息进行字典序升序排序,和关键词索引树进行逐一匹配,当匹配失败说明该发布信息没有可以匹配的订阅查询,匹配成功得到可能的订阅查询链表集合。
[0079]
s303、数值信息和空间信息的二次匹配:对于可能的订阅查询集合进行逐一遍历,分别判断是否满足空间从属信息和数值条件信息,最终完成匹配,激活可以满足的订阅查
询返回该数据对象oi。
[0080]
s304、更新划分区域相关的负载估算信息:对于每一个划分后的区域维护负载估算信息表,其中包括:当前时刻区域查询数量,当前时刻发布数据数量,跨区域查询数量,历史数据和查询数量,新增跨区域查询数量。对其中和数据发布相关的信息进行更新。
[0081]
此外,根据不同的订阅者发布订阅的喜好和发布方发布数据的空间位置以及发布频率,划分后的n个空间区域其计算工作量差异明显,从而导致了不同服务器的工作负载存在差异,需要执行s4进行相应的负载估算,判断是否存在严重的负载分配不均匀,导致整个分布式系统处理数据的吞吐量下降。
[0082]
如图6所示,s4包括:
[0083]
s401、对各划分区域的负载进行估算,其中负载估算记录结构如图7所示,记录的信息包括以下5个维度的内容:查询数量、数据节点数量、跨区域查询数量、新增跨区域查询数量、历史查询变更或数据节点数量(历史信息)。对于每一个空间划分的矩形区域进行前缀和方式的记录,这样可以大幅度减少需要记录的信息数量,例如图7中右侧记录信息,表示从第一行到当前行的累加总信息,上下做差即可得到当前行的独立记录信息;同样图7中上方的记录信息,表示从第一列到当前列的累加总信息,前后做差即可得到当前列的独立记录信息。
[0084]
对于各个空间划分区域的负载表示为:
[0085][0086]
其中,li代表第i个空间划分区域的负载大小,表示当前时刻在该区域中存在的订阅查询数量,表示当前时刻出现在该区域中的发布数据数量,表示当前时刻在该区域中需要更新的查询数量,a1、a2和a3分别代表相应的超参数。
[0087]
示例地,a1=2.1、a2=3.5和a3=0.2(维护负载估算表),通常通过匹配和查询更新的平均时间得到的经验值,对于不同处理器和系统可以进行相应的调整。
[0088]
s402、计算各个服务器的理论平均负载;
[0089]
空间四叉树索引结构对服务器k的的负载表示为:
[0090][0091]
其中,n表示为该服务器负责的划分区域空间数量,其理论平均负载为:
[0092][0093]
当其理论平均负载大于单个服务器所能承受的负载时,说明系统已经到达了饱和状态或是需要进行空间划分的细分,即重新划分空间区域数量。
[0094]
s403、算负载均衡系数;
[0095]
负载分配的不均衡阈值系数表示为:
[0096][0097]
其中,m表示有m个服务器,wj表示每个服务器的负载,μ表示最佳情况下每个服务
器的负载量,cov表示当前分配的不均衡程度;cov越低代表负载越均衡,当cov超过阈值β时,需要进行负载任务的重新分配。阈值β的值可变,示例地,β=0.3。
[0098]
s5中,当负载分配差异超过阈值时,需要进行全局负载重分配,为了生成一个接近最优的订阅负载分配给各个服务器,包括以下步骤:
[0099]
s501、各个服务器初始化订阅查询信息;此时,各个服务器中不存在订阅查询信息;
[0100]
s502、采用贪心算法,根据用户各自的负载对其订阅的数据率总量进行排序;
[0101]
s503、迭代地将负载最大划分区域分配给当前负载最小的服务器,直至将所有空间划分区域都分配给相应的服务器。
[0102]
实施例2:
[0103]
在实验阶段,在广泛使用的美国加利福尼亚州采集的70万条交通服务数据进行发布订阅实验。对比了当前主流的四种发布订阅系统:pt-quadtree、mbrtrie、tornado和sstd,进行了多组对比实验,其中订阅查询和数据发布速度随机,分别控制服务节点位5,10,15,20对比不同订阅系统的吞吐量。
[0104]
实验结果如表1所示,可以看出本发明在物联网数据场景下可以取得较好的发布订阅查询性能,有望在物联网实体服务供应、服务推荐等领域推广应用。
[0105]
表1不同发布订阅系统在不同服务器节点数量下的吞吐量
[0106]
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献