CN115643301B - 一种基于压缩布谷鸟过滤器的dds自动发现方法和介质 - Google Patents
一种基于压缩布谷鸟过滤器的dds自动发现方法和介质 Download PDFInfo
- Publication number
- CN115643301B CN115643301B CN202211299698.2A CN202211299698A CN115643301B CN 115643301 B CN115643301 B CN 115643301B CN 202211299698 A CN202211299698 A CN 202211299698A CN 115643301 B CN115643301 B CN 115643301B
- Authority
- CN
- China
- Prior art keywords
- compressed
- cuckoo filter
- dds
- cuckoo
- filter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 241000544061 Cuculus canorus Species 0.000 title claims abstract description 92
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012546 transfer Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000000750 progressive effect Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000007906 compression Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于压缩布谷鸟过滤器的DDS自动发现方法和介质,方法包括:网络中的任意节点A在参与者发现阶段把自身端点信息以指纹形式封装到压缩布谷鸟过滤器中并广播发送到其余节点B,B对A发送的信息进行匹配,完成对A的发现并进入端点发现阶段;在端点发现阶段,B查询压缩布谷鸟中是否有自身需要订阅的主题,若有则向A发送订阅的主题信息,完成端点匹配;压缩布谷鸟过滤器对其中非空条目,使用指纹第1bit表示非空条目,指纹末尾增加1bit表示该指纹数量;对空条目则使用1bit表示当前位置为空条目,再使用3bit表示当前位置开始的连续空条目数量。本发明能加速DDS的自动发现环节,且有效降低网络负载和内存消耗。
Description
技术领域
本发明属于DDS(DataDistributionService)的通信技术,具体涉及一种基于压缩布谷鸟过滤器的DDS自动发现方法和介质。
背景技术
近年来,随着物联网的快速发展,物联网技术已经广泛地进入到人们的生活当中,各行各业都利用物联网技术来加速行业发展。由此也有许多的设备厂商蜂拥而出,同一类的物联网设备可能会来源于不同的设备产商,而不同产商的设备通信协议都有可能不同,对设备的应用开发人员来说需要针对不同设备开发不同软件且维护困难。
中间件的出现有效的解决了上述问题。中间件是位于应用和操作系统之间的软件层,它可以帮助开发人员屏蔽不同设备之间的差异,专注于业务层面的开发,以少量的代码完成不同通信节点的通信,提升开发效率,减少出错风险。
DDS则是中间件技术的一种。数据分发服务(DDSTM)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。DDS提供了QoS控制的数据共享。应用程序通过发布和订阅由其主题名称标识的主题进行通信。DDS进行对等通信,并且不需要将数据由服务器或云代理。此外,DDS支持丰富的QoS来保证数据的灵活传输。DDS提供发布者和订阅者的动态发现(DynamicDiscovery)。动态发现使DDS应用程序可扩展。这意味着应用程序不必知道或配置用于通信的端点(endpoint),从而为DDS应用程序实现真正的“即插即用”(“plug-and-play”)。DDS能够保证通信的可靠性和实时性。DDS规范中的简单发现协议是不同节点之间相互发现的基本协议,适用于节点较少的网络,但是对大规模的节点网络中,为了实现节点发现以及端点发现需要传输大量的信息,造成较大的网络负载。
发明内容
针对现有技术存在的技术问题,本发明提供一种基于压缩布谷鸟过滤器的DDS自动发现方法和介质,对DDS中的简单发现协议通过压缩布谷鸟过滤器,大大减少匹配过程中的网络负载和节点的内存消耗。
为实现上述技术目的,本发明采用如下技术方案:
一种基于压缩布谷鸟过滤器的DDS自动发现方法,包括:
DDS网络中的任意节点A在参与者发现阶段把自身端点信息以指纹形式封装到压缩布谷鸟过滤器中,并广播发送到DDS网络中;节点B根据DDS网络中的压缩布谷鸟过滤器,完成对节点A的发现,并进入端点发现阶段;
在端点发现阶段,节点B根据节点A发送到DDS网络的压缩布谷鸟过滤器,查询其中是否有自身需要订阅的主题,若有则向节点A发送订阅的主题信息,完成端点匹配;
其中,所述压缩布谷鸟过滤器,使用游程编码对标准布谷鸟过滤器进一步压缩得到,具体地:
对标准布谷鸟过滤器中的非空条目,其中指纹的第1个bit表示当前位置为非空条目,并在指纹末尾增加1个bit表示以当前位置开始连续相同的指纹数量;
对标准布谷鸟过滤器中的1个空条目或连续多个空条目,使用1个bit表示当前位置为空条目,再使用3个bit表示当前位置开始的连续空条目数量。
优选的,在节点A向压缩布谷鸟过滤器插入端点信息失败的情况下,对压缩布谷鸟过滤器进行扩容和渐进式rehash重建。
优选的,当压缩布谷鸟过滤器的饱和度达到80%时,触发对压缩布谷鸟过滤器进行扩容和渐进式rehash重建。
优选的,扩容后的压缩布谷鸟过滤器,其长度为扩容前的2倍。
优选的,所述扩容具体为:新建一个长度为扩容前2倍的压缩布谷鸟过滤器,将新的端点信息以指纹的形式封装到新的压缩布谷鸟过滤器中,并将原压缩布谷鸟过滤器中的指纹周期性地转移到新的压缩布谷鸟过滤器中,且转移频率与节点A发送端点信息的频率一致;当所有指纹全部转移完成时,删除原压缩布谷鸟过滤器,或者把原压缩布谷鸟过滤器作为下一次扩容的备选过滤器,两个过滤器交替使用。
优选的,在将原压缩布谷鸟过滤器中的数据未完全转移到新的压缩布谷鸟过滤器过程中,节点A同时向节点B发送原压缩布谷鸟过滤器和新压缩布谷鸟过滤器,且节点B同时在该两个压缩布谷鸟过滤器中查询是否有自身需要订阅的主题。
优选的,指纹与端点信息的关系为:f=fingerprint(x),x代表端点信息,f代表指纹,fingerprint()是一个哈希函数。
优选的,将端点信息封装到压缩布谷鸟过滤器的2个位置:第一位置p1=hash(x),第二位置p2=p1^hash(f)。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项技术方案所述的基于压缩布谷鸟过滤器的DDS自动发现方法。
有益效果
针对大规模分布式节点的DDS网络中,对于DDS规范中的简单发现协议在应用大规模节点时会花费过多的时间完成匹配且会产生较大的网络负载和内存消耗的技术问题,本发明使用压缩布谷鸟过滤器对简单发现协议进行改进,大大减少匹配过程中的网络负载和内存消耗,能够加速DDS的自动发现环节。
附图说明
图1是基本DDS自动发现协议过程图;
图2是DDS自动发现协议结合压缩布谷鸟过滤器后的过程图;
图3是本发明压缩布谷鸟过滤器的压缩过程;
图4是本发明压缩布谷鸟过滤器存放过程和扩容与rehash过程。
具体实施方式
下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。
在本发明的一个具体的基于压缩布谷鸟过滤器的DDS自动发现方法实施例中,参考图1、2、3、4所示,包括参与者发现阶段和端点发现阶段:
DDS网络中的任意节点A在参与者发现阶段把自身端点信息以指纹形式封装到压缩布谷鸟过滤器中,并广播发送到DDS网络中;节点B根据DDS网络中的压缩布谷鸟过滤器,完成对节点A的发现,并进入端点发现阶段;
在端点发现阶段,节点B根据节点A发送到DDS网络的压缩布谷鸟过滤器,查询其中是否有自身需要订阅的主题,若有则向节点A发送订阅的主题信息,完成端点匹配;
本实施例的压缩布谷鸟过滤器,使用游程编码对标准布谷鸟过滤器进一步压缩得到,具体地:
与标准布谷鸟过滤器的设计相同,压缩布谷鸟过滤器需要首先进行参数设定:每个桶的条目大小b和指纹大小f。标准布谷鸟过滤器使用一个哈希表来存储节点待发送的端点信息,每个端点信息元素用指纹的形式来代替且每个指纹在过滤器中设置2个备选位置,而哈希表中的每个位置可以存多个指纹,也就是桶条目b的大小。根据标准布谷鸟过滤器测试结论,b=2时,过滤器的空间利用率达到84%。另外,本实施例设置指纹大小f=8bit,其中第1个bit用来记录是否为空桶用来方便本实施例进一步对标准布谷鸟过滤器的压缩,0表示空桶,1表示非空桶。
然后,本实施例对标准布谷鸟进一步压缩,得到压缩布谷鸟过滤器,进一步压缩方法为:
(1)对标准布谷鸟过滤器中的非空条目,其中指纹的第1个bit表示当前位置为非空条目,并在指纹末尾增加1个bit表示以当前位置开始连续相同的指纹数量,例如数量为该二进制所表示十进制数加1;
指纹在DDS自动发现场景中是对端点信息进行哈希之后得到的存储元素,则这里取指纹长度f=8bits,其中第一位bit表示是否为空条目,0表示空条目,1表示非空条目。设端点信息为x,则指纹f=fingerprint(x),fingerprint是一个哈希函数;每个端点信息有两个存放位置,计算方式为:p1=hash(x),p2=p1^hash(f)。
(2)对标准布谷鸟过滤器中的1个空条目或连续多个条目,使用1个bit表示当前位置为空条目,再使用3个bit表示当前位置开始的连续空条目数量,例如数量为该二进制所表示十进制数加1。相当于使用总共4个bit表示空条目元素。
综合上述非空条目和空条目的压缩编码方式,使得整个压缩编码变成9bits和4bits的组合形式。设过滤器中指纹数量为x,空条目数量为y,则未压缩前所占空间为(x+y)bytes;而在本发明压缩方案压缩后最坏情况下所占空间为(9/8x+1/2y)bytes,要使得压缩有效果则需要(9/8x+1/2y)<(x+y),x<4y。由此可知当过滤器负载达到80%时,压缩效果就会几乎消失,与步骤1得到的空间利用率相近。
在更优的实施例中,在节点不断向压缩布谷鸟过滤器插入指纹的过程中,随着过滤器逐渐变满,指纹的插入效率会逐渐变慢甚至出现插入失败的情况,面对这种情况,本发明提供更优的实施例,即对过滤器进行扩容并进行rehash操作,具体实施例中可使用渐进rehash的方式来进行rehash操作。
根据本发明的压缩策略,当过滤器饱和度达到80%时既会发生插入冲突又会发生压缩效果消失的情况,此时触发rehash操作:新建一个长度为扩容前2倍的压缩布谷鸟过滤器,维护一个指针指向当前还未进行rehash的指纹和一个定时器,过滤器周期性的把原过滤器指纹向新过滤器进行转移,转移频率和DDS参与者节点A发送该节点信息频率保持一致,每转移一个指纹指针就指向下一个要转移的指纹,直到所有指纹转移到新的过滤器中,删除原过滤器,或者把原压缩布谷鸟过滤器作为下一次扩容的备选过滤器,两个过滤器交替使用。在转移途中,向其它节点发送的信息需要同时发送两个压缩过滤器,节点接收到信息之后在两个过滤器中进行匹配。若在转移过程中有且新的端点信息需要插入,相同地将其以指纹形式插入到新的过滤器中。
如图1和图2所示,设现在有参与者A和参与者B,参与者A发布T1、T2、T3、T4四个主题,参与者B订阅T1、T3和T5主题。DDS简单发现协议有参与者发现阶段和端点发现阶段,参与者A上线后,把T1、T2、T3、T4四个主题端点信息所生成的压缩布谷鸟过滤器放在参与者发现阶段的消息体中,端点信息会周期性的发送到参与者B,B节点在接收到过滤器消息后,对自己需要订阅的主题信息的指纹信息在过滤器中进行匹配,发现有T1和T3主题,则向参与者A发送订阅T1和T3主题完成端点匹配。若此时参与者A又发布T5主题的信息,而此时过滤器已经达到了最大空间利用率,则对过滤器进行扩容和rehash操作,在新的扩容过滤器中插入T5的主题信息,发送到参与者B,此时参与者B会先检查新的过滤器中内容,发送订阅主题T5完成匹配过程。
以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。
Claims (9)
1.一种基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,包括:
DDS网络中的任意节点A在参与者发现阶段把自身端点信息以指纹形式封装到压缩布谷鸟过滤器中,并广播发送到DDS网络中;节点B根据DDS网络中的压缩布谷鸟过滤器,完成对节点A的发现,并进入端点发现阶段;
在端点发现阶段,节点B根据节点A发送到DDS网络的压缩布谷鸟过滤器,查询其中是否有自身需要订阅的主题,若有则向节点A发送订阅的主题信息,完成端点匹配;
其中,所述压缩布谷鸟过滤器,使用游程编码对标准布谷鸟过滤器进一步压缩得到,具体地:
对标准布谷鸟过滤器中的非空条目,其中指纹的第1个bit表示当前位置为非空条目,并在指纹末尾增加1个bit表示以当前位置开始连续相同的指纹数量;
对标准布谷鸟过滤器中的1个空条目或连续多个空条目,使用1个bit表示当前位置为空条目,再使用3个bit表示当前位置开始的连续空条目数量。
2.根据权利要求1所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,在节点A向压缩布谷鸟过滤器插入端点信息失败的情况下,对压缩布谷鸟过滤器进行扩容和渐进式rehash重建。
3.根据权利要求1所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,当压缩布谷鸟过滤器的饱和度达到80%时,触发对压缩布谷鸟过滤器进行扩容和渐进式rehash重建。
4.根据权利要求2或3所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,扩容后的压缩布谷鸟过滤器,其长度为扩容前的2倍。
5.根据权利要求2或3所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,所述扩容具体为:新建一个长度为扩容前2倍的压缩布谷鸟过滤器,将新的端点信息以指纹的形式封装到新的压缩布谷鸟过滤器中,并将原压缩布谷鸟过滤器中的指纹周期性地转移到新的压缩布谷鸟过滤器中,且转移频率与节点A发送端点信息的频率一致;当所有指纹全部转移完成时,删除原压缩布谷鸟过滤器,或者把原压缩布谷鸟过滤器作为下一次扩容的备选过滤器,两个过滤器交替使用。
6.根据权利要求5所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,在将原压缩布谷鸟过滤器中的数据未完全转移到新的压缩布谷鸟过滤器过程中,节点A同时向节点B发送原压缩布谷鸟过滤器和新压缩布谷鸟过滤器,且节点B同时在该两个压缩布谷鸟过滤器中查询是否有自身需要订阅的主题。
7.根据权利要求1所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,指纹与端点信息的关系为:f=fingerprint(x),x代表端点信息,f代表指纹,fingerprint()是一个哈希函数。
8.根据权利要求7所述的基于压缩布谷鸟过滤器的DDS自动发现方法,其特征在于,将端点信息封装到压缩布谷鸟过滤器的2个位置:第一位置p1=hash(x),第二位置p2=p1^hash(f)。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211299698.2A CN115643301B (zh) | 2022-10-24 | 2022-10-24 | 一种基于压缩布谷鸟过滤器的dds自动发现方法和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211299698.2A CN115643301B (zh) | 2022-10-24 | 2022-10-24 | 一种基于压缩布谷鸟过滤器的dds自动发现方法和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115643301A CN115643301A (zh) | 2023-01-24 |
CN115643301B true CN115643301B (zh) | 2024-04-09 |
Family
ID=84945745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211299698.2A Active CN115643301B (zh) | 2022-10-24 | 2022-10-24 | 一种基于压缩布谷鸟过滤器的dds自动发现方法和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115643301B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426728A (zh) * | 2013-08-23 | 2015-03-18 | 汤姆逊许可公司 | 采用中央发现机制的通信设备及相关方法 |
KR101570933B1 (ko) * | 2014-09-05 | 2015-11-23 | 금오공과대학교 산학협력단 | 데이터분산서비스에서 동적 블룸 필터를 이용한 노드 탐색 시스템 및 방법 |
CN112257285A (zh) * | 2020-10-30 | 2021-01-22 | 中国民航大学 | 用于大规模分布式仿真的轻量化dds自动发现方法 |
CN113535706A (zh) * | 2021-08-03 | 2021-10-22 | 重庆赛渝深科技有限公司 | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 |
-
2022
- 2022-10-24 CN CN202211299698.2A patent/CN115643301B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426728A (zh) * | 2013-08-23 | 2015-03-18 | 汤姆逊许可公司 | 采用中央发现机制的通信设备及相关方法 |
KR101570933B1 (ko) * | 2014-09-05 | 2015-11-23 | 금오공과대학교 산학협력단 | 데이터분산서비스에서 동적 블룸 필터를 이용한 노드 탐색 시스템 및 방법 |
CN112257285A (zh) * | 2020-10-30 | 2021-01-22 | 中国民航大学 | 用于大规模分布式仿真的轻量化dds自动发现方法 |
CN113535706A (zh) * | 2021-08-03 | 2021-10-22 | 重庆赛渝深科技有限公司 | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 |
Non-Patent Citations (4)
Title |
---|
Dynamic Compressive Wide-Band Spectrum Sensing Based on Channel Energy Reconstruction in Cognitive Internet of Things;Fanzi Zeng等;《IEEE Transactions on Industrial Informatics》;20180126;第14卷(第6期);77 * |
基于DDS的消息总线通信研究与实现;王啸;彭海维;;无线互联科技;20191225(第24期);全文 * |
基于RTI DDS的数据分发中间件的升级设计;张;尹逊和;;北京交通大学学报;20111015(第05期);全文 * |
基于布谷鸟过滤器的外连接算法;于洋;周敏奇;方祝和;;华东师范大学学报(自然科学版);20171016(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115643301A (zh) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2684192C1 (ru) | Способ и устройство для передачи потока службы в гибком ethernet | |
CN106170968B (zh) | 一种数据压缩存储方法、装置,及分布式文件系统 | |
CN101588287B (zh) | 对等网络数据调度和下载的方法、装置和系统 | |
US20240039995A1 (en) | Data access system and method, device, and network adapter | |
CN111338806B (zh) | 一种业务控制方法及装置 | |
WO2008052450A1 (fr) | Procédé et système permettant de transmettre un contenu partagé, terminal de contenu associé | |
CN110602244B (zh) | 分布式存储系统消息交互方法、节点及分布式存储系统 | |
CN105518641A (zh) | 点对点数据复制方法、设备和系统以及主节点切换方法、设备和系统 | |
CN110557124A (zh) | 一种数据压缩方法及装置 | |
CN115270033A (zh) | 一种数据访问系统、方法、设备以及网卡 | |
CN111464635B (zh) | 一种字典索引传输方法及装置 | |
CN110191156B (zh) | 一种基于区块链的数据处理方法及装置 | |
CN108259348B (zh) | 一种报文传输方法和装置 | |
CN115643301B (zh) | 一种基于压缩布谷鸟过滤器的dds自动发现方法和介质 | |
CN114172792B (zh) | 一种保证服务高可用的序号生成方法的实现方法及装置 | |
CN115202573A (zh) | 数据存储系统以及方法 | |
CN114401261A (zh) | 文件下载方法及装置 | |
CN101344882A (zh) | 数据查询方法、插入方法及删除方法 | |
CN112491951B (zh) | 对等网络中的请求处理方法、服务器及存储介质 | |
CN111277580B (zh) | 节点数据发送方法、接收方法以及传输方法 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN109614345B (zh) | 一种协议层之间通信的内存管理方法及装置 | |
CN114024844B (zh) | 数据调度方法、数据调度装置及电子设备 | |
CN113328890B (zh) | 一种基于分布式系统的网络通信模型构建方法 | |
CN102130786B (zh) | 更新单板特性的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |