CN115842767B - 基于共识算法的物联网设备集群协同方法及系统 - Google Patents
基于共识算法的物联网设备集群协同方法及系统 Download PDFInfo
- Publication number
- CN115842767B CN115842767B CN202211089521.XA CN202211089521A CN115842767B CN 115842767 B CN115842767 B CN 115842767B CN 202211089521 A CN202211089521 A CN 202211089521A CN 115842767 B CN115842767 B CN 115842767B
- Authority
- CN
- China
- Prior art keywords
- node
- leader
- nodes
- cluster
- area
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims 1
- 230000002776 aggregation Effects 0.000 claims 1
- 230000015556 catabolic process Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了种基于共识算法的物联网设备集群协同方法,所述方法:将所述物联网设备集群内节点组成超级节点簇,若超级节点簇内Leader节点发生宕机,则正常运转的Leader节点向宕机区域发送日志块以及自身最新哈希校验码;若宕机区域Follower节点未收到所在区域的Leader节点心跳,判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。本发明能够有效防止物联网设备集群数据共享时,由于分裂投票导致选举超时的情况发生,同时减小集群内单个Leader节点的开销,使得系统的容错率提高,可用性更强。
Description
技术领域
本发明涉及物联网技术领域,尤其涉及一种基于共识算法的物联网设备集群协同方法及系统。
背景技术
目前,物联网几乎覆盖了生活的方方面面,物联网设备存在于各个应用场景。由于物联网设备的需求过大,通常需要第三方代理介入,导致高昂的代理成本,从而使得整个物联网系统的发展陷入瓶颈期。
然而,区块链技术的发展为物联网系统提供了巨大的发展潜能,区块链利用智能合约可以解决整个物联网系统设备的自动化执行管理,为物联网发展瓶颈的突破带来了重大的机遇。
但是,由于物联网自身的特性,大多数物联网设备无法承载区块链所需的计算能力和内存空间。大多数物联网设备节点作为物联网通信节点,大都存在吞吐量与数据传输延迟的约束,过大的通信开销容易造成节点崩溃,因此,大部分物联网的运作只适合小型局域网,存在应用场景的局限性。
为了扩大物联网的应用场景,针对物联网节点的崩溃,需要采取一些容错机制,可以考虑采取区块链技术中的共识算法解决节点崩溃时的容错问题,例如抗拜占庭容错与抗崩溃容错,它们适用场景不同。抗拜占庭容错一般适用于允许网络中存在恶意节点的情形;而抗崩溃容错的算法不允许恶意节点的攻击,只关注节点的运行故障。其中,Raft共识算法就是主要解决抗崩溃容错问题,以保证在集群崩溃情况下集群仍能正常工作。
然而,在Raft共识算法中,Raft节点可以处于三种状态,分别为领导状态,候选者状态以及跟随者状态,分别对应为Leader节点,Candidate节点,Follower节点,不同状态的节点其操作权限不同。物联网集群中的每个节点都包含一个计时器,每个节点的计时器时间随机。由于Raft集群中只允许单个Leader节点的存在,在集群Leader节点崩溃后,所有集群节点都为Follower节点,所有节点的计时器开始倒计时,优先倒计时结束的节点转化为Candidate节点并立即向集群发起投票请求,Candidate节点请求其他Follower节点投票给自己以竞选成为Leader节点。只有当集群中超过半数的节点投票给自己才能转化为Leader节点。对Follower节点而言,若收到Candidate节点的请求则对比自己的日志长度与所述Candidate节点日志长度,当Candidate节点的日志长度大于自己的日志则进行投票,否则等待符合条件的Candidate节点,每个Follower节点自身只有一次投票机会,先满足日志长度条件的Candidate节点可以获得该票。在物联网设备集群中,由于网络传输延迟和倒计时随机使得存在多个Follower节点同时变为Candidate节点,一起竞争投票数,造成所有Candidate节点都无法获得半数的Follower节点的投票情况,因此,一段时间内Raft网络不会出现Leader节点,此过程被称为分裂投票。分裂投票的情况下,Candidate节点又被转化为Follower节点,集群重新竞选Leader节点,使得整个过程使得物联网集群开销增大。
发明内容
本发明提供一种基于共识算法的物联网设备集群协同方法、计算设备,基于Raft共识算法,通过多Leader节点协同治理集群,可以有效避免投票不均造成的分裂投票的问题,从而同时减小单个节点的压力,提高了系统的容错能力。
为了解决上述技术问题,本发明实施例提供了一种基于共识算法的物联网设备集群协同方法,所述方法包括:
S1.将所述物联网设备集群内节点组成超级节点簇,所述超级节点簇内的各区域存在唯一的Leader节点;
S2.若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
S3.若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
优选的,所述将所述物联网设备集群内节点组成超级节点簇具体包括:
S10.将所述物联网设备集群内的所有节点分为若干个区域,并为所述若干个区域分别分配不同的IP段;
S11.每个区域内的Follower节点判断自身的第一计时器是否倒计时结束,若是,则转为Leader节点同时发送心跳至自身所在区域内的所有其他Follower节点,其他Follower节点收到心跳则重置自身计时器;
S12.若单个区域有多个Leader节点则比较发送心跳次数,次数最多的保持Leader状态,其他Leader节点重新转为Follower节点;
S13.每个区域内的唯一Leader节点寻找其他区域的Leader节点并建立P2P连接,直至所述若个区域的Leader节点完成相互的P2P关联,至此所述若干个区域完成超级节点簇的建立。
进一步的,所述方法还包括:
S4.客户端向路由器发送日志块,路由器再转发日志块至所述超级节点簇内;
S5.若所述日志块被发送至Leader节点,则日志块在超级节点簇内同步后,广播至簇内所有Follower节点,若日志块发送至Follower节点,则由Follower节点重定向至所在区域的Leader节点,路由器根据重定向位置IP重新发送所述日志块,重复步骤S6,集群正常运转,若超级节点簇发生宕机则跳转至步骤S2。
进一步的,所述方法还包括:
若所有Follower节点都收不到自身所在区域Leader节点的心跳,则判定超级节点簇内所有Leader节点宕机,则Follower节点的第四计时器开始倒计时,若倒计时结束后未收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为新的Leader节点,并立即向自身区域其他Follower节点发送心跳,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
进一步的,所述方法还包括:
所述新的Leader节点向自身所在区域的Follower节点发送心跳,若超过半数Follower节点在收到所述心跳后发送反馈,则该Leader节点为当前区域唯一Leader节点,否则该新的Leader节点转化为Follower节点,所在区域重新竞选。
第二方面,为了解决本发明的技术问题,本发明实施例提出了一种基于共识算法的物联网设备集群协同系统,所述系统包括:
物联网设备集群,所述集群内包括若干个节点,所述集群内若干个Leader节点组成超级节点簇,其中,每个Leader节点所在的各区域Leader节点唯一,集群内其他节点为Follower节点;
若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
优选的,所述将所述物联网设备集群内节点组成超级节点簇具体包括:
所述物联网设备集群内的所有节点被分为若干个区域,所述若干个区域分别被分配不同的IP段;
每个区域内的Follower节点判断自身的第一计时器是否倒计时结束,若是,则转为Leader节点,同时发送心跳至自身所在区域内的所有其他Follower节点,其他Follower节点收到心跳则重置自身计时器;
若单个区域有多个Leader节点则比较发送心跳次数,次数最多的保持Leader状态,其他Leader节点重新转为Follower节点;
每个区域内的唯一Leader节点寻找其他区域的Leader节点并建立P2P连接,直至所述若个区域的Leader节点完成相互的P2P关联,从而完成超级节点簇的建立。
进一步的,所述系统中,
若所有Follower节点都收不到自身所在区域Leader节点的心跳,则判定超级节点簇内所有Leader节点宕机,则Follower节点的第四计时器开始倒计时,若倒计时结束后未收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为新的Leader节点,并立即向自身区域其他Follower节点发送心跳,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
进一步的,所述新的Leader节点向自身所在区域的Follower节点发送心跳,若超过半数Follower节点在收到所述心跳后发送反馈,则该Leader节点为当前区域唯一Leader节点,否则该新的Leader节点转化为Follower节点,所在区域重新竞选。
第三方面,本发明实施例还提供了一种计算设备,所述计算设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时执行如前述的基于共识算法的物联网设备集群协同方法。
通过本发明所构思的以上技术方案,与现有技术相比,本发明实施例具有以下的优点:能够有效防止物联网设备集群数据共享时,由于分裂投票导致选举超时的情况发生,同时减小集群内单个Leader节点的开销,使得系统的容错率提高,可用性更强。
附图说明
下面将结合附图说明对本发明的具体实施方式进行举例说明。
图1为本发明实施例一种基于共识算法的物联网设备集群协同方法流程图;
图2为本发明实施例一种基于共识算法的物联网设备集群协同系统协同示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,而并非要限制本发明的范围。
如图1所示,基于前述的技术问题的亟待解决,本发明实施例提供了一种基于共识算法的物联网设备集群协同方法,所述方法包括:
S1.将所述物联网设备集群内节点组成超级节点簇,所述超级节点簇内的各区域存在唯一的Leader节点;
优选的,所述将所述物联网设备集群内节点组成超级节点簇具体包括:
S10.将所述物联网设备集群内的所有节点分为若干个区域,并为所述若干个区域分别分配不同的IP段;
S11.每个区域内的Follower节点判断自身的第一计时器是否倒计时结束,若是,则转为Leader节点同时发送心跳至自身所在区域内的所有其他Follower节点,其他Follower节点收到心跳则重置自身计时器;
S12.若单个区域有多个Leader节点则比较发送心跳次数,次数最多的保持Leader状态,其他Leader节点重新转为Follower节点;
S13.每个区域内的唯一Leader节点寻找其他区域的Leader节点并建立P2P连接,直至所述若个区域的Leader节点完成相互的P2P关联,至此所述若干个区域完成超级节点簇的建立。
本发明实施例的一种基于共识算法的物联网设备集群协同方法,以基于Raft共识算法为例,通过多Leader节点协同治理集群。本发明实施例首先初始化物联网系统,在物联网系统的初始化状态下,所有物联网设备存储的数据为空。
例如,以小区路由设备可分配的物联网内网设备数作为一个集群,集群开始运转时,首先用K-means算法将集群采取不同的IP段均分为若干个区域,例如所述的若干个,可以为三个,三个区域的作用一致,每个区域由唯一Leader节点管理。
值得注意的是,为了描述的方便,本发明以下实施例以将物联网设备集群划分为三个区域为例进行说明,但是,本发明并不限定将集群划分为几个区域,本发明实施例的所有描述不应理解为对本发明实施方式的限定。
即为防止单个Leader节点崩溃导致集群内重新竞选Leader节点,利用zookeeper集群特点,可以选取最少三个区域的Leader节点构建成的超级节点簇来解决分裂投票问题。
若同一区域存在多个Candidate节点,则发送心跳次数最多的Candidate节点作为该区域唯一Leader节点,其他Candidate节点重新转化为Follower节点。
优选的,所述三个区域竞选出唯一Leader节点并相互P2P关联后,构建成一个超级节点簇。该超级节点簇用于协同治理所述物联网设备集群的节点,集群内每个Follower节点都保存当前超级节点簇内的三个Leader节点IP信息,Follower节点以自身所在区域的唯一Leader节点为主节点,簇内其他两个Leader节点作为辅节点进行日志消息接收。
因此,被选举作为Leader节点的物联网设备需要一定的处理性能,需要实时为自身区域Follower节点发送日志块以及处理Follower节点的反馈信息。
集群内所有节点都会存储集群内全部节点的IP地址,每个区域的唯一Leader节点尝试根据自身存储的全部IP节点找到其他两个区域的IP段进行随机连接,用于寻找其他两个区域的唯一Leader节点。若直接定位到其他区域的唯一Leader节点,则进行P2P关联并相互实时发送心跳,若定位至其他区域的Follower节点,则由定位至的Follower节点重定向至Follower节点所在区域的唯一Leader节点。
S2.若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
当与其他区域的唯一Leader节点完成P2P关联时,唯一Leader节点会向自身区域Follower节点广播其他区域的唯一Leader节点的IP信息,使得当自身区域唯一Leader节点崩溃后,由其他区域Leader节点作为辅节点进行自身区域的代理。
S3.若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
当超级节点簇内有节点崩溃,则剩余正常Leader节点向宕机区域发送最新哈希校验码,优先匹配所述校验码的Follower节点成为新Leader节点,从而保证超级节点簇的完整性。
进一步的,所述方法还包括:
S4.客户端向路由器发送日志块,路由器再转发日志块至所述超级节点簇内;
S5.若所述日志块被发送至Leader节点,则日志块在超级节点簇内同步后,广播至簇内所有Follower节点,若日志块发送至Follower节点,则由Follower节点重定向至所在区域的Leader节点,路由器根据重定向位置IP重新发送所述日志块,重复步骤S6,集群正常运转,若超级节点簇发生宕机则跳转至步骤S2。
即当超级节点簇被构建时,三个唯一Leader节点会相互发送心跳,只有当所有Leader节点都收到簇内两个其他Leader节点的心跳时,集群才能开始读或写入客户端送的数据,客户端为任意的可读写数据设备,但该客户端设备需要小区路由的签名许可才能访问集群数据,授权后的客户端设备可以实时查看集群内的数据以及向集群内写入数据,以此保证超级节点簇内数据的强一致性与安全性。
当超级节点簇内存在Leader节点生宕机时,超级节点簇内存活的Leader节点无法收到宕机Leader节点的心跳,此时自身的计时器会倒计时直到结束,当倒计结束后仍未收到宕机Leader节点的心跳,簇内存活的Leader节点作为辅节点向宕机区域发送当前日志的最新哈希校验码。
进一步的,集群内所有Leader节点与Follower节点内存储日志信息以及临时哈希,日志信息由日志块组成。日志块由客户端创建,包含时间戳、操作状态、文本信息。
客户端将日志块通过小区路由向已分配的内网IP随机转发至集群内的一个节点,若转发至唯一Leader节点,则由该Leader节点向超级节点簇内其他Leader节点发送日志块消息,超级节点簇内全部Leader节点收到日志块消息后由全部Leader节点并行广播至集群内Follower节点,若小区路由转发至Follower节点则重定向至Follower节点所在区域的唯一Leader节点。
超级节点簇将日志块广播至集群的所有Follower节点,Follower节点收到某一日志块后向超级节点簇反馈成功信息。只有当超级节点簇收集超过半数的Follower节点的反馈成功信息,超级节点簇才会向小区路由提交追加日志块成功信息,同时超级节点簇向所有Follower节点反馈该日志块已被提交。部分还未将该日志块追加至自身的Follower节点,当收到来自超级节点簇发送的该日志块时,直接追加至自身日志上且修改为提交状态。最后小区路由将该日志块成功追加消息返回至客户端。
每当日志块被提交时,所有收到提交反馈的节点会开始根据被提交的日志块与前块已被计算的临时哈希拼接,对拼接整体重新计算新的临时哈希。
当集群处于初始状态并无临时哈希时,由第一个被提交的日志块与空值拼接进行哈希运算得到第一个临时哈希,临时哈希保证日志内容不可更改,一旦日志内容更改则所计算的临时哈希不一致。
当Leader节点宕机时,临时哈希可辅助校验选举新Leader节点,所有集群节点内只存储最后一次被提交的日志块所计算的临时哈希。
簇内存活Leader节点作为辅节点向宕机区域发送自身日志的最新哈希校验码,该最新哈希校验码由临时哈希与未提交的日志块拼接进行哈希运算所得。
进一步的,集群内所有节点包含一个临时空间,该临时空间存储临时哈希,本发明实施例中哈希校验码计算方法为Leader节点的临时哈希与当前未提交的日志块内容拼接后进行哈希运算。集群内所有节点的临时空间内存储的临时哈希为最后一次被提交的日志块内容与前块已计算出的临时哈希进行拼接,再对拼接后的整体进行哈希运算得到最后一次被提交的临时哈希,此哈希值也保障了已提交的日志块内容的不可篡改。但是哈希校验码包含未提交日志块的哈希,正常运行的Leader节点向宕机区域发送的哈希校验码包含整个日志的哈希,宕机区域的Follower节点需要校验成功,满足整个日志的哈希才能合理担任Leader节点。
由于超级节点簇内节点P2P强一致连接,所以超级节点簇内所有Leader节点日志相同,计算得到的最新哈希校验码一致,宕机区域的Follower节点可能会收到多个最新哈希校验码,但是校验码相同,Follower节点只需要计算出与最新哈希校验码一致的结果即可竞选。
宕机区域Follower节点将自身的临时哈希与未提交的日志块拼接进行哈希运算,优先算出与超级节点簇内存活Leader节点向宕机区域发送的最新哈希校验码一致的结果则竞选成为新的Leader节点,并与超级节点簇内其他Leader节点进行强关联。只有超级节点簇内Leader节点强关联后客户端才能继续写入数据。
新的Leader节点向集群所有Follower节点广播进行原宕机Leader节点IP的更换。因此,集群内的物联网节点需要有一定的存储能力与计算能力,以用于校验哈希值与存储日志信息。
进一步的,所述方法还包括:
若所有Follower节点都收不到自身所在区域Leader节点的心跳,则判定超级节点簇内所有Leader节点宕机,则Follower节点的第四计时器开始倒计时,若倒计时结束后未收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为新的Leader节点,并立即向自身区域其他Follower节点发送心跳,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
每个区域内的所有Follower节点开始各自倒计时,倒计时结束的Follower节点成为Candidate节点,为了竞选成为Leader节点,立即向自己所在区域进行心跳广播,告知当前区域所有Follower节点自身的IP地址,从而防止当前区域的其他Follower节点继续竞选。
在某些极端情况下,超级节点簇内全部Leader节点都宕机,集群内无Leader节点,所有Follower节点都收不到所在区域Leader节点心跳,Follower节点计时器开始倒计时,倒计时结束后也没有收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为Leader节点并立即向该区域其他Follower节点发送心跳防止竞选,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
进一步的,所述方法还包括:
所述新的Leader节点向自身所在区域的Follower节点发送心跳,若超过半数Follower节点在收到所述心跳后发送反馈,则该Leader节点为当前区域唯一Leader节点,否则该新的Leader节点转化为Follower节点,所在区域重新竞选。
由于在集群运行过程中崩溃竞选出的Leader节点,所以该Leader节点日志不一定最新,该Leader节点向当前区域Follower节点发送心跳获得反馈,若超过半数Follower节点反馈成功,认可该Leader节点日志,则该Leader节点为当前区域唯一Leader节点,否则该Leader节点转化为Follower节点,当前区域重新竞选。
若集群需要动态增加或删除物联网设备节点,则客户端向路由发送修改协议,该协议包含新节点的内网IP。路由将协议消息转发至超级节点簇内,超级节点簇广播至所有Follower节点,Follower节点保存协议后反馈至超级节点簇,超级节点簇收集到所有节点的反馈后开始更换新协议,集群协议由超级节点簇内所有Leader节点同意后才能进行广播,若新协议生效,则会有新节点的加入与旧节点的退出。若退出者为Follower节点,则Follower节点无法再收到任何Leader节点心跳。若退出者为Leader节点,则当新协议生效后退出,并在退出区域重新竞选出新Leader节点构建超级节点簇。
本发明的一种基于共识算法改进的物联网设备协同方法,通过多Leader节点协同来优化选举Leader节点,与现有技术相比,具有以下的技术效果:
本方法通过多Leader节点协同治理网络,利用节点的工作量代替投票延迟来缩短选举时间,实践证明,可以将Raft单个节点压力平分至超级节点簇中的若干个Leader节点节点,使得网络容错性提高,更不易造成Leader节点崩溃。
同时,本发明实施例在物联网系统中利用多Leader节点进行数据的强一致关联,通过超级节点簇内的各Leader节点互相发送心跳相互监督,可以防止单个节点对集群的恶意损害。这是因为通过本发明实施例的物联网集群设备协同方案,若要篡改超级节点簇内的数据则需要同时更改多个节点的数据,而由物联网设备之间分布是随机的,因此提高了篡改成本,使得物联网系统更稳定。
为了解决本发明的技术问题,如图2所示,本发明实施例提出了一种基于共识算法的物联网设备集群协同系统,所述系统包括:
物联网设备集群,所述集群内包括若干个节点,所述集群内若干个Leader节点组成超级节点簇,其中,每个Leader节点所在的各区域Leader节点唯一,集群内其他节点为Follower节点;
若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
优选的,所述将所述物联网设备集群内节点组成超级节点簇具体包括:
所述物联网设备集群内的所有节点被分为若干个区域,所述若干个区域分别被分配不同的IP段;
每个区域内的Follower节点判断自身的第一计时器是否倒计时结束,若是,则转为Leader节点,同时发送心跳至自身所在区域内的所有其他Follower节点,其他Follower节点收到心跳则重置自身计时器;
若单个区域有多个Leader节点则比较发送心跳次数,次数最多的保持Leader状态,其他Leader节点重新转为Follower节点;
每个区域内的唯一Leader节点寻找其他区域的Leader节点并建立P2P连接,直至所述若个区域的Leader节点完成相互的P2P关联,从而完成超级节点簇的建立。
进一步的,所述系统中,
若所有Follower节点都收不到自身所在区域Leader节点的心跳,则判定超级节点簇内所有Leader节点宕机,则Follower节点的第四计时器开始倒计时,若倒计时结束后未收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为新的Leader节点,并立即向自身区域其他Follower节点发送心跳,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
进一步的,所述新的Leader节点向自身所在区域的Follower节点发送心跳,若超过半数Follower节点在收到所述心跳后发送反馈,则该Leader节点为当前区域唯一Leader节点,否则该新的Leader节点转化为Follower节点,所在区域重新竞选。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
S1.将所述物联网设备集群内节点组成超级节点簇,所述超级节点簇内的各区域存在唯一的Leader节点;
S2.若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
S3.若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述;
本实施方式只是对本专利的示例性说明,并不限定它的保护范围,本领域技术人员还可以对其局部进行改变,只要没有超出本专利的精神实质,都在本专利的保护范围内。
Claims (8)
1.一种基于共识算法的物联网设备集群协同方法,其特征在于,所述方法包括:
S1.将所述物联网设备集群内节点组成超级节点簇,所述超级节点簇内的各区域存在唯一的Leader节点,其中,所述将所述物联网设备集群内节点组成超级节点簇具体包括:
S10.将所述物联网设备集群内的所有节点分为若干个区域,并为所述若干个区域分别分配不同的IP段;
S11.每个区域内的Follower节点判断自身的第一计时器是否倒计时结束,若是,则转为Leader节点同时发送心跳至自身所在区域内的所有其他Follower节点,其他Follower节点收到心跳则重置自身计时器;
S12.若单个区域有多个Leader节点则比较发送心跳次数,次数最多的保持Leader状态,其他Leader节点重新转为Follower节点;
S13.每个区域内的唯一Leader节点寻找其他区域的Leader节点并建立P2P连接,直至所述若干个区域的Leader节点完成相互的P2P关联,至此所述若干个区域完成超级节点簇的建立;
S2.若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
S3.若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
2.如权利要求1所述的基于共识算法的物联网设备集群协同方法,其特征在于,所述方法还包括:
S4.客户端向路由器发送日志块,路由器再转发日志块至所述超级节点簇内;
S5.若所述日志块被发送至Leader节点,则日志块在超级节点簇内同步后,广播至簇内所有Follower节点,若日志块发送至Follower节点,则由Follower节点重定向至所在区域的Leader节点,路由器根据重定向位置IP重新发送所述日志块,重复步骤S6,集群正常运转,若超级节点簇发生宕机则跳转至步骤S2。
3.如权利要求1所述的基于共识算法的物联网设备集群协同方法,其特征在于,所述方法还包括:
若所有Follower节点都收不到自身所在区域Leader节点的心跳,则判定超级节点簇内所有Leader节点宕机,则Follower节点的第四计时器开始倒计时,若倒计时结束后未收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为新的Leader节点,并立即向自身区域其他Follower节点发送心跳,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
4.如权利要求3所述的基于共识算法的物联网设备集群协同方法,其特征在于,所述方法还包括:
所述新的Leader节点向自身所在区域的Follower节点发送心跳,若超过半数Follower节点在收到所述心跳后发送反馈,则该Leader节点为当前区域唯一Leader节点,否则该新的Leader节点转化为Follower节点,所在区域重新竞选。
5.一种基于共识算法的物联网设备集群协同系统,其特征在于,所述系统包括:
物联网设备集群,所述集群内包括若干个节点,所述集群内若干个Leader节点组成超级节点簇,其中,每个Leader节点所在的各区域Leader节点唯一,集群内其他节点为Follower节点,其中,所述集群内若干个Leader节点组成超级节点簇具体包括:所述物联网设备集群内的所有节点被分为若干个区域,所述若干个区域分别被分配不同的IP段;
每个区域内的Follower节点判断自身的第一计时器是否倒计时结束,若是,则转为Leader节点,同时发送心跳至自身所在区域内的所有其他Follower节点,其他Follower节点收到心跳则重置自身计时器;
若单个区域有多个Leader节点则比较发送心跳次数,次数最多的保持Leader状态,其他Leader节点重新转为Follower节点;
每个区域内的唯一Leader节点寻找其他区域的Leader节点并建立P2P连接,直至所述若干个区域的Leader节点完成相互的P2P关联,从而完成超级节点簇的建立;
若超级节点簇内Leader节点发生宕机,则超级节点簇内正常运转的Leader节点无法收到宕机Leader节点的心跳,正常运转的Leader节点的第二计时器开始倒计时,若所述第二计时器倒计时结束时未能收到宕机Leader节点的心跳,则向宕机区域发送日志块以及自身最新哈希校验码;
若宕机区域Follower节点未收到所在区域的Leader节点心跳,则第三计时器开始倒计时,若第三计时器倒计时结束未收到所在区域的Leader节点心跳,则判定所在区域的Leader节点宕机,接收其他区域的Leader节点所发送的所述最新哈希校验码,并计算自身最新日志哈希码,若所述最新日志哈希码与接收的最新哈希校验码匹配成功,则所述Follower节点转为Leader节点。
6.如权利要求5所述的基于共识算法的物联网设备集群协同系统,其特征在于,所述系统中,
若所有Follower节点都收不到自身所在区域Leader节点的心跳,则判定超级节点簇内所有Leader节点宕机,则Follower节点的第四计时器开始倒计时,若倒计时结束后未收到其他Leader节点的日志以及最新哈希校验码,则该Follower节点直接转变为新的Leader节点,并立即向自身区域其他Follower节点发送心跳,若单个区域同时存在多个Leader节点则以心跳次数最多的节点保持Leader节点状态,剩余Leader节点转变为Follower节点。
7.如权利要求6所述的基于共识算法的物联网设备集群协同系统,其特征在于,所述新的Leader节点向自身所在区域的Follower节点发送心跳,若超过半数Follower节点在收到所述心跳后发送反馈,则该Leader节点为当前区域唯一Leader节点,否则该新的Leader节点转化为Follower节点,所在区域重新竞选。
8.一种计算设备,其特征在于,所述计算设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时执行如权利要求1至4中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211089521.XA CN115842767B (zh) | 2022-09-07 | 2022-09-07 | 基于共识算法的物联网设备集群协同方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211089521.XA CN115842767B (zh) | 2022-09-07 | 2022-09-07 | 基于共识算法的物联网设备集群协同方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115842767A CN115842767A (zh) | 2023-03-24 |
CN115842767B true CN115842767B (zh) | 2024-04-23 |
Family
ID=85574877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211089521.XA Active CN115842767B (zh) | 2022-09-07 | 2022-09-07 | 基于共识算法的物联网设备集群协同方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115842767B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019232789A1 (zh) * | 2018-06-08 | 2019-12-12 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
WO2020138532A1 (ko) * | 2018-12-27 | 2020-07-02 | 서강대학교 산학협력단 | 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법 |
CN113630455A (zh) * | 2021-08-02 | 2021-11-09 | 上海华能电子商务有限公司 | 一种适用于物联网的Raft共识方法 |
-
2022
- 2022-09-07 CN CN202211089521.XA patent/CN115842767B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019232789A1 (zh) * | 2018-06-08 | 2019-12-12 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
WO2020138532A1 (ko) * | 2018-12-27 | 2020-07-02 | 서강대학교 산학협력단 | 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법 |
CN113630455A (zh) * | 2021-08-02 | 2021-11-09 | 上海华能电子商务有限公司 | 一种适用于物联网的Raft共识方法 |
Non-Patent Citations (2)
Title |
---|
基于分组Raft机制的PBFT共识算法改进方案设计;吴宇森等;《电子技术与软件工程》;20211215;第2021卷(第24期);254-258 * |
改进的Raft一致性算法及其研究;陈陆;黄树成;徐克辉;;江苏科技大学学报(自然科学版);20180815(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115842767A (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9063787B2 (en) | System and method for using cluster level quorum to prevent split brain scenario in a data grid cluster | |
US7756898B2 (en) | Systems and methods for notifying listeners of events | |
US7518983B2 (en) | Proxy response apparatus | |
CN113704354B (zh) | 一种数据同步方法及装置、计算机设备、存储介质 | |
CN107153660B (zh) | 分布式数据库系统的故障检测处理方法及其系统 | |
JPH11102299A (ja) | 高信頼リモート・オブジェクト参照管理の方法とシステム | |
WO2021068919A1 (zh) | 基于pbft算法改进的单节点异常主动恢复方法、系统、设备和介质 | |
CN110633168A (zh) | 一种分布式存储系统的数据备份方法和系统 | |
JP2009093417A (ja) | ファイル転送システム、ファイル転送方法、ファイル転送プログラム及びインデックスサーバ | |
CN117061512A (zh) | 基于大数据的分布式信息管理方法和系统 | |
CN114090342A (zh) | 存储容灾的链路管理方法及消息执行节点、存储控制集群 | |
CN115842767B (zh) | 基于共识算法的物联网设备集群协同方法及系统 | |
Alouf et al. | Performance analysis of peer-to-peer storage systems | |
WO2019019607A1 (zh) | 数据备份方法、装置及系统 | |
CN112394662A (zh) | 一种变电站监控系统服务器角色确定方法及系统 | |
CN110798492B (zh) | 数据存储方法及装置、数据处理系统 | |
CN114866395B (zh) | 多组分布式一致性协议集群心跳通讯方法及装置 | |
CN115292340B (zh) | 基于分布式网络编码的区块链存储优化方法及装置 | |
CN110661836B (zh) | 消息路由方法、装置及系统、存储介质 | |
CN116647476A (zh) | 网络管理方法、装置、计算机设备、存储介质和程序产品 | |
CN116232893A (zh) | 分布式系统的共识方法、装置、电子设备及存储介质 | |
CN113076187A (zh) | 分布式锁管理方法及装置 | |
US20220327033A1 (en) | Distributed consensus method, distributed system and distributed consensus program | |
CN115858250A (zh) | 数据恢复方法、装置、存储介质及电子装置 | |
CN111586110B (zh) | 一种raft在出现点对点故障时的优化处理方法 |
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 |