技术分享 | 无人机集群——分布式控制算法

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | 无人机集群——分布式控制算法相关的知识,希望对你有一定的参考价值。

上期我们讲解了四种集群分布式控制算法之后,那么,接下来向大家介绍一下分布式控制中的常用算法吧。但是为了帮助大家更好的理解raft算法,先从一个简单的例子入手吧!

假如某班(组成人员:follower)要进行班长的选举(leader),初始时没有一个人自告奋勇,在一定时·间计时结束后,有三名成员毛遂自荐[candidate(A,B,C)],愿意担任班长(leader),但是大家都优秀,那么谁担任合适呢?A,B,C三人每人带一个随机时间的倒计时器,倒计时一结束,这个人(假设A)就会去搜集询问其他人对于他的看法,即能不能当选班长?如果他获得了足够多的票数,那么他就自然晋升为班长。如果之后,A因为违法乱纪被撤销班长一职,则其他follower,与上期candidate,依然可以继续提出申请班长一职,继续leader 的争夺。而对于后面提到的日志复制,在本例子中可以理解为,数学老师(client)要求班长统计对于数学课的意见建议,班长收到了老师信息,并将此信息传送至其他人,一段时间后有个别人进行反馈,班长将其计入自己的信息统计,并将此意见传向其他follower,在一定时间之后若是受到大多数人(follower)的反馈,那么leader就将关于数学课的意见彻底统计,并反馈至数学老师(client)。 好了,通俗易懂的例子讲完了,下面来正真了解一下Raft算法吧!

Raft一致性算法又称为分布式共识算法,一致性是指数据保持一致,在整个分布式系统中的数据是一致的,也可以理解为在多个节点中的数据的值是保持一致的。它的前身为Paxos 算法,Paxos算法为分布式选举算法:也就是说在一堆消息中通过不断的选举使得各消息的接收者或者执行者能够达到数据一致,按照一致的消息顺序进行执行。Paxos算法允许各个客户端(client)互不影响的向服务端发送指令,并按照选举的方式使得数据达成一致,其特点在于,算法是以序号更高者获胜为标准,并且尝试在信息传送时若被拒绝,则会以新的序列号再次参加选举,如此重复,选出公认序列的目的。它虽然效率高,但依然存在美中不足,而Raft算法,是在他的基础上更为优化和更能易懂的算法。

Raft算法,整体可以理解为民主选举,从选民中选举产生一个领导者,而Raft算法的核心工作就是将这样的一个领导者产生的问题分解为选举和状态复制过程两个子问题进行处理。选举过程不难理解,那么什么是状态复制呢?状态复制简言之就是日志复制,他的目的就是能够保证在选主之后某一节点出现问题后,整个系统依然能够保证已有的数据正常进行。其中每个节点都有三个状态,分别是leader、candidate、follower三种状态可以互相转换。其中Leader负责发出提案,总统节点;candidate作为候选,负责争夺leader;follower负责统一leader发出的提案。下面就将两个子问题做一个简单的阐述。

(1) 选举过程: 在服务器启动时,所有节点都是以follower的身份开始,每一个follower都带有定时器,在一定的时间段内,如果集群当中没有leader,则follower将声明自己以candidate加入leader的选举(发起选举),并将相关消息发送给其他节点进行投票,若在一段时间内未能得到回应,届时就会进行重新选举,而其他节点会根据受到的消息,进行投票,收到大多数节点的投票的candidate将晋升为leader。若在系统工作的过程中,存在leader故障的时候,在一定的时间范围内相关节点收不到leader传送的消息时,其他follower就会重新加入leader的选举过程,竞争当下一位领导者。值得注意的是,争当leader的两个候选者同时选举并获得相同的票数时,则会重新发送投票信息,进行新一轮选举,此类操作,保证了再次发送投票请求以后不冲突。具体过程可参见以下两幅图,以便于帮助理解。

(2)复制过程: 经过上面的选举过程产生leader之后,其日志复制过程具体步骤如下 (1)Leader负责接收来自客户端的提案请求,将数据写在本地日志 (2)提案内容将包含在Leader发出的请求中; (3)Follower接收到请求以后回复Leader的请求; (4)Leader接收到多数派Follower的回复以后确认提案并写入自己的存储空间中并回复Client; (5)若出现问题,leader丢失,client无法接收其信息,在一定时间段之后,将会重新选举产生新的leader进行整个集群的控制和领导。

以上就是对分布式控制算法---Raft一致性算法的简单介绍了,希望大家能有一定深度的理解。

  • End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。

阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

以上是关于技术分享 | 无人机集群——分布式控制算法的主要内容,如果未能解决你的问题,请参考以下文章

技术分享 | 基于人工势场法的无人机,机间避撞实现

技术分享 | GPS无人机集群位置自主纠偏功能升级

技术分享 | Prometheus避障—A_star算法代码阅读

技术分享 | 遥控器控制(Joystick)

技术分享 | MESH组网的强大之处

技术分享 | 避坑指南-无人机自主降落代码解析