CN115225697A - 状态同步方法、装置、设备及存储介质 - Google Patents
状态同步方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115225697A CN115225697A CN202210679796.2A CN202210679796A CN115225697A CN 115225697 A CN115225697 A CN 115225697A CN 202210679796 A CN202210679796 A CN 202210679796A CN 115225697 A CN115225697 A CN 115225697A
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- bridge
- state
- reversible bloom
- equipment
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 175
- 238000000034 method Methods 0.000 title claims abstract description 110
- 230000002441 reversible effect Effects 0.000 claims abstract description 320
- 230000006854 communication Effects 0.000 claims abstract description 60
- 238000004891 communication Methods 0.000 claims abstract description 60
- 230000008569 process Effects 0.000 claims description 58
- 230000002159 abnormal effect Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 19
- 238000003032 molecular docking Methods 0.000 description 36
- 238000004364 calculation method Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 238000012217 deletion Methods 0.000 description 14
- 230000037430 deletion Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000002457 bidirectional effect Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/148—Migration or transfer of sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供了状态同步方法、装置、设备及存储介质,应用于云端,所述云端与设备通过网桥进行通信连接,所述方法包括:获取针对所述网桥的第一可逆布隆过滤器,所述第一可逆布隆过滤器用于存储在所述网桥异常断开前与所述网桥通信连接的设备的状态;接收所述网桥发送的在所述网桥断开重连后的第二可逆布隆过滤器,所述第二可逆布隆过滤器基于在所述网桥断开重连后与所述网桥通信连接的设备的状态进行构建;根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种状态同步方法、一种状态同步装置、相应的一种电设备以及相应的一种计算机可读存储介质。
背景技术
云云对接,指的是异构物联网平台之间关于IoT(Internet of Things,物理网)设备状态与IoT设备数据的对接。云云对接SDK(Software Development Kit,软件开发工具包)是原泛化协议自适应的框架,主要用以构建与云物联网平台进行高效双向通信的桥接服务。
在特定场景下,例如设备无法直接接入云物联网平台时,通常可使用云云对接SDK快速构建桥接服务,搭建设备或平台与云物联网平台的双向数据通道。然而,在网桥跟云端之间出现中断,例如基于网络抖动、网桥宕机等造成的异常中断时,需要等待重新建立设备或平台与云物联网平台间的连接,在重新建立网桥连接后,云端跟网桥之间的设备状态可能出现不一致的现象。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种状态同步方法、一种状态同步装置、相应的一种电设备以及相应的一种计算机可读存储介质。
本申请实施例公开了一种状态同步方法,应用于云端,所述云端与设备通过网桥进行通信连接,所述方法包括:
获取针对所述网桥的第一可逆布隆过滤器,所述第一可逆布隆过滤器用于存储在所述网桥异常断开前与所述网桥通信连接的设备的状态;
接收所述网桥发送的在所述网桥断开重连后的第二可逆布隆过滤器,所述第二可逆布隆过滤器基于在所述网桥断开重连后与所述网桥通信连接的设备的状态进行构建;
根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新。
可选地,所述第一可逆布隆过滤器包括在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器,所述获取针对所述网桥的第一可逆布隆过滤器,包括:
在所述网桥启动时,接收所述网桥发送的状态同步请求;所述状态同步请求携带有网桥上当前的在线设备信息;
采用所述网桥上当前的在线设备信息建立针对所述网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至所述第一可逆布隆过滤器,得到在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器。
可选地,所述第一可逆布隆过滤器还包括在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器,所述获取针对所述网桥的第一可逆布隆过滤器,包括:
在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;
将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
可选地,所述发生变更的设备包括上线的设备,所述将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,包括:
获取所述上线的设备的上线设备信息;所述上线设备信息包括针对所述上线的设备的第一设备标识;
采用所述第一设备标识计算得到针对所述第一设备标识的第一哈希值;所述第一哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第一存储位置;
获取所述第一存储位置的存储位置信息;所述第一存储位置的存储位置信息包括针对所述第一存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第一存储位置的存储数量信息;
采用所述第一设备标识和所述第一哈希值,分别对所述第一存储位置的已存储设备的设备标识信息、哈希值信息进行迭代计算,并对所述第一存储位置的存储数量信息进行加一操作。
可选地,所述发生变更的设备包括离线的设备,所述将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,包括:
获取所述下线的设备的下线设备信息;所述下线设备信息包括针对所述下线的设备的第二设备标识;
采用所述第二设备标识计算得到针对所述第二设备标识的第二哈希值;所述第二哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第二存储位置;
获取所述第二存储位置的存储位置信息;所述第二存储位置的存储位置信息包括针对所述第二存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第二存储位置的存储数量信息;
采用所述第二设备标识和所述第二哈希值,分别对所述第二存储位置的已存储设备的设备标识信息、哈希值信息进行删除计算,并对所述第二存储位置的存储数量信息进行减一操作。
可选地,所述根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新,包括:
对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行求差集操作,确定在所述网桥断开重连后发生变更的设备;
在所述云端与所述网桥间,对在所述网桥断开重连后发生变更的设备的设备状态进行状态增量同步。
可选地,所述在所述网桥断开重连后发生变更的设备包括在所述网桥断开重连后上线的设备和离线的设备,所述对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行求差集操作,确定在所述网桥断开重连后发生变更的设备,包括:
对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行作差得到第一差集,将所述第一差集确定为在所述网桥断开重连后上线的设备;
和/或,对所述第二可逆布隆过滤器和所述第一可逆布隆过滤器进行作差得到第二差集,将所述第二差集确定为在所述网桥断开重连后离线的设备。
可选地,所述对在所述网桥断开重连后发生变更的设备的设备状态进行状态增量同步,包括:
将所述网桥断开重连后上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态增量同步的可逆布隆过滤器。
可选地,所述云端与所述网桥间的设备状态的更新基于在所述网桥断开重连后进行状态增量同步的可逆布隆过滤器实现,在对所述云端与所述网桥间的设备状态进行更新之后,还包括:
在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;所述发生变更的设备包括上线的设备和/或下线的设备;
将所述上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
可选地,还包括:
若不存在所述网桥在异常断开前的第一可逆布隆过滤器,则生成针对所述网桥在断开重连后的全量同步信息,并向所述网桥发送所述全量同步信息;所述全量同步信息用于指示所述网桥向所述云端发送在断开重连后与所述网桥通信连接的在线设备信息;
采用所述在断开重连后与所述网桥通信连接的在线设备信息建立针对所述网桥的第三可逆布隆过滤器,并将在断开重连后与网桥通信连接的设备的状态存储至所述第三可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态全量同步的可逆布隆过滤器。
本申请实施例该公开了一种状态同步装置,应用于云端,所述云端与设备通过网桥进行通信连接,所述装置包括:
可逆布隆过滤器获取模块,用于获取针对所述网桥的第一可逆布隆过滤器,所述第一可逆布隆过滤器用于存储在所述网桥异常断开前与所述网桥通信连接的设备的状态;
可逆布隆过滤器接收模块,用于接收所述网桥发送的在所述网桥断开重连后的第二可逆布隆过滤器,所述第二可逆布隆过滤器基于在所述网桥断开重连后与所述网桥通信连接的设备的状态进行构建;
状态更新模块,用于根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新。
可选地,所述第一可逆布隆过滤器包括在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器,所述可逆布隆过滤器获取模块包括:
状态同步请求接收子模块,用于在所述网桥启动时,接收所述网桥发送的状态同步请求;所述状态同步请求携带有网桥上当前的在线设备信息;
第一可逆布隆过滤器构建子模块,用于采用所述网桥上当前的在线设备信息建立针对所述网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至所述第一可逆布隆过滤器,得到在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器。
可选地,所述第一可逆布隆过滤器还包括在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器,所述可逆布隆过滤器获取模块包括:
变更设备获取子模块,用于在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;
第一可逆布隆过滤器更新子模块,用于将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
可选地,所述发生变更的设备包括上线的设备,所述第一可逆布隆过滤器更新子模块包括:
上线设备信息获取单元,用于获取所述上线的设备的上线设备信息;所述上线设备信息包括针对所述上线的设备的第一设备标识;
第一哈希值计算单元,用于采用所述第一设备标识计算得到针对所述第一设备标识的第一哈希值;所述第一哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第一存储位置;
第一存储位置信息获取单元,用于获取所述第一存储位置的存储位置信息;所述第一存储位置的存储位置信息包括针对所述第一存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第一存储位置的存储数量信息;
迭代计算单元,用于采用所述第一设备标识和所述第一哈希值,分别对所述第一存储位置的已存储设备的设备标识信息、哈希值信息进行迭代计算,并对所述第一存储位置的存储数量信息进行加一操作。
可选地,所述发生变更的设备包括离线的设备,所述第一可逆布隆过滤器更新子模块包括:
下线设备信息获取单元,用于获取所述下线的设备的下线设备信息;所述下线设备信息包括针对所述下线的设备的第二设备标识;
第二哈希值计算单元,用于采用所述第二设备标识计算得到针对所述第二设备标识的第二哈希值;所述第二哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第二存储位置;
第二存储位置信息获取单元,用于获取所述第二存储位置的存储位置信息;所述第二存储位置的存储位置信息包括针对所述第二存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第二存储位置的存储数量信息;
删除计算单元,用于采用所述第二设备标识和所述第二哈希值,分别对所述第二存储位置的已存储设备的设备标识信息、哈希值信息进行删除计算,并对所述第二存储位置的存储数量信息进行减一操作。
可选地,所述状态更新模块包括:
求差集子模块,用于对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行求差集操作,确定在所述网桥断开重连后发生变更的设备;
状态增量同步子模块,用于在所述云端与所述网桥间,对在所述网桥断开重连后发生变更的设备的设备状态进行状态增量同步。
可选地,所述在所述网桥断开重连后发生变更的设备包括在所述网桥断开重连后上线的设备和离线的设备,所述求差集子模块包括:
第一作差单元,用于对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行作差得到第一差集,将所述第一差集确定为在所述网桥断开重连后上线的设备;
第二作差单元,用于对所述第二可逆布隆过滤器和所述第一可逆布隆过滤器进行作差得到第二差集,将所述第二差集确定为在所述网桥断开重连后离线的设备。
可选地,所述状态增量同步子模块包括:
第二可逆布隆过滤器更新单元,用于将所述网桥断开重连后上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态增量同步的可逆布隆过滤器。
可选地,所述云端与所述网桥间的设备状态的更新基于在所述网桥断开重连后进行状态增量同步的可逆布隆过滤器实现,在对所述云端与所述网桥间的设备状态进行更新之后,所述装置还包括:
设备变更模块,用于在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;所述发生变更的设备包括上线的设备和/或下线的设备;
第二可逆布隆过滤器更新模块,用于将所述上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
可选地,所述装置还包括:
全量同步信息生成模块,用于不存在所述网桥在异常断开前的第一可逆布隆过滤器时,则成针对所述网桥在断开重连后的全量同步信息,并向所述网桥发送所述全量同步信息;所述全量同步信息用于指示所述网桥向所述云端发送在断开重连后与所述网桥通信连接的在线设备信息;
第三可逆布隆过滤器构建模块,用于采用所述在断开重连后与所述网桥通信连接的在线设备信息建立针对所述网桥的第三可逆布隆过滤器,并将在断开重连后与网桥通信连接的设备的状态存储至所述第三可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态全量同步的可逆布隆过滤器。
本申请实施例还公开了一种电设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述状态同步方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述状态同步方法的步骤。
本申请实施例包括以下优点:
在本申请实施例中,在设备通过网桥与云端进行通信连接的场景下,云端可获取用于存储在网桥异常断开前与网桥通信连接的设备的状态的第一可逆布隆过滤器,并接收网桥发送的在网桥断开重连后的第二可逆布隆过滤器,将可逆布隆过滤器结合到云云对接设备的状态同步链路中,在网桥重连的场景下,基于第一可逆布隆过滤器和第二可逆布隆过滤器的差集,即通过可逆布隆过滤器求网桥断连前后在线与离线的设备差集,即可通过此差集进行增量同步保证状态的一致性,从而将重连场景下的全量同步优化为增量同步,高效地找出两个集合之间的差集并完成状态一致性的同步,快速实现网桥和云端对设备状态的一致性。
附图说明
图1是本申请实施例提供的云云对接场景下的状态同步系统的示意图;
图2是本申请实施例提供的可逆布隆过滤器的数据结构示意图;
图3是本申请的一种状态同步方法实施例的步骤流程图;
图4是本申请实施例提供的在重连场景下的状态同步示意图;
图5是本申请的另一种状态同步方法实施例的步骤流程图;
图6是本申请实施例提供的在正常连接情况下的状态同步示意图;
图7是本申请实施例提供的进行状态同步的应用场景示意图;
图8是本申请的一种状态同步装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
云云对接通过构建桥接服务搭建设备与云物联网平台的双向数据通道,实现设备与设备数据的上云,其中云云对接的桥接服务主要是通过云云对接SDK实现。然而,在云云对接SDK的原生设计中,由于网桥的负担过重以及云端所承受的冲击过大,其原生设计存在严重约束服务发展的问题,例如无法保证网桥和云端之间设备状态的一致性、针对云云对接的设备规模严重受限、无法支持海量设备的云云对接等。
对于网桥和云端之间设备状态的一致性,在云云对接SDK的原生设计中,在网桥跟云端之间出现中断,例如基于网络抖动、网桥宕机等造成的异常中断时,需要等待重新建立设备或平台与云物联网平台间的连接,在重新建立网桥连接后,云端跟网桥之间的设备状态可能出现不一致的现象,例如断连前有100w设备集合A,重连后有另外101w设备集合B,其设备集合并不一致。
为了保证网桥跟云端对在线设备状态的一致性,现有技术所采用的技术方案是在断连后将所有设备的状态重置,在等待网桥上线后再将当前设备的状态重新同步到云端。
这种方式适用于小型网桥或者少量设备的规模,但是存在扩展性问题,当需要同步的设备的规模量级达到上万甚至上百万的情况下,由于云端为网关对设备的状态进行了默认且单一的管理策略,云端将网关和设备状态进行强绑定,网关在离线后云端也会将上云的设备进行离线。基于这种管理策略,在很多场景,例如网关断网后快速重连、网关频繁断连重连等情况下,在网关重连后每次都需要为全量设备进行上线、订阅等操作,导致网关的开销过大以及负担过重,且可能由于云端的开销大,进一步导致瞬间具有数十万个设备的离线,其瞬间数十万个设备的离线消息也将会给系统带来冲击。
在另一种IoT平台的网关方案中,设备状态由网关更新,当网关离线后云端将不会更新其设备状态,此方案虽然并不存在海量设备(例如设备的规模量达到上万甚至上百万)的场景下网关重连导致的设备状态同步的风暴问题,但这种方案只适用于部分客户不关心设备状态且能够容忍状态不一致的服务场景,即这种网关方案存在状态不一致的固有缺陷。
由上述可知,如何高效快速地实现网桥和云端对设备状态的一致性是云云对接的关键问题。
本申请实施例的核心思想之一在于将云云设备状态同步划分为全量同步过程与增量同步过程,能够高效解决设备规模扩展性问题,支持在云云对接场景下进行的海量设备的状态同步,同时还可将可逆布隆过滤器结合到云云对接设备的状态同步链路中,主要可针对在线设备集合的局部性特征,引入可逆布隆过滤器求网桥断连前后在线与离线的设备差集,利用该可逆布隆过滤器的数据结构所具有的求差集能力,高效搜索得到增量同步的数据,将重连场景下的全量同步优化为增量同步,高效地找出两个集合之间的差集并完成状态一致性的同步,减轻了网桥同步负担,降低了对云端的冲击,支持大量设备状态的云云对接。
参照图1,示出了本申请实施例提供的云云对接场景下的状态同步系统的示意图,云云对接通过构建桥接服务搭建设备与云物联网平台的双向数据通道,实现设备与设备数据的上云。此状态同步系统主要应用在设备与云端基于网桥进行云云对接的场景,在云云对接的场景下基于可逆布隆过滤器实现高效的设备状态同步的方案。
图1所示,在云云对接场景下的状态同步系统包括设备110、网桥111、云端112以及存储系统113,设备110通过所构建的网桥111与云端112进行通信连接。其中,设备110可以为无法直接接入云物联网平台的任意设备,此设备可以是网络设备也可以是平台;网桥111用于实现设备110与云端112的通信连接,以便设备110与云端112进行双向的数据通信,此网桥111的构建主要是基于云云对接SDK所提供的桥接服务实现;云端112可以是设备进行上云的服务器端,例如云物联网平台等,此云端可为所接入的设备提供相关服务;存储系统113用于对云端112的数据以及信息进行存取,此存储系统可以是位于云端112内部的存储空间,也可以是另外的存储服务器,对此,本申请实施例不加以限制。
在云云对接场景下进行海量设备的状态同步时,可划分为设备正常连接下对设备的状态全量同步与状态增量同步的过程,以及在异常重连场景下的状态增量同步过程,在这两种不同情况下的同步过程采用的可逆布隆过滤器,在状态同步的过程中需要对可逆布隆过滤器进行迭代计算和删除计算,以及进行上下线的差集计算实现。
在状态同步时所采用的可逆布隆过滤器(Invertible Bloom Filter,IBF)是一种新型的布隆过滤器变种,其可以是用于解决布隆过滤器不支持删除、查询等问题的数据结构。具体地,参照图2,示出了本申请实施例提供的可逆布隆过滤器的数据结构示意图,与标准的布隆过滤器一样,可使用一组随机的哈希函数,例如h1、h2...hk或者f1、f2...fk,以确定所进行通信连接的在线设备的存储位置,其存储位置可以通过数据结构中的单元或者槽位表示,例如可将上线设备的信息存储在单元格T[h1(x)],T[h2(x)]...T[hk(x)]或者T[f1x)],T[f2(x)]...T[fk(x)],在另一情况下,还可基于此随机的哈希函数确定所需离线设备的存储位置,例如可确定离线设备所存储的单元格T[h1(y)],T[h2(y)]...T[hk(y)]或者T[f1(y)],T[f2(y)]...T[fk(y)]。
其中,不同的存储位置可由哈希值确定,哈希值可由设备标识经由哈希函数计算得到。假设哈希值产生不同的存储位置,可通过各种方式实现,其中一种方式可将可逆布隆过滤器中的数据结构进行划分得到,示例性地,假设数据结构具有m单元,此时可将m单元划分成k个子表,每个子表的大小可以为m/k,此时可让每个散列函数,即上述随机的哈希函数,从所划分的子表中选择一个单元。
在可逆布隆过滤器的数据结构中,其本质是布隆过滤器的变种,主要可将原本布隆过滤器中每一个比特值扩展为3个整型数值,包括idSum、hashSum以及count,即每个单元格可包含三个字段。其中,idSum可以是已存储设备的设备标识(即设备ID,Identitydocument),hashSum可以是已存储设备ID的哈希值(即Hash值),count可以是当前位置已存储设备ID的总量。
在状态同步过程中所进行的对可逆布隆过滤器的迭代计算和删除计算,以及上下线的差集计算,均需要依赖上述三个字段实现。
在本申请实施例中,将云云设备状态同步划分为全量同步过程与增量同步过程,同时还可将可逆布隆过滤器结合到云云对接设备的状态同步链路中,主要可针对在线设备集合的局部性特征,引入可逆布隆过滤器求网桥断连前后在线与离线的设备差集,利用该可逆布隆过滤器的数据结构所具有的求差集能力,高效搜索得到增量同步的数据,将重连场景下的全量同步优化为增量同步。
参照图3,示出了本申请的一种状态同步方法实施例的步骤流程图,应用于云端,云端与设备通过网桥进行通信连接,侧重于在重连场景下的状态同步过程,具体可以包括如下步骤:
步骤301,获取针对网桥的第一可逆布隆过滤器;
通过网桥与云端实现通信连接的设备,可以为无法直接接入云物联网平台的任意设备,此设备可以是网络设备也可以是平台,而网络设备受到公网稳定性与公网质量的影响,网络设备的TCP(Transmission Control Protocol,传输控制协议)长连接经常性断连,无法进行重连的设备基本无法投入生产环境使用,所投入使用的网络设备基本上具有重连机制,基于此重连机制,网桥在出现异常断开,其在与云端在进行重连前后在线设备集合与离线设备集合具有一定的局限性,即基于重连机制的触发断开重连前后设备进行差集的变化较小,此时可基于对设备差集的计算实现在重连场景下的状态增量同步。
具体的,若让网桥为了一个小规模的差集进行全量同步或者不同步,对于服务而言是不合理且难度较大,此时可利用在线设备和离线设备集合所存在的局部性特征,在进行状态同步的链路中引入可逆布隆过滤器,利用此数据结构所具有的求差集能力,高效搜索得到增量同步的数据,将重连场景下的全量同步优化为增量同步。
对重连场景下的全量同步优化为增量同步,首先需要对用于求差集的其中一设备合集进行获取,所获取的设备合集可基于可逆布隆滤波器的数据结构进行表示,此时可以获取针对网桥的第一可逆布隆过滤器,当前所获取的第一可逆布隆过滤器可以是用于存储在网桥异常断开前与网桥通信连接的设备的状态,即可将在网桥异常断开前的设备集合作为用于求差集的其中一设备集合。
由于网络抖动或网桥宕机等场景下,将可能导致网桥跟云端之间的TCP长连接发生异常断连并进行断开重连,此时可进入连接容灾恢复程序,如图4所示,云端可接收到网桥发送的容灾同步请求,此时可查询网桥在异常断开前所存储的可逆布隆过滤器,即在网桥异常断开之前的设备集合。
在网桥异常断开之前的设备集合可以存在多种情况,例如在网桥正常连接的情况下突然由于网络抖动、网桥宕机等造成的异常中断,假设此时在网桥正常连接时刚完成对在线设备的状态全量同步,那么所获取的在网桥异常断开前的设备集合可以为在网桥启动时用于进行状态全量同步的可逆布隆过滤器;又例如,在网桥正常连接完成对在线设备的状态全量同步,还进行了一段时间针对发生变更的设备的状态增量同步后,此时突然由于网络抖动、网桥宕机等造成的异常中断,那么所获取的在网桥异常断开前的设备集合可以为网桥保持连接的过程中可逆布隆过滤器用于进行状态增量同步的;又例如,在网桥断开重连后的情况下再次由于网络抖动、网桥宕机等造成的频繁异常中断,假设此时已对网桥断开重连后的在线设备和离线设备进行状态增量同步,那么所获取的在网桥异常断开前的设备集合可以为在网桥断开重连后用于进行增量同步的可逆布隆过滤器;又例如,在网桥断开重连并完成对在线设备和离线设备的状态全量同步,还进行了一段时间针对发生变更的设备的状态增量同步后,此时突然由于网络抖动、网桥宕机等造成的异常中断,那么所获取的在网桥异常断开前的设备集合可以为在网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。需要说明的是,对于在网桥异常断开之前的设备合集,可视具体实际情况进行获取,本申请实施例不加以限制。
在一种示例中,当在网桥正常连接的情况下突然由于网络抖动、网桥宕机等造成的异常中断时,假设此时在网桥正常连接时刚完成对在线设备的状态全量同步,则可获取在网桥启动时用于进行状态全量同步的可逆布隆过滤器。而对于在网桥启动时用于进行状态全量同步的可逆布隆过滤器的获取,具体可在网桥启动时基于当前在线设备构建第一可逆布隆过滤器实现。
具体的,在网桥启动时,网桥首先可与云端建立TCP长连接,随后网桥可将网桥上当前的在线设备信息全量同步到云端。在具体实现中,在网桥启动时,可通过云端接收网桥发送的状态同步请求,以对存储中的设备状态进行更新。其中,云端所接收到的状态请求携带有网桥上当前的在线设备信息,例如包含设备标识的在线设备列表等,此时若在此网关,即网桥下之前并未创建过可逆布隆过滤器,则可采用网桥上当前的在线设备信息建立针对网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至第一可逆布隆过滤器,对设备状态进行全量更新,得到在网桥启动时用于进行状态全量同步的可逆布隆过滤器。此时还可将所建立的第一可逆布隆过滤器存储至云端的存储系统中,以便对设备状态进行记录以及便于后续对此第一可逆布隆过滤器进行获取。
需要说明的是,在进行状态全量同步时,可根据在线设备的设备标识,即设备ID异步构建第一可逆布隆过滤器,以将设备状态存储到第一可逆过滤器中。其中,在同步上线的设备时,为了确定此上线设备在数据结构中的存储位置,此时可由设备标识经由哈希函数计算得到哈希值,哈希值可用于确定在所划分的子表的单元格。
在又一种示例中,在网桥正常连接完成对在线设备的状态全量同步,还进行了一段时间针对发生变更的设备的状态增量同步后,此时突然由于网络抖动、网桥宕机等造成的异常中断,此时可对在网桥保持连接的过程中的可逆布隆过滤器进行状态增量同步。而对于在网桥保持连接时用于进行状态增量同步的可逆布隆过滤器的获取,具体可在完成状态全量同步的第一可逆布隆过滤器的基础上,基于发生变更的设备对第一可逆布隆过滤器进行更新同步实现。
具体的,在网桥保持连接的过程中,若当前与网桥进行通信连接的设备发生变更,此时可获取发生变更的设备的状态,并将发生变更的设备的状态更新至第一可逆布隆过滤器,对设备状态进行增量更新,得到在网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
其中,设备发生变更可以指的是已接入或者已存储至可逆布隆过滤器的设备状态发生变更,例如离线等,或者所接入的设备发生变更,例如存在某个未连接的设备上线等,即发生变更的设备可以包括存在上线的设备和存在离线的设备这两种情况。
在第一种情况,当存在上线的设备时,需要对上线的设备进行状态增量同步。此时可获取上线的设备的上线设备信息,此上线设备信息可包括针对上线的设备的第一设备标识,此时可采用上线设备的第一设备标识对其设备状态进行更新,主要是基于第一设备标识对第一可逆布隆过滤器的数据结构内的三个字段进行操作实现。
具体的,所进行操作的三个字段可以是idSum、hashSum以及count,idSum可以是已存储设备的设备标识(即设备ID,Identity document),hashSum可以是已存储设备ID的哈希值(即Hash值),count可以是当前位置已存储设备ID的总量,对这三个字段所进行的操作的可以为迭代计算。
在具体实现中,不同的存储位置可由哈希值确定,哈希值可由设备标识经由哈希函数计算得到,此时在获取第一设备标识后,可采用第一设备标识计算得到针对第一设备标识的第一哈希值,以基于第一哈希值确定上线的设备在第一可逆布隆过滤器的数据结构中的第一存储位置,第一存储位置具有存储位置信息,此存储位置信息即为在单元格内所包含的三个字段:针对第一存储位置的已存储设备的设备标识信息idSum、哈希值信息hashSum和针对第一存储位置的存储数量信息count,依赖此三个字段所进行的增量状态更新,可表现为采用第一设备标识和第一哈希值,分别对第一存储位置的已存储设备的设备标识信息、哈希值信息进行迭代计算,并对第一存储位置的存储数量信息进行加一操作。
示例性地,可逆布隆过滤器内所划分的子表可采用hash表进行表示。如图2所示,假设当前上线的第一设备标识,即设备ID为x,此时可对x进行插入。可通过自定义的若干个Hash函数(其具体的hash算法以及hash算法的数量可基于实际情况进行配置)对x求得相应的第一哈希值hash(x),此时可基于第一哈希值求得对应hash表内对应的存储位置,例如某个单元格T[h1(x)],此时可将存储位置中已存储的idSum、hashSum、count分别进行新一轮迭代计算:idSum^=x,hashSum^=hash(x),count+=1。其中,所进行的迭代计算可以是异或运算,其所进行的异或运算可使得相同值的异或结果为0,不相同值的异或结果为1,即存在设备上线时,idSum和hashSum这两个字段的异或结果可以为1。
在第二种情况,当存在离线的设备时,需要对离线的设备进行状态增量同步。此时可获取离线的设备的离线设备信息,此离线设备信息可包括针对离线的设备的第二设备标识,此时可采用离线设备的第二设备标识对其设备状态进行更新,主要是基于第二设备标识对第一可逆布隆过滤器的数据结构内的三个字段进行操作实现。
具体的,所进行操作的三个字段可以是idSum、hashSum以及count,idSum可以是已存储设备的设备标识(即设备ID,Identity document),hashSum可以是已存储设备ID的哈希值(即Hash值),count可以是当前位置已存储设备ID的总量,对这三个字段所进行的操作的可以为删除计算。
在具体实现中,不同的存储位置可由哈希值确定,哈希值可由设备标识经由哈希函数计算得到,此时在获取第二设备标识后,可采用第二设备标识计算得到针对第二设备标识的第二哈希值,以基于第二哈希值确定离线的设备在第一可逆布隆过滤器的数据结构中的第二存储位置,第二存储位置具有存储位置信息,此存储位置信息即为在单元格内所包含的三个字段:针对第二存储位置的已存储设备的设备标识信息idSum、哈希值信息hashSum和针对第二存储位置的存储数量信息count,依赖此三个字段所进行的增量状态更新,可表现为采用第二设备标识和第二哈希值,分别对第二存储位置的已存储设备的设备标识信息、哈希值信息进行删除计算,并对第二存储位置的存储数量信息进行减一操作。
示例性地,可逆布隆过滤器内所划分的子表可采用hash表进行表示。如图2所示,假设当前离线的第二设备标识,即设备ID为y,此时可对y进行删除。可通过自定义的若干个Hash函数(其具体的hash算法以及hash算法的数量可基于实际情况进行配置)对y求得相应的第二哈希值hash(y),此时可基于第二哈希值求得对应hash表内对应的存储位置,例如某个单元格T[h1(y)],此时可将存储位置中已存储的idSum、hashSum、count分别进行删除计算:idSum^=y,hashSum^=hash(y),count-=1。其中,所进行的删除计算也可以是异或运算,其所进行的异或运算可使得相同值的异或结果为0,不相同值的异或结果为1,即存在设备离线时,idSum和hashSum这两个字段的异或结果可以为0。
需要说明的是,若在网桥保持连接的情况下,存在上线或者离线的设备,网桥只需要将设备的上下线状态通过上下线消息实时同步给云端(即增量同步)即可,云端将会基于此针对设备的上下线消息更新可逆布隆过滤器,并更新设备状态,此时无需基于差集实现。
步骤302,接收网桥发送的在网桥断开重连后的第二可逆布隆过滤器;
对重连场景下的全量同步优化为增量同步,在对用于求差集的其中一设备合集,即在网桥异常断开前的第一可逆布隆过滤器进行获取之后,此时需要对用于求差集的另一设备集合进行获取,所获取的另一设备集合可以是在网桥断开重连后与网桥通信连接的设备的状态进行构建的第二可逆布隆过滤器,第二可逆布隆过滤器可以是在网桥断开重连后的设备集合,以便基于网桥异常断开前的设备集合与在网桥断开重连后的设备集合的差集,实现在重连场景下的状态增量同步。
针对第二可逆布隆过滤器的获取,可通过接收网桥发送的在网桥断开重连后的第二可逆布隆过滤器实现。具体的,如图4所示,在网桥跟云端之间的TCP长连接发生断开重连后,此时可进入连接容灾恢复程序,网桥可将宕机重启后可获取在网桥断开重连后上最新的在线设备信息,例如包含设备标识的最新在线设备列表等,此时网桥可基于此最新的在线设备信息建立最新的第二可逆布隆过滤器,在进入连接容灾恢复程序后,网桥可将其所建立的第二可逆布隆过滤器上报给云端。
需要说明的是,云端所获取的第一可逆布隆过滤器与云端所接收的第二可逆布隆过滤器所存储的内容不同,其中云端所构建的第一可逆布隆过滤器所存储的是在网桥异常断开前的设备状态,而网桥所构建的第二可逆布隆过滤器所存储的是在网桥断开重连,即网桥恢复连接后设备连在网桥上的最新设备状态集合;且网桥所建立的第二可逆布隆过滤器是将容灾场景下的全量同步优化为增量同步的前提,若网桥不构建第二可逆布隆过滤器,在网桥容灾恢复后,只能采用将当前设备集合状态全量同步到云端的方式,该方式对于网桥的负担过重,且容易对云端造成过大冲击。
步骤303,根据第一可逆布隆过滤器和第二可逆布隆过滤器的差集,对云端与网桥间的设备状态进行更新。
在获取在网桥异常断开前针对设备状态的第一可逆布隆过滤器,以及接收在网桥断开重连后针对设备状态的第二可逆布隆过滤器后,可基于在网桥异常断开前的设备集合与在网桥断开重连后的设备集合的差集,实现在重连场景下的状态增量同步。
具体的,可对第一可逆布隆过滤器和第二可逆布隆过滤器进行求差集操作,确定在网桥断开重连后发生变更的设备,然后在云端与网桥间,对在网桥断开重连后发生变更的设备的设备状态进行状态增量同步。
其中,在网桥断开重连后发生变更的设备包括在网桥断开重连后上线的设备和离线的设备,此时对发生表更设备的确定,可以表现为对第一可逆布隆过滤器和第二可逆布隆过滤器进行作差得到第一差集,将第一差集确定为在网桥断开重连后上线的设备;和/或,对第二可逆布隆过滤器和第一可逆布隆过滤器进行作差得到第二差集,将第二差集确定为在网桥断开重连后离线的设备。
在实际应用中,所进行的上下线的差集计算需要依赖两个集合中数据结构内的三个字段进行操作实现,所进行操作的三个字段可以是idSum、hashSum以及count,idSum可以是已存储设备的设备标识(即设备ID,Identity document),hashSum可以是已存储设备ID的哈希值(即Hash值),count可以是当前位置已存储设备ID的总量。在具体实现中,可将第一可逆布隆过滤器记为OLD_IBF,将第二可逆布隆过滤器记为New_IBF,可将OLD_IBF-New_IBF的结果确定需要为上线增量同步的设备,将NEW_IBF-OLD_IBF的结果确定为需要离线增量同步的设备。
其中,所述进行的作差操作可表现为异或运算,其所进行的异或运算可使得相同值的异或结果为0,不相同值的异或结果为1,那么如果两个数据结构中相同存储位置保存了不同的值,其异或操作后结果为1,即有机会求解出差集。
在本申请的实施例中,云端在得到上述求差集的结果后,可将网桥断开重连后上线的设备和/或下线的设备的状态更新至第二可逆布隆过滤器,得到在网桥断开重连后用于进行状态增量同步的可逆布隆过滤器,即将网桥下的设备状态更新为正确状态,实现网桥跟云端之间设备状态的一致性。此时,云端还可将同步结果告知网桥,使得网桥能够开启正常云云对接的其他流程。
在一种优选的实施例中,云端与网桥间的设备状态的更新基于在所述网桥断开重连后进行状态增量同步的可逆布隆过滤器实现,如图4所示,在对云端与所述网桥间的设备状态进行更新之后,还可以在网桥保持连接的过程中对发生变更的设备进行状态增量同步。
具体的,在网桥保持连接的过程中,若当前与网桥进行通信连接的设备发生变更,此时可获取发生变更的设备的状态,并将发生变更的设备的状态更新至第二可逆布隆过滤器,对设备状态进行增量更新,得到在网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
其中,设备发生变更可以指的是已接入或者已存储至可逆布隆过滤器的设备状态发生变更,例如离线等,或者所接入的设备发生变更,例如存在某个未连接的设备上线等,即发生变更的设备可以包括存在上线的设备和存在离线的设备这两种情况。需要说明的是,针对在网桥保持连接过程中对上线或者离线设备进行状态增量同步的具体过程,可参照上述在网桥保持连接过程中的状态增量同步步骤实现,在此不再加以赘述。
在一种优选的实施例中,在重连场景下所进行的状态增量同步基于对在网桥异常断开前针对设备状态的第一可逆布隆过滤器进行获取,以及对在网桥断开重连后针对设备状态的第二可逆布隆过滤器进行接收实现,其需要基于第一可逆布隆过滤器和第二可逆布隆过滤器的差集,此时若在网桥断开重连后并不存在所需获取的第一可逆布隆过滤器,并不能够实现在重连场景下的状态增量同步,此时可告知网桥需要进行全量同步。
具体的,若不存在网桥在异常断开前的第一可逆布隆过滤器,则可生成针对网桥在断开重连后的全量同步信息,并向网桥发送全量同步信息,其中所生成的全量同步信息用于指示网桥向云端发送在断开重连后与网桥通信连接的在线设备信息,以便云端采用在断开重连后与网桥通信连接的在线设备信息建立针对网桥的第三可逆布隆过滤器,并将在断开重连后与网桥通信连接的设备的状态存储至第三可逆布隆过滤器,得到在网桥断开重连后用于进行状态全量同步的可逆布隆过滤器,实现在重连场景下的状态全量同步。
在本申请实施例中,在设备通过网桥与云端进行通信连接的场景下,云端可获取用于存储在网桥异常断开前与网桥通信连接的设备的状态的第一可逆布隆过滤器,并接收网桥发送的在网桥断开重连后的第二可逆布隆过滤器,将可逆布隆过滤器结合到云云对接设备的状态同步链路中,在网桥重连的场景下,基于第一可逆布隆过滤器和第二可逆布隆过滤器的差集,即通过可逆布隆过滤器求网桥断连前后在线与离线的设备差集,即可通过此差集进行增量同步保证状态的一致性,从而将重连场景下的全量同步优化为增量同步,高效地找出两个集合之间的差集并完成状态一致性的同步,快速实现网桥和云端对设备状态的一致性。
参照图5,示出了本申请的另一种状态同步方法实施例的步骤流程图,应用于云端,云端与设备通过网桥进行通信连接,侧重于在正常连接情况下的状态同步过程,具体可以包括如下步骤:
步骤501,在网桥启动时,采用网桥上当前的在线设备信息建立针对网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至第一可逆布隆过滤器;
在本申请的实施例中,可将云云设备状态同步划分为全量同步过程与增量同步过程,能够高效解决设备规模扩展性问题,支持在云云对接场景下进行的海量设备的状态同步,同时还可将可逆布隆过滤器结合到云云对接设备的状态同步链路中实现对设备的状态全量同步与状态增量同步。
对于设备的状态全量同步过程,可以表现为在网桥正常连接的情况下实现的状态同步,此时可在网桥启动时基于当前在线设备构建第一可逆布隆过滤器,完成对在线设备的状态全量同步。
具体的,如图6所示,在网桥启动时,网桥首先可与云端建立TCP长连接,随后网桥可将网桥上当前的在线设备信息全量同步到云端。在具体实现中,在网桥启动时,可通过云端接收网桥发送的状态同步请求,以对存储中的设备状态进行更新。其中,云端所接收到的状态请求携带有网桥上当前的在线设备信息,例如包含设备标识的在线设备列表等,此时若在此网关,即网桥下之前并未创建过可逆布隆过滤器,则可采用网桥上当前的在线设备信息建立针对网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至第一可逆布隆过滤器,对设备状态进行全量更新,得到在网桥启动时用于进行状态全量同步的可逆布隆过滤器。此时还可将所建立的第一可逆布隆过滤器存储至云端的存储系统中,以便对设备状态进行记录以及便于后续对此第一可逆布隆过滤器进行获取。
其中,在进行状态全量同步时,可根据在线设备的设备标识,即设备ID异步构建第一可逆布隆过滤器,以将设备状态存储到第一可逆布隆过滤器中。其中,在同步上线的设备时,为了确定此上线设备在数据结构中的存储位置,此时可由设备标识经由哈希函数计算得到哈希值,哈希值可用于确定在所划分的子表的单元格。
需要说明的是,同个设备在同一时间段将会绑定一个网桥,如果同个设备要从网桥A切换到另一个网桥B,设备在切换前需要通过解绑操作告知云端,云端将会更新网桥A下的设备状态。
步骤502,在网桥保持连接的过程中,将发生变更的设备的状态更新至第一可逆布隆过滤器。
在网桥正常连接完成对在线设备的状态全量同步后,此时还可以对在网桥保持连接的过程中的可逆布隆过滤器进行状态增量同步,此状态增量同步需要在完成状态全量同步的第一可逆布隆过滤器的基础上,基于发生变更的设备对第一可逆布隆过滤器进行更新同步实现。
在网桥保持连接的过程中,如图6所示,若当前与网桥进行通信连接的设备发生变更,此时可获取发生变更的设备的状态,并将发生变更的设备的状态更新至第一可逆布隆过滤器,对设备状态进行增量更新,得到在网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
其中,设备发生变更可以指的是已接入或者已存储至可逆布隆过滤器的设备状态发生变更,例如离线等,或者所接入的设备发生变更,例如存在某个未连接的设备上线等,即发生变更的设备可以包括存在上线的设备和存在离线的设备这两种情况。
在第一种情况,当存在上线的设备时,需要对上线的设备进行状态增量同步。此时可获取上线的设备的上线设备信息,此上线设备信息可包括针对上线的设备的第一设备标识,此时可采用上线设备的第一设备标识对其设备状态进行更新,主要是基于第一设备标识对第一可逆布隆过滤器的数据结构内的三个字段进行操作实现。
具体的,所进行操作的三个字段可以是idSum、hashSum以及count,idSum可以是已存储设备的设备标识(即设备ID,Identity document),hashSum可以是已存储设备ID的哈希值(即Hash值),count可以是当前位置已存储设备ID的总量,对这三个字段所进行的操作的可以为迭代计算。
在具体实现中,不同的存储位置可由哈希值确定,哈希值可由设备标识经由哈希函数计算得到,此时在获取第一设备标识后,可采用第一设备标识计算得到针对第一设备标识的第一哈希值,以基于第一哈希值确定上线的设备在第一可逆布隆过滤器的数据结构中的第一存储位置,第一存储位置具有存储位置信息,此存储位置信息即为在单元格内所包含的三个字段:针对第一存储位置的已存储设备的设备标识信息idSum、哈希值信息hashSum和针对第一存储位置的存储数量信息count,依赖此三个字段所进行的增量状态更新,可表现为采用第一设备标识和第一哈希值,分别对第一存储位置的已存储设备的设备标识信息、哈希值信息进行迭代计算,并对第一存储位置的存储数量信息进行加一操作。
示例性地,可逆布隆过滤器内所划分的子表可采用hash表进行表示。如图2所示,假设当前上线的第一设备标识,即设备ID为x,此时可通过自定义的若干个Hash函数(其具体的hash算法以及hash算法的数量可基于实际情况进行配置)对x求得相应的第一哈希值hash(x),此时可基于第一哈希值求得对应hash表内对应的存储位置,例如某个单元格T[h1(x)],此时可将存储位置中已存储的idSum、hashSum、count分别进行新一轮迭代计算:idSum^=x,hashSum^=hash(x),count+=1。其中,所进行的迭代计算可以是异或运算,其所进行的异或运算可使得相同值的异或结果为0,不相同值的异或结果为1,即存在设备上线时,idSum和hashSum这两个字段的异或结果可以为1。
在第二种情况,当存在离线的设备时,需要对离线的设备进行状态增量同步。此时可获取离线的设备的离线设备信息,此离线设备信息可包括针对离线的设备的第二设备标识,此时可采用离线设备的第二设备标识对其设备状态进行更新,主要是基于第二设备标识对第一可逆布隆过滤器的数据结构内的三个字段进行操作实现。
具体的,所进行操作的三个字段可以是idSum、hashSum以及count,idSum可以是已存储设备的设备标识(即设备ID,Identity document),hashSum可以是已存储设备ID的哈希值(即Hash值),count可以是当前位置已存储设备ID的总量,对这三个字段所进行的操作的可以为删除计算。
在具体实现中,不同的存储位置可由哈希值确定,哈希值可由设备标识经由哈希函数计算得到,此时在获取第二设备标识后,可采用第二设备标识计算得到针对第二设备标识的第二哈希值,以基于第二哈希值确定离线的设备在第一可逆布隆过滤器的数据结构中的第二存储位置,第二存储位置具有存储位置信息,此存储位置信息即为在单元格内所包含的三个字段:针对第二存储位置的已存储设备的设备标识信息idSum、哈希值信息hashSum和针对第二存储位置的存储数量信息count,依赖此三个字段所进行的增量状态更新,可表现为采用第二设备标识和第二哈希值,分别对第二存储位置的已存储设备的设备标识信息、哈希值信息进行删除计算,并对第二存储位置的存储数量信息进行减一操作。
示例性地,可逆布隆过滤器内所划分的子表可采用hash表进行表示。如图2所示,假设当前离线的第二设备标识,即设备ID为y,此时可通过自定义的若干个Hash函数(其具体的hash算法以及hash算法的数量可基于实际情况进行配置)对y求得相应的第二哈希值hash(y),此时可基于第二哈希值求得对应hash表内对应的存储位置,例如某个单元格T[h1(y)],此时可将存储位置中已存储的idSum、hashSum、count分别进行删除计算:idSum^=y,hashSum^=hash(y),count-=1。其中,所进行的删除计算也可以是异或运算,其所进行的异或运算可使得相同值的异或结果为0,不相同值的异或结果为1,即存在设备离线时,idSum和hashSum这两个字段的异或结果可以为0。
需要说明的是,若在网桥保持连接的情况下,存在上线或者离线的设备,网桥只需要将设备的上下线状态通过上下线消息实时同步给云端(即增量同步)即可,云端将会基于此针对设备的上下线消息更新可逆布隆过滤器,并更新设备状态,此时无需基于差集实现。
在本申请实施例中,在设备通过网桥与云端进行通信连接的场景下,云端可获取用于存储在网桥异常断开前与网桥通信连接的设备的状态的第一可逆布隆过滤器,并接收网桥发送的在网桥断开重连后的第二可逆布隆过滤器,将可逆布隆过滤器结合到云云对接设备的状态同步链路中,在网桥重连的场景下,基于第一可逆布隆过滤器和第二可逆布隆过滤器的差集,即通过可逆布隆过滤器求网桥断连前后在线与离线的设备差集,即可通过此差集进行增量同步保证状态的一致性,从而将重连场景下的全量同步优化为增量同步,高效地找出两个集合之间的差集并完成状态一致性的同步,快速实现网桥和云端对设备状态的一致性。
参照图7,示出了本申请实施例提供的进行状态同步的应用场景示意图,应用在设备与云端基于网桥进行云云对接的场景,云云对接通过构建桥接服务搭建设备与云物联网平台的双向数据通道,实现设备与设备数据的上云,本申请实施例可在云云对接的场景下基于可逆布隆过滤器实现高效的设备状态同步的方案。
在此云云对接的场景下,涉及多个设备710、网桥711、云端712以及存储系统713,设备710通过所构建的网桥711与云端712进行通信连接。
在云云对接场景下进行海量设备的状态同步时,可划分为设备正常连接下对设备的状态全量同步与状态增量同步的过程,以及在异常重连场景下的状态增量同步过程,在这两种不同情况下的同步过程采用的可逆布隆过滤器,在状态同步的过程中需要对可逆布隆过滤器进行迭代计算和删除计算,以及进行上下线的差集计算实现。
具体的,在网桥启动时,可进行循环批量上线设备,将网桥所连接设备的状态更新至针对网桥的可逆布隆过滤器,实现状态全量同步,即基于可逆布隆过滤器进行全量状态同步;在网桥保持连接的过程中,当此网桥上存在发生变更的连接时,云端可采用针对网桥的可逆布隆过滤器对此设备的状态进行增量同步;而在网桥断开重连后,可以获取网桥在异常断开之前针对设备状态所构建的可逆布隆过滤器,并接收在网桥断开重连后最新在线设备的当前状态构建的可逆布隆过滤器,然后采用数据结构所具有的求差集的能力,基于可逆布隆过滤器的差集进行增量同步,具体可基于在网桥异常断开前的设备集合与在网桥断开重连后的设备集合的差集,实现在重连场景下的状态增量同步。
在本申请实施例中,将云云设备状态同步划分为全量同步过程与增量同步过程,能够高效解决设备规模扩展性问题,支持在云云对接场景下进行的海量设备的状态同步,同时还可将可逆布隆过滤器结合到云云对接设备的状态同步链路中,主要可针对在线设备集合的局部性特征,引入可逆布隆过滤器求网桥断连前后在线与离线的设备差集,利用该可逆布隆过滤器的数据结构所具有的求差集能力,高效搜索得到增量同步的数据,将重连场景下的全量同步优化为增量同步,高效地找出两个集合之间的差集并完成状态一致性的同步,减轻了网桥同步负担,降低了对云端的冲击,支持大量设备状态的云云对接。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图8,示出了本申请的一种状态同步装置实施例的结构框图,应用于云端,所述云端与设备通过网桥进行通信连接,具体可以包括如下模块:
可逆布隆过滤器获取模块801,用于获取针对所述网桥的第一可逆布隆过滤器,所述第一可逆布隆过滤器用于存储在所述网桥异常断开前与所述网桥通信连接的设备的状态;
可逆布隆过滤器接收模块802,用于接收所述网桥发送的在所述网桥断开重连后的第二可逆布隆过滤器,所述第二可逆布隆过滤器基于在所述网桥断开重连后与所述网桥通信连接的设备的状态进行构建;
状态更新模块803,用于根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新。
在本申请的一种实施例中,所述第一可逆布隆过滤器包括在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器,可逆布隆过滤器获取模块801可以包括如下子模块:
状态同步请求接收子模块,用于在所述网桥启动时,接收所述网桥发送的状态同步请求;所述状态同步请求携带有网桥上当前的在线设备信息;
第一可逆布隆过滤器构建子模块,用于采用所述网桥上当前的在线设备信息建立针对所述网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至所述第一可逆布隆过滤器,得到在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器。
在本申请的一种实施例中,所述第一可逆布隆过滤器还包括在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器,可逆布隆过滤器获取模块801可以包括如下子模块:
变更设备获取子模块,用于在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;
第一可逆布隆过滤器更新子模块,用于将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
在本申请的一种实施例中,所述发生变更的设备包括上线的设备,第一可逆布隆过滤器更新子模块可以包括如下单元:
上线设备信息获取单元,用于获取所述上线的设备的上线设备信息;所述上线设备信息包括针对所述上线的设备的第一设备标识;
第一哈希值计算单元,用于采用所述第一设备标识计算得到针对所述第一设备标识的第一哈希值;所述第一哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第一存储位置;
第一存储位置信息获取单元,用于获取所述第一存储位置的存储位置信息;所述第一存储位置的存储位置信息包括针对所述第一存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第一存储位置的存储数量信息;
迭代计算单元,用于采用所述第一设备标识和所述第一哈希值,分别对所述第一存储位置的已存储设备的设备标识信息、哈希值信息进行迭代计算,并对所述第一存储位置的存储数量信息进行加一操作。
在本申请的一种实施例中,所述发生变更的设备包括离线的设备,第一可逆布隆过滤器更新子模块可以包括如下单元:
下线设备信息获取单元,用于获取所述下线的设备的下线设备信息;所述下线设备信息包括针对所述下线的设备的第二设备标识;
第二哈希值计算单元,用于采用所述第二设备标识计算得到针对所述第二设备标识的第二哈希值;所述第二哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第二存储位置;
第二存储位置信息获取单元,用于获取所述第二存储位置的存储位置信息;所述第二存储位置的存储位置信息包括针对所述第二存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第二存储位置的存储数量信息;
删除计算单元,用于采用所述第二设备标识和所述第二哈希值,分别对所述第二存储位置的已存储设备的设备标识信息、哈希值信息进行删除计算,并对所述第二存储位置的存储数量信息进行减一操作。
在本申请的一种实施例中,状态更新模块803可以包括如下子模块:
求差集子模块,用于对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行求差集操作,确定在所述网桥断开重连后发生变更的设备;
状态增量同步子模块,用于在所述云端与所述网桥间,对在所述网桥断开重连后发生变更的设备的设备状态进行状态增量同步。
在本申请的一种实施例中,所述在所述网桥断开重连后发生变更的设备包括在所述网桥断开重连后上线的设备和离线的设备,求差集子模块可以包括如下单元:
第一作差单元,用于对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行作差得到第一差集,将所述第一差集确定为在所述网桥断开重连后上线的设备;
第二作差单元,用于对所述第二可逆布隆过滤器和所述第一可逆布隆过滤器进行作差得到第二差集,将所述第二差集确定为在所述网桥断开重连后离线的设备。
在本申请的一种实施例中,状态增量同步子模块可以包括如下单元:
第二可逆布隆过滤器更新单元,用于将所述网桥断开重连后上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态增量同步的可逆布隆过滤器。
在本申请的一种实施例中,所述云端与所述网桥间的设备状态的更新基于在所述网桥断开重连后进行状态增量同步的可逆布隆过滤器实现,在对所述云端与所述网桥间的设备状态进行更新之后,所述装置还可以包括如下模块:
设备变更模块,用于在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;所述发生变更的设备包括上线的设备和/或下线的设备;
第二可逆布隆过滤器更新模块,用于将所述上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
在本申请的一种实施例中,所述装置还可以包括如下模块:
全量同步信息生成模块,用于不存在所述网桥在异常断开前的第一可逆布隆过滤器时,则成针对所述网桥在断开重连后的全量同步信息,并向所述网桥发送所述全量同步信息;所述全量同步信息用于指示所述网桥向所述云端发送在断开重连后与所述网桥通信连接的在线设备信息;
第三可逆布隆过滤器构建模块,用于采用所述在断开重连后与所述网桥通信连接的在线设备信息建立针对所述网桥的第三可逆布隆过滤器,并将在断开重连后与网桥通信连接的设备的状态存储至所述第三可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态全量同步的可逆布隆过滤器。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述状态同步方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述状态同步方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种状态同步方法、一种状态同步装置、相应的一种电设备以及相应的一种计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (13)
1.一种状态同步方法,其特征在于,应用于云端,所述云端与设备通过网桥进行通信连接,所述方法包括:
获取针对所述网桥的第一可逆布隆过滤器,所述第一可逆布隆过滤器用于存储在所述网桥异常断开前与所述网桥通信连接的设备的状态;
接收所述网桥发送的在所述网桥断开重连后的第二可逆布隆过滤器,所述第二可逆布隆过滤器基于在所述网桥断开重连后与所述网桥通信连接的设备的状态进行构建;
根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新。
2.根据权利要求1所述的方法,其特征在于,所述第一可逆布隆过滤器包括在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器,
所述获取针对所述网桥的第一可逆布隆过滤器,包括:
在所述网桥启动时,接收所述网桥发送的状态同步请求;所述状态同步请求携带有网桥上当前的在线设备信息;
采用所述网桥上当前的在线设备信息建立针对所述网桥的第一可逆布隆过滤器,并将与网桥通信连接的设备的状态存储至所述第一可逆布隆过滤器,得到在所述网桥启动时用于进行状态全量同步的可逆布隆过滤器。
3.根据权利要求1或2所述的方法,其特征在于,所述第一可逆布隆过滤器还包括在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器,
所述获取针对所述网桥的第一可逆布隆过滤器,包括:
在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;
将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
4.根据权利要求3所述的方法,其特征在于,所述发生变更的设备包括上线的设备,所述将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,包括:
获取所述上线的设备的上线设备信息;所述上线设备信息包括针对所述上线的设备的第一设备标识;
采用所述第一设备标识计算得到针对所述第一设备标识的第一哈希值;所述第一哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第一存储位置;
获取所述第一存储位置的存储位置信息;所述第一存储位置的存储位置信息包括针对所述第一存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第一存储位置的存储数量信息;
采用所述第一设备标识和所述第一哈希值,分别对所述第一存储位置的已存储设备的设备标识信息、哈希值信息进行迭代计算,并对所述第一存储位置的存储数量信息进行加一操作。
5.根据权利要求3所述的方法,其特征在于,所述发生变更的设备包括离线的设备,所述将所述发生变更的设备的状态更新至所述第一可逆布隆过滤器,包括:
获取所述下线的设备的下线设备信息;所述下线设备信息包括针对所述下线的设备的第二设备标识;
采用所述第二设备标识计算得到针对所述第二设备标识的第二哈希值;所述第二哈希值用于指示所述上线的设备在所述第一可逆布隆过滤器的数据结构中的第二存储位置;
获取所述第二存储位置的存储位置信息;所述第二存储位置的存储位置信息包括针对所述第二存储位置的已存储设备的设备标识信息、哈希值信息和针对所述第二存储位置的存储数量信息;
采用所述第二设备标识和所述第二哈希值,分别对所述第二存储位置的已存储设备的设备标识信息、哈希值信息进行删除计算,并对所述第二存储位置的存储数量信息进行减一操作。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新,包括:
对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行求差集操作,确定在所述网桥断开重连后发生变更的设备;
在所述云端与所述网桥间,对在所述网桥断开重连后发生变更的设备的设备状态进行状态增量同步。
7.根据权利要求6所述的方法,其特征在于,所述在所述网桥断开重连后发生变更的设备包括在所述网桥断开重连后上线的设备和离线的设备,所述对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行求差集操作,确定在所述网桥断开重连后发生变更的设备,包括:
对所述第一可逆布隆过滤器和所述第二可逆布隆过滤器进行作差得到第一差集,将所述第一差集确定为在所述网桥断开重连后上线的设备;
和/或,对所述第二可逆布隆过滤器和所述第一可逆布隆过滤器进行作差得到第二差集,将所述第二差集确定为在所述网桥断开重连后离线的设备。
8.根据权利要求6或7所述的方法,其特征在于,所述对在所述网桥断开重连后发生变更的设备的设备状态进行状态增量同步,包括:
将所述网桥断开重连后上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态增量同步的可逆布隆过滤器。
9.根据权利要求1或2所述的方法,其特征在于,所述云端与所述网桥间的设备状态的更新基于在所述网桥断开重连后进行状态增量同步的可逆布隆过滤器实现,在对所述云端与所述网桥间的设备状态进行更新之后,还包括:
在所述网桥保持连接的过程中,若当前与所述网桥进行通信连接的设备发生变更,则获取发生变更的设备的状态;所述发生变更的设备包括上线的设备和/或下线的设备;
将所述上线的设备和/或下线的设备的状态更新至所述第二可逆布隆过滤器,得到在所述网桥保持连接的过程中用于进行状态增量同步的可逆布隆过滤器。
10.根据权利要求1或2所述的方法,其特征在于,还包括:
若不存在所述网桥在异常断开前的第一可逆布隆过滤器,则生成针对所述网桥在断开重连后的全量同步信息,并向所述网桥发送所述全量同步信息;所述全量同步信息用于指示所述网桥向所述云端发送在断开重连后与所述网桥通信连接的在线设备信息;
采用所述在断开重连后与所述网桥通信连接的在线设备信息建立针对所述网桥的第三可逆布隆过滤器,并将在断开重连后与网桥通信连接的设备的状态存储至所述第三可逆布隆过滤器,得到在所述网桥断开重连后用于进行状态全量同步的可逆布隆过滤器。
11.一种状态同步装置,其特征在于,应用于云端,所述云端与设备通过网桥进行通信连接,所述装置包括:
可逆布隆过滤器获取模块,用于获取针对所述网桥的第一可逆布隆过滤器,所述第一可逆布隆过滤器用于存储在所述网桥异常断开前与所述网桥通信连接的设备的状态;
可逆布隆过滤器接收模块,用于接收所述网桥发送的在所述网桥断开重连后的第二可逆布隆过滤器,所述第二可逆布隆过滤器基于在所述网桥断开重连后与所述网桥通信连接的设备的状态进行构建;
状态更新模块,用于根据所述第一可逆布隆过滤器和所述第二可逆布隆过滤器的差集,对所述云端与所述网桥间的设备状态进行更新。
12.一种电设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-10中任一项所述状态同步方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述状态同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210679796.2A CN115225697B (zh) | 2022-06-16 | 2022-06-16 | 状态同步方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210679796.2A CN115225697B (zh) | 2022-06-16 | 2022-06-16 | 状态同步方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115225697A true CN115225697A (zh) | 2022-10-21 |
CN115225697B CN115225697B (zh) | 2024-04-09 |
Family
ID=83608215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210679796.2A Active CN115225697B (zh) | 2022-06-16 | 2022-06-16 | 状态同步方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115225697B (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130132408A1 (en) * | 2011-11-23 | 2013-05-23 | Mark Cameron Little | System and Method for Using Bloom Filters to Determine Data Locations in Distributed Data Stores |
CN106453657A (zh) * | 2016-12-07 | 2017-02-22 | 海信集团有限公司 | 智能家居设备的状态信息更新方法及装置 |
WO2017185210A1 (zh) * | 2016-04-25 | 2017-11-02 | 华为技术有限公司 | 一种使用布隆过滤器过滤文件的方法及装置 |
CN107516046A (zh) * | 2017-06-26 | 2017-12-26 | 江苏通付盾科技有限公司 | 数据保护方法及装置、电子设备、计算机存储介质 |
US20180084627A1 (en) * | 2006-03-28 | 2018-03-22 | Wireless Environment, Llc. | Cloud-connected off-grid lighting and video system |
CN110209874A (zh) * | 2019-04-24 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
US20190394061A1 (en) * | 2018-06-26 | 2019-12-26 | Verizon Patent And Licensing Inc. | Virtual network endpoints for internet of things (iot) devices |
CN111966651A (zh) * | 2020-09-21 | 2020-11-20 | 北京百度网讯科技有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN112532729A (zh) * | 2020-11-30 | 2021-03-19 | 北京百度网讯科技有限公司 | 用于边缘设备和云端的数据同步方法和装置 |
CN113194147A (zh) * | 2021-04-29 | 2021-07-30 | 东风汽车集团股份有限公司 | 一种车辆设备信息同步方法及系统 |
CN113688144A (zh) * | 2020-05-19 | 2021-11-23 | 中兴通讯股份有限公司 | 一种记录数据同步方法、装置、设备和存储介质 |
CN113766259A (zh) * | 2021-08-17 | 2021-12-07 | 北京达佳互联信息技术有限公司 | 一种信息同步系统、方法、装置、设备及存储介质 |
CN113992675A (zh) * | 2021-10-26 | 2022-01-28 | 云知声(上海)智能科技有限公司 | Iot云平台与边缘网关协同工作的方法、系统及存储介质 |
CN114185489A (zh) * | 2021-12-02 | 2022-03-15 | 中国电信股份有限公司 | 一种数据同步方法、装置、电子设备及存储介质 |
CN114205376A (zh) * | 2021-11-12 | 2022-03-18 | 深圳市九洲电器有限公司 | 物联设备控制方法、网关、云端及存储介质 |
CN114327563A (zh) * | 2021-12-31 | 2022-04-12 | 医渡云(北京)技术有限公司 | 数据同步方法及装置、系统、存储介质、计算机系统 |
US20220156279A1 (en) * | 2020-11-19 | 2022-05-19 | Fivetran Inc. | Centralized database management system for database synchronization using invertible bloom filters |
-
2022
- 2022-06-16 CN CN202210679796.2A patent/CN115225697B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180084627A1 (en) * | 2006-03-28 | 2018-03-22 | Wireless Environment, Llc. | Cloud-connected off-grid lighting and video system |
US20130132408A1 (en) * | 2011-11-23 | 2013-05-23 | Mark Cameron Little | System and Method for Using Bloom Filters to Determine Data Locations in Distributed Data Stores |
WO2017185210A1 (zh) * | 2016-04-25 | 2017-11-02 | 华为技术有限公司 | 一种使用布隆过滤器过滤文件的方法及装置 |
CN106453657A (zh) * | 2016-12-07 | 2017-02-22 | 海信集团有限公司 | 智能家居设备的状态信息更新方法及装置 |
CN107516046A (zh) * | 2017-06-26 | 2017-12-26 | 江苏通付盾科技有限公司 | 数据保护方法及装置、电子设备、计算机存储介质 |
US20190394061A1 (en) * | 2018-06-26 | 2019-12-26 | Verizon Patent And Licensing Inc. | Virtual network endpoints for internet of things (iot) devices |
CN110209874A (zh) * | 2019-04-24 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
CN113688144A (zh) * | 2020-05-19 | 2021-11-23 | 中兴通讯股份有限公司 | 一种记录数据同步方法、装置、设备和存储介质 |
CN111966651A (zh) * | 2020-09-21 | 2020-11-20 | 北京百度网讯科技有限公司 | 数据同步方法、装置、电子设备和存储介质 |
US20220156279A1 (en) * | 2020-11-19 | 2022-05-19 | Fivetran Inc. | Centralized database management system for database synchronization using invertible bloom filters |
CN112532729A (zh) * | 2020-11-30 | 2021-03-19 | 北京百度网讯科技有限公司 | 用于边缘设备和云端的数据同步方法和装置 |
CN113194147A (zh) * | 2021-04-29 | 2021-07-30 | 东风汽车集团股份有限公司 | 一种车辆设备信息同步方法及系统 |
CN113766259A (zh) * | 2021-08-17 | 2021-12-07 | 北京达佳互联信息技术有限公司 | 一种信息同步系统、方法、装置、设备及存储介质 |
CN113992675A (zh) * | 2021-10-26 | 2022-01-28 | 云知声(上海)智能科技有限公司 | Iot云平台与边缘网关协同工作的方法、系统及存储介质 |
CN114205376A (zh) * | 2021-11-12 | 2022-03-18 | 深圳市九洲电器有限公司 | 物联设备控制方法、网关、云端及存储介质 |
CN114185489A (zh) * | 2021-12-02 | 2022-03-15 | 中国电信股份有限公司 | 一种数据同步方法、装置、电子设备及存储介质 |
CN114327563A (zh) * | 2021-12-31 | 2022-04-12 | 医渡云(北京)技术有限公司 | 数据同步方法及装置、系统、存储介质、计算机系统 |
Non-Patent Citations (2)
Title |
---|
祁晖;底晓强;李锦青;杨华民;姜会林;: "基于交互式级联布隆过滤器的一体化网络访问控制缓存系统", 长春理工大学学报(自然科学版), no. 05 * |
程友清;余少华;: "嵌入式网络设备TCP高可用技术研究", 小型微型计算机系统, no. 02 * |
Also Published As
Publication number | Publication date |
---|---|
CN115225697B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729111B (zh) | 用于管理分布式系统的方法、设备和计算机程序产品 | |
US6928467B2 (en) | Apparatus and methods for providing data synchronization by facilitating data synchronization system design | |
CN111935315A (zh) | 区块同步方法及装置 | |
CN106953767B (zh) | 一种设备间的组网方法、装置及系统 | |
CN102449616A (zh) | 对象存储库在网络上的基于群的同步 | |
CN104679796A (zh) | 一种选举方法、装置及数据库镜像集群节点 | |
JP4459999B2 (ja) | 投票を活用した無停止サービスシステム及びそのシステムにおける情報更新及び提供方法 | |
CN103346914A (zh) | 分布式文件系统的拓扑结构更新方法和装置 | |
CN109525678B (zh) | 区块链网络系统以及相应的节点设备发现方法 | |
CN111371680B (zh) | 双机热备的路由管理方法、装置、设备及存储介质 | |
CN110932876A (zh) | 一种通信系统、方法及装置 | |
CN107547374B (zh) | 一种聚合路由处理方法和装置 | |
CN110990448B (zh) | 一种支持容错的分布式查询方法及装置 | |
CN101505473B (zh) | 电信网络用户数据存储管理的方法及装置 | |
WO2009100636A1 (zh) | 电信网络用户数据存储管理的方法及装置 | |
CN112003943A (zh) | 语音数据同步方法和装置 | |
CN105306566A (zh) | 一种云存储系统中选举主控节点的方法及系统 | |
CN112947333B (zh) | 一种基于socket长连接的均衡负载分片方法 | |
CN114422335A (zh) | 通信方法、装置、服务器及存储介质 | |
RU2586598C2 (ru) | Тиражирование данных | |
CN115225697B (zh) | 状态同步方法、装置、设备及存储介质 | |
CN110278109B (zh) | 一种容灾方法及系统 | |
CN110737543B (zh) | 一种分布式文件系统数据恢复的方法、装置及存储介质 | |
CN110018875B (zh) | 一种基于idv的桌面同步实现方法 | |
CN115981561A (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 |