本发明属于分布式网络技术领域,具体涉及一种基于抽样的动态分布式系统的共识方法,该方法是分布式中最基础的一个研究方向。
背景技术:
随着移动通信设备的普及以及物联网的快速发展,动态网络已经渗透到人们日常生活的方方面面。由于集中式系统是需要中央处理器来控制整个网络,但是当中央处理器发生故障时,会导致整个网络的瘫痪。于是现在的技术很多都考虑分布式系统,分布式系统是由分布在不同地点的处理器互连而成,整个网络中没有中央处理器。每个处理器在进行自己的任务,网络通过各个处理器之间的连线来通信。对于分布式系统,处理器只需要通过局部协调和局部通信的方式来为分布式网络计算提供解决方案。
与传统网络相比,在动态网络中进行高效计算面临着前所未有的挑战。首先,网络处于不停的变动过程中,无法期待网络停止变动的一刻。网络动态性对于网络运行造成的影响成为常态,此前有容错功能的自适应性机制不适用于动态网络地运行。其次,随着网络规模的增大,节点之间的信息交换变得更加频繁。网络中资源,如带宽等,成为稀缺资源。在有限的资源下,对于时间和通信成本的控制变得更为严格,这从根本上否定了在每次网络变动后运行静态算法的可能性,而应该设计能自我调适、适应动态变化的低复杂度算法。最后,在动态网络中,节点往往只能获取到局部范围内的信息,在不断变动的网络拓扑中很难获取到全局性信息,使得依赖于全网信息进行协调和计算的集中式算法设计变得极为困难。
依赖于局部协调和局部通信的分布式算法可以为动态网络计算提供完美的解决方案。首先,分布式算法具有天然地与生俱来的容错性。在分布式算法中,节点通过与邻居节点的实时通信来决定自己的操作并实现彼此之间的协调,而局部网络的错误只会影响局部范围内的节点运行,网络的其他部分受到的影响可以忽略,避免了网络错误影响扩散的范围。其次,分布式算法中,节点之间并行通信,最大程度利用了网络通信频谱的空间复用,实现网络运行的并行化,从而极大降低时间和通信成本。最后,分布式算法的运行往往只需要节点了解周围邻域内的网络信息,其无需全局性网络信息的特点适合于快速变化的动态网络运行。因此,随着动态网络的常态化,亟待研究和建立适合于动态网络运行的鲁棒性、高效性、安全性兼具的分布式算法理论体系。
共识问题是分布式中的一个基础问题,旨在解决分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。
现有技术主要是在静态无线网络中实现拜占庭共识。也有在动态网络中考虑拜占庭共识的,但是现有技术考虑的是d-正则图,即无线网络中每个处理器连接其他处理器的个数是一样的,譬如经过对现有技术的文献检索发现,johnaugustine等人对动态网络的共识问题进行了研究,提出了基于正则的动态网络的共识策略,但是该策略仅能应用于网络中节点度一致的情况下。
技术实现要素:
针对上述技术问题,本发明提供一种基于抽样的动态分布式系统的共识方法,所述方法在分布式动态网络的基础上考虑拜占庭共识,并且以容错的均匀抽样为基础算法,考虑了无线网络中每个节点连接的其他节点的个数不等情况下的拜占庭共识。
本发明所述方法通过变形的随机游走抽样方法,使得一个节点可以均匀的收集到别的节点的信息,可以考虑当网络中节点连接其他节点个数不同情况下的共识,实现了通过局部信息的交流来实现动态的共识方法,加快了通信的进程,通过o(log2n)轮即可均匀收集到网络中的信息。
本发明是通过以下技术方案实现的:
一种基于抽样的动态分布式系统的共识方法,所述方法用于分布式动态网络,在存在拜占庭节点的情况下,通过随机游走抽样,使整个网络中的任意一个节点能够均匀收集其他节点的信息,实现节点之间的通信,进而使整个网络中所有正确的节点统一任务,加快通信。
进一步地,通过随机游走来收集其他节点的信息,具体采用metropolis–hastings随机游走抽样方法,包括:
(1)初始化整个网络:给网络中每个节点u发送hlogn个起始令牌,将所述起始令牌放在先进先出fifo缓冲器中;
每个所述起始令牌包括节点的id,length和value;id指的是节点的id地址,length指的是节点随机游走的长度,value指的是节点所拥有的任务值;所述任务值为1或0;任务值为1表示节点进行编码,任务值为0表示节点不进行编码;
(2)对所述先进先出fifo缓冲器中的每个起始令牌随机的选择一个邻居节点v,随机生成一个概率p∈[0,1];
若
(3)起始令牌继续留在节点u,并将该初始令牌加入到所述先进先出fifo缓冲器的底部;
(4)继续执行算法(2)-(3),直到起始令牌中length为0。
进一步地,网络中节点通过随机游走收集到其他节点的信息之后,每个节点统计收集到的任务值value,将收集到的最多的任务值更新为这个节点新的任务值;重复metropolis–hastings随机游走抽样的过程,不断更新节点收到的新的任务值,直到网络中节点任务值为0和任务值为1的节点个数相差达到某个阈值,此阈值一般为接近1的一个值,表明网络中很大一部分节点已经认可0或1为其任务值;时,认为网络中所有正确节点都同意一个相同的任务值,即执行相同任务,实现共识。
进一步地,网络节点实现共识的过程具体为:
(1)对于网络中的每一个节点u,初始化节点状态列表buffer[u]:节点状态列表buffer[u]的初始化状态包含hlogn个令牌token;每个令牌token包括节点的id地址、节点执行随机游走的长度length和节点所拥有的任务值value;其中,length=o(logn),且每个节点初始的任务值value为节点的当前任务值;节点v是节点u的邻居节点,d(v)表示的节点v的度,即节点v连接的邻居节点的个数;
(2)发送信息阶段
(2.1)定义令牌数tokencount=hlogn;
(2.2)判断tokencount>0&buffer是否为空;若tokencount>0且buffer不空,执行(2.3);否则执行(3.1);
(2.3)均匀随机的选择一个邻居节点v;
(2.4)确定邻居节点v的度d(v);
(2.5)随机生成一个属于[0,1]的数值p;
(2.6)若
(2.7)将节点u的buffer中最上面的token放在buffer底部;
(2.8)tokencount数目减少1,并回到(2.2);
(3)接收信息阶段
(3.1)更新buffer;
(3.2)计算每一个节点新的任务值val=max{|0|,|1|};max{|0|,|1|}表示value取0和1中出现次数多的那个值;
(3.3)计算diff=|val(0)-val(1)|;val(0)表示支持0的节点个数,val(1)表示支持1的节点个数;
(3.4)判断diff>1-1/n;若成立;结束,否则继续执行步骤(2.1)。
进一步地,在网络节点实现共识的过程中,认为产生错误行为的节点,即拜占庭节点的个数是
本发明的有益技术效果:
本发明所述方法用于动态的分布式网络,即网络节点会发生离开和加入,但是通过网络节点离开和加入的个数均控制为
本发明提供的高效的分布式动态网络的共识方法,目的在于采用随机游走的抽样方法,采用分布式通信的思维方式,以每个节点为最小的单位,结合随机游走得到的抽样结果来更新值。通过变形的随机游走抽样方法,使得一个节点可以均匀的收集到别的节点的信息,可以考虑当网络中节点连接其他节点个数不同情况下的共识,实现了通过局部信息的交流来实现动态的共识方法,加快了通信的进程,通过o(log2n)轮即可均匀收集到网络中的信息。通过上述的过程解决的网络节点过大,通信比较困难的问题。
附图说明
图1是本发明实施例中metropolis–hastings随机游走的流程图;
图2是本发明实施例中利用metropolis–hastings随机游走实现共识的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。
本发明实施例提供一种基于抽样的动态分布式系统的共识方法,所述方法用于分布式动态网络,在存在拜占庭节点的情况下,通过随机游走抽样,使整个网络中的任意一个节点能够均匀收集其他节点的信息,实现节点之间的通信,进而使整个网络中所有正确的节点统一任务,加快通信。
通过随机游走来收集其他节点的信息,具体采用metropolis–hastings随机游走抽样方法,如图1所示,包括:
(1)初始化整个网络:给网络中每个节点u发送hlogn个起始令牌,将所述起始令牌放在先进先出fifo缓冲器中;
每个所述起始令牌包括节点的id,length和value;id指的是节点的id地址,length指的是节点随机游走的长度,value指的是节点所拥有的任务值;所述任务值为1或0;任务值为1表示节点进行编码,任务值为0表示节点不进行编码;
(2)对所述先进先出fifo缓冲器中的每个起始令牌随机的选择一个邻居节点v,随机生成一个概率p∈[0,1];
若
(3)起始令牌继续留在节点u,并将该初始令牌加入到所述先进先出fifo缓冲器的底部;
(4)继续执行算法(2)-(3),直到起始令牌中length为0。
上述metropolis–hastings随机游走抽样方法,通过起始令牌,将令牌随机的发送给邻居,邻居转发令牌,不断的进行此过程,起始令牌最终到达网络中每一个节点的概率都是一致的,实现了全网络的信息通过抽样的方式使每一个节点都可以得到信息。并且,通过随机游走实现了均匀抽样,该均匀抽样过程使得可以通过部分节点的信息来估计整体的信息。
在本实施例中,网络中节点通过随机游走收集到其他节点的信息之后,每个节点统计收集到的任务值value,将收集到的最多的任务值更新为这个节点新的任务值;重复metropolis–hastings随机游走抽样的过程,不断更新节点收到的新的任务值,直到网络中节点任务值为0和任务值为1的节点个数相差达到某个阈值,此阈值一般为接近1的一个值,表明网络中很大一部分节点已经认可0或1为其任务值;时,认为网络中所有正确节点都同意一个相同的任务值,即执行相同任务,实现共识。
在本实施例中,如图2所示,网络节点实现共识的过程具体为:
(1)对于网络中的每一个节点u,初始化节点状态列表buffer[u]:节点状态列表buffer[u]的初始化状态包含hlogn个令牌token;每个令牌token包括节点的id地址、节点执行随机游走的长度length和节点所拥有的任务值value;其中,length=o(logn),且每个节点初始的任务值value为节点的当前任务值;节点v是节点u的邻居节点,d(v)表示的节点v的度,即节点v连接的邻居节点的个数;
(2)发送信息阶段
(2.1)定义令牌数tokencount=hlogn;
(2.2)判断tokencount>0&buffer是否为空;若tokencount>0且buffer不空,执行(2.3);否则执行(3.1);
(2.3)均匀随机的选择一个邻居节点v;
(2.4)确定邻居节点v的度d(v);
(2.5)随机生成一个属于[0,1]的数值p;
(2.6)若
(2.7)将节点u的buffer中最上面的token放在buffer底部;
(2.8)tokencount数目减少1,并回到(2.2);
(3)接收信息阶段
(3.1)更新buffer;
(3.2)计算每一个节点新的任务值val=max{|0|,|1|};max{|0|,|1|}表示value取0和1中出现多次的那个值;
(3.3)计算diff=|val(0)-val(1)|;val(0)表示支持0的节点个数,val(1)表示支持1的节点个数;
(3.4)判断diff>1-1/n;若成立;结束,否则继续执行步骤(2.1)。
上述流程是整个网络节点之间达成统一意见的基础;首先整个网络中所有的节点在独立的执行两个任务中的一个,一个是要进行编码(认为其任务值为1),一个不进行编码(认为其任务值为0),通过相互之间的通信,使得最后所有的网络节点都统一任务。这个流程分为两个大步骤。第一,通过随机游走来收集信息,第二是通过收集到的值来更新网络节点的信息,直到网络中所有的正确节点都达成同样的任务。在本实施例中,在网络节点实现共识的过程中,认为产生错误行为的节点,即拜占庭节点的个数是
本发明所述方法在分布式动态网络的基础上考虑拜占庭共识,并且以容错的均匀抽样为基础算法,为此后的工作打下了扎实的基础。现有技术主要是在静态无线网络中实现拜占庭共识。也有在动态网络中考虑拜占庭共识的,但是他们考虑的是d-正则图,即无线网络中每个节点连接其他节点的个数是一样的。因此在此基础上,本发明考虑一般图(无线网络中每个节点连接的其他节点的个数不等)上的拜占庭共识,为以后的研究奠定了基础。总而言之,通过本发明所构思的以上技术方案与现有技术必须相比,具有以下技术特征及有益效果:
(1)本发明通过随机游走抽样方法,使得一个网络节点可以均匀的收集到别的节点的信息。本发明可以考虑当网络中节点连接其他节点个数不同情况下的共识。实现了通过局部信息的交流来实现动态的共识方法,加快了通信的进程,通过o(log2n)轮即可均匀收集到网络中的信息。
(2)本发明的分布式动态网络可以应用在任意动态的有节点发生故障的情况,为后续的发明给出了一个基石。
(3)本发明公开的高效的分布式动态网络共识方法,在存在拜占庭节点的情况下,实现共识,属于分布式共识领域。该方法在存在拜占庭节点的情况下,在实现了几乎均匀抽样,这种抽样方式,为共识算法提供了技术支持,通过起始令牌,将令牌随机的发送给邻居,邻居转发令牌,不断的进行此过程,使得最后起始令牌最终到达网络中每一个节点的概率都是一致的。通过该算法得到了如何将全网络的信息通过抽样的方式使每一个节点都可以得到信息。然后在每一个随机游走过程结束后,计算每个节点收到的值,取收到最多的那个值作为这个节点新的值,重复这个过程,直到网络中0和1的个数相差很大(达到某个阈值);该方法通过实时收集信息来更新自己的值,来加快通信。