CN113055461B - 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 - Google Patents
一种基于ZooKeeper的无人集群分布式协同指挥控制方法 Download PDFInfo
- Publication number
- CN113055461B CN113055461B CN202110257626.0A CN202110257626A CN113055461B CN 113055461 B CN113055461 B CN 113055461B CN 202110257626 A CN202110257626 A CN 202110257626A CN 113055461 B CN113055461 B CN 113055461B
- Authority
- CN
- China
- Prior art keywords
- node
- zookeeper
- queue
- unmanned
- cluster
- 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
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种面向无人集群的协同指挥控制方法。采用ZooKeeper集群将整个系统中的各服务器和无人装备平台组织成一个松耦合的私有云。ZooKeeper的服务器节点并不局限在机房的服务器上,还可以部署一部分节点在具有足够计算资源的无人平台上,其他无人平台就可以就近获取或发布信息。低算力平台可以通过ZooKeeper查询并向算法服务器请求在线算法服务。指挥员可以借助人机交互界面从ZooKeeper上直接获取所需信息或者得到获取该信息的途径,并发布任务给相应的无人平台。任何一个平台的接入退出或状态变化都可以实时的反映给集群中的订阅者,方便系统高效整合和业务流程随需应变。本发明技术方案解耦了传统指控点对点绑定的通信方式,具有良好的可扩展性。
Description
技术领域
本发明属于无人集群的分布式架构技术和私有云技术领域,具体涉及一种面向无人集群的协同指挥控制方法。
背景技术
传统的指挥控制信息系统的框架为C/S架构,下级单元作为客户端,逐级传输信息,其显著特征在于,系统内各资源相互绑定,形成紧耦合关系。新的平台接入需要额外编码实现,且业务流程更改困难;友邻单元间的相关信息传输不畅,即一个平台基本上只知道自己和其载荷的情况,对其他平台的能力及整个系统状态信息的获取困难,同级别单元之间协同能力差。
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper可以解决很多分布式问题。且ZooKeeper本身就是一个分布式程序,只要半数以上节点存活,ZooKeeper就能正常服务。
ZooKeeper相关的几个概念:
会话(Session):指的是ZooKeeper服务器与客户端会话。在ZooKeeper中,一个客户端连接是指客户端和服务器之间的一个TCP长连接。通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向Zookeeper服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的Watch事件通知。
节点(Node):在ZooKeeper中,“节点"分为两类:第一类是指构成集群的机器,称之为机器节点。第二类则是指数据模型中的数据单元,称之为数据节点ZNode。ZooKeeper将所有数据存储在内存中,数据模型是一棵树(Znode Tree),由斜杠“/”进行分割的路径,就是一个ZNode,例如/foo/bar。每个ZNode上都会保存自己的数据内容,同时还会保存一系列属性信息。ZNode可以分为持久节点和临时(EPHEMERAL)节点两类。所谓持久节点是指一旦这个ZNode被创建了,除非主动进行移除操作,否则这个ZNode将一直保存在ZooKeeper上。临时节点的生命周期和客户端会话绑定,一旦客户端会话失效,那么这个客户端创建的所有临时节点都会被移除。另外,ZNode还支持顺序(SEQUENTIAL)属性,一旦节点被标记上这个属性,那么在这个节点被创建的时候,ZooKeeper会自动在其节点名后面追加上一个整型数字,这个整型数字是一个由父节点维护的自增数字。
版本:ZooKeeper为每个ZNode维护一个Stat数据结构,记录了这个ZNode的三个数据版本:version(当前ZNode的版本)、cversion(当前ZNode子节点的版本)、aversion(当前ZNode的ACL版本)。
事件监听器(Watcher):ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,服务端会将事件通知到感兴趣的客户端上去。
访问控制列表(ACL):类似于UNIX文件系统的权限控制。
发明内容
发明目的是提供了一种基于ZooKeeper的面向无人集群的协同指挥控制方法,克服传统指挥控制信息系统的结构局限性,解决各分系统的信息孤岛问题,实现指挥控制系统信息的互联互通、互操作及易扩展性。
为达到上述目的,本发明提供一种基于ZooKeeper的无人集群分布式协同指挥控制方法,包括如下步骤:
步骤1、数据发布与订阅
1.1将ZooKeeper设置为集群模式,并部署相应的机器节点;ZooKeeper通过选举产生领导者节点,该机器节点负责进行投票的发起和决议,并更新系统状态;其余机器节点作为跟随者或者观察者,用于接收客户端请求,将写请求转发给领导者节点,同步领导者节点的状态,并向客户端返回结果,二者的区别在于观察者没有投票权;
若领导者节点出现网络中断、崩溃退出与重启等异常情况时,ZooKeeper进入恢复模式并从剩下的节点中选举产生新的领导者节点。
1.2所有接入系统的子系统或无人平台都在ZooKeeper上注册相应的ZNode,并发布相关数据到该节点下,供订阅者动态获取数据;
1.3各客户端即子系统或无人平台主动从ZooKeeper获取自己感兴趣的数据,同时可以在ZNode节点上注册一个Watcher,如此,每次信息有更新都会实时获得通知;
步骤2、命名服务
2.1系统中任何服务提供者在启动的时候,都向ZooKeeper上的指定节点目录下写入自己的URL地址,如此即完成服务的发布;
2.2服务消费者启动时,订阅指定节点目录下的提供者URL地址,并向消费者目录下写入自己的URL地址,这些注册的地址都采用临时节点,如此保证服务提供者和消费者可以自动感应资源的变化;
2.3服务提供者根据消费者注册的地址获取相关参数并提供服务,最后将结果反馈给服务消费者;
步骤3、心跳检测与集群监控,集群的监控系统实时检测集群中的平台是否存活
3.1每一个动态加入集群的无人平台都在ZooKeeper中指定节点下注册自己的临时ZNode节点;
3.2监控系统在指定节点上注册一个Watcher,那么该节点下所有临时节点的变化都可以由Watcher实时通知到监控系统。
3.3由于无人平台的节点具有临时特性,一旦会话结束或过期,则该节点就会消失。
步骤4、分布式日志收集
4.1收集器按照业务来分配收集任务单元,因此在ZooKeeper上创建一个以业务名作为节点的节点P;
4.2将这个业务相关的所有机器ip,以子节点的形式注册到节点P上,当机器变动的时候,能够实时通知到收集器调整任务分配;
步骤5、分布式锁
在无人平台进行协同任务过程中,可能出现多个平台同时请求某一资源,这种情况下需要互斥锁进行保护,具体步骤如下:
5.1将ZooKeeper上的一个数据节点看做一个锁;
5.2当多个客户端同时调用create()创建该节点的时候,ZooKeeper能够保证在分布式高并发情况下节点创建的全局唯一性,即最终一定只有一个客户端请求能够创建成功。创建成功的客户端视作获取锁成功,其他客户端则竞争失败。
5.3其他客户端注册Watcher对该节点进行监听。
5.4持有锁的客户端删除该节点,即释放锁后,监听的客户端就会收到Watcher通知,然后再去试图获取锁,这样反复即可。
步骤6、分布式队列
基于ZooKeeper的顺序节点即实现分布式队列。
进一步的,步骤6还能创建同步分布式队列;
6.1创建一个父节点/queue;
6.2每个成员都在标志位节点/queue/start注册Watcher;
6.3每个成员都加入这个队列,加入队列的方式就是创建/queue/x(i)的临时目录节点,i为成员编号;
6.4每个成员获取/queue目录的所有子节点,也就是x(i),判断i的值是否已经是成员的个数,如果小于成员个数则等待/queue/start的出现,如果已经相等就创建/queue/start。
本发明的有效收益如下:
1、本发明技术方案解耦了传统指控点对点绑定的通信方式,具有良好的可扩展性;同时由于分布式结构的设计,半数以下节点的失效不影响整个系统的正常运行,系统具有较强的鲁棒性。
2、本发明的ZooKeeper数据保存在内存中,这也就保证了系统的高吞吐量和低延迟。
3、本发明能够突破传统指挥控制信息系统的结构局限性,建立一个可以满足无人平台集群间的高效整合和业务流程随需应变的私有云。
附图说明
图1为本发明实施例的系统架构图;
图2为本发明实施例的服务发布与订阅架构图;
图3为本发明实施例的ZooKeeper选举示意图;
图4为本发明实施例的分布式队列算法流程示意图;
图5为本发明实施例的服务端负载均衡流程示意图;
图6为本发明实施例的客户端负载均衡流程示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细的解释和说明。本发明整体系统流程图如图1所示,具体实现过程包括如下步骤。
步骤一、提供数据发布与订阅,基本流程如图2所示,实施步骤包括:
1.将ZooKeeper设置为集群模式,并部署相应的机器节点,如图3所示。ZooKeeper通过选举产生领导者(Leader)节点,该机器节点负责进行投票的发起和决议,并更新系统状态;其余机器节点作为跟随者或者观察者,都用于接收客户端请求,将写请求转发给领导者节点,同步领导者节点的状态,并向客户端返回结果,两者的区别在于观察者没有投票权。当领导者节点出现网络中断、崩溃退出与重启等异常情况时,ZooKeeper就会进入恢复模式并从剩下的节点中选举产生新的领导者节点。
2.所有接入系统的子系统或无人平台都在ZooKeeper上注册相应的ZNode,并发布相关数据到该节点下,供订阅者动态获取数据。例如无人装备可以将自身装备参数和载荷能力信息提交到ZooKeeper上,指控端可以实时获得系统中装备平台的在线情况及其能力参数的变化情况,而无需额外开发复杂的通信协议。
3.各客户端(子系统或无人平台)主动从ZooKeeper获取自己感兴趣的数据,同时可以在ZNode节点上注册一个Watcher。这样,以后每次信息有更新都会实时获得通知。
步骤二、命名服务,实施步骤包括:
1.系统中任何服务提供者在启动的时候,都向ZooKeeper上的指定节点目录(譬如/services/${serviceName}/providers)下写入自己的URL地址,这个操作就完成了服务的发布。
2.服务消费者启动的时候,订阅“/services/${serviceName}/providers”目录下的提供者URL地址,并向“/services/${serviceName}/consumers”目录下写入自己的URL地址。这些注册的地址都采用临时节点,这样就能够保证服务提供者和消费者可以自动感应资源的变化。
3.服务提供者根据消费者注册的地址获取相关参数并提供服务,最后将结果反馈给服务消费者。比如,无人车需要追踪目标,则由算法服务器进行目标识别和全局路径搜索,最后将结果返回给无人车。
步骤三、心跳检测与集群监控
集群的监控系统实时检测集群中的平台是否存活。过去的做法通常是:监控系统通过某种手段(比如ping)定时检测每个机器,或者每个机器自己使用心跳包定时向监控系统汇报“我还活着”。这种做法虽然可行,但是存在两个比较明显的问题:(1)集群中机器有变动的时候,牵连修改的东西比较多;(2)有一定的延时。
利用ZooKeeper的特性可以实现另一种集群存活性监控系统并解决上述问题,实施步骤包括:
1.每一个动态加入集群的无人平台都在ZooKeeper中指定节点(如/platforms)下注册自己的临时ZNode节点/platforms/{platform_id}。
2.监控系统在节点/platforms上注册一个Watcher,那么该节点下所有临时节点的变化都可以由Watcher实时通知到监控系统。
3.由于无人平台的节点具有临时特性,一旦会话结束或过期,那么该节点就会消失。
步骤四、分布式日志收集
这个子系统的核心工作是收集分布在不同无人平台的日志。实施步骤包括:
1.收集器按照业务来分配收集任务单元,因此在ZooKeeper上创建一个以业务名作为节点的节点P(/logs/{$taskName})。
2.将这个业务相关的所有机器ip,以子节点的形式注册到节点P上,这样一来就能够实现机器变动的时候,能够实时通知到收集器调整任务分配。系统中有些信息需要动态获取,并且还会存在人工手动去修改这个信息的问题。通常的做法是暴露出接口,例如JMX接口,来获取一些运行时的信息。引入ZooKeeper之后,就不用自己实现一套方案了,只要将这些信息存放到指定的ZooKeeper节点上即可。
步骤五、分布式锁
在无人平台进行协同任务过程中,可能出现多个平台同时请求某一资源,这种情况下需要互斥锁进行保护,具体步骤如下:
1.将ZooKeeper上的一个数据节点(比如/mutex)看做一个锁;
2.当多个客户端同时调用create()创建该节点的时候,ZooKeeper能够保证在分布式高并发情况下节点创建的全局唯一性,即最终一定只有一个客户端请求能够创建成功。创建成功的客户端视作获取锁成功,其他客户端则竞争失败。
3.其他客户端注册Watcher对该节点进行监听。
4.持有锁的客户端删除该节点,即释放锁后,监听的客户端就会收到Watcher通知,然后再去试图获取锁,这样反复即可。
步骤六、分布式队列
基于ZooKeeper的顺序节点可以实现分布式队列。
更进一步,可以创建同步分布式队列。在无人平台进行协同任务过程中,有时候需要一个队列的成员都聚齐时,才可以进行下一步行动,否则一直等待所有成员达到条件,具体流程如图4所示。实施步骤如下:
1.创建一个父节点/queue。
2.每个成员都在标志位节点/queue/start注册Watcher。
3.然后每个成员都加入这个队列,加入队列的方式就是创建/queue/x(i)的临时目录节点,i为成员编号;
4.然后每个成员获取/queue目录的所有子节点,也就是x(i)。判断i的值是否已经是成员的个数,如果小于成员个数则等待/queue/start的出现,如果已经相等就创建/queue/start。
总之,使用ZooKeeper来进行分布式通知和协调能够大大降低系统之间的耦合。为系统开发新的功能基本上不需要对现有系统进行任何修改,只需接入ZooKeeper,订阅或者发布相应的信息。比如新增系统日志或者演练记录回放功能时,只需订阅ZooKeeper中用户感兴趣的信息获取并全部记录下来。或者需要开发一个新的任务规划算法,开发者可以通过ZooKeeper获取所需全部的场景态势信息和平台装备参数及其能力信息,最后将算法服务发布到ZooKeeper上,不需要对原有系统进行改动或者开发新的通信协议。
以下通过特定的具体实例说明本发明的实施方式,显然,所描述的实施例仅仅是本发明一部分实施例,本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
实施例1:任务调度及进度汇报
操作员在人机交互界面下达任务。人机交互程序则修改ZooKeeper上某些任务节点的状态,而ZooKeeper就把这些变化通知给注册了对应Watcher的客户端,即任务推送子系统。于是任务推送子系统将相应的任务及其参数推送到对应的无人平台。
无人平台收到任务并启动后,会到ZooKeeper来注册一个临时节点,并且定时将自己的进度进行汇报(即将进度写回这个临时节点),这样任务管理者就能够实时知道任务进度。使用ZooKeeper来进行分布式通知和协调能够大大降低系统之间的耦合。
实施例2:视频流监控
具有视频监控载荷的无人平台,发布视频流服务,比如采用rtsp流协议建立流服务。
无人平台将流服务的URL写入自己ZNode节点下的stream子节点。
用户通过人机交互界面选择要查看的平台监控视频。
人机交互界面通过ZooKeeper查询并获得该无人平台的视频流URL。
建立视频流连接并将监控视频展示给用户。
实施例3:算法服务器的负载均衡
在分布式无人集群中,为了保证系统的高可用性,降低单台服务器的负载,同一服务可以提供多份部署,达到对等服务。本实施例中包含算法服务端和客户端,它们的负载均衡流程分别如图5和图6所示,具体实施步骤包括:
算法服务器提供多份部署,每一个部署在ZooKeeper的/services/${serviceName}/providers节点下建立自己的临时节点。
无人平台向ZooKeeper查询/services/${serviceName}/providers节点,获取所有可用的服务器列表。
无人平台按照事先设定的负载均衡算法(比如随机、轮询、最小活跃数或者一致性hash等)选出一台服务器,并与之建立网络连接。
算法服务器收到无人平台的连接请求后,在ZooKeeper中增加自己节点的负载数,并提供算法服务。
算法服务器与无人平台的连接断开后,则在ZooKeeper中减少自己节点的负载数。
实施例4、动态选举
在无人平台进行协同任务时,往往需要选出一个领队进行协调或者决策。我们可以利用ZooKeeper的强一致性,很轻易地在分布式环境中进行集群动态Master选举,具体步骤如下:
创建一个名为/currentMaster的节点。
参与选举的所有平台同时请求在/currentMaster节点下创建EPHEMERAL_SEQUENTIAL类型子节点。
ZooKeeper的强一致性保证了这些子节点的顺序性,可能情况是/currentMaster/{sessionId}-1,/currentMaster/{sessionId}-2,/currentMaster/{sessionId}-3,…。选取序列号最小的那个平台作为Master。
如果Master机器故障,它所创建的临时节点就会被自动删除,那么之后最小序号的平台就会顺位成为新的Master。
以上所述仅为本发明示例性的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (2)
1.一种基于ZooKeeper的无人集群分布式协同指挥控制方法,其特征在于,包括如下步骤:
步骤1、数据发布与订阅
1.1将ZooKeeper设置为集群模式,并部署相应的机器节点;ZooKeeper通过选举产生领导者节点,该机器节点负责进行投票的发起和决议,并更新系统状态;除去领导者节点的其余机器节点作为跟随者或者观察者,用于接收客户端请求,将写请求转发给领导者节点,同步领导者节点的状态,并向客户端返回结果,观察者与跟随者的区别在于观察者没有投票权;
若领导者节点出现网络中断、崩溃退出与重启等异常情况时,ZooKeeper进入恢复模式并从剩下的节点中选举产生新的领导者节点;
1.2所有接入系统的子系统或无人平台都在ZooKeeper上注册相应的ZNode,并发布相关数据到该节点下,供订阅者动态获取数据;
1.3各客户端即子系统或无人平台主动从ZooKeeper获取自己感兴趣的数据,同时可以在ZNode节点上注册一个Watcher,如此,每次信息有更新都会实时获得通知;
步骤2、命名服务
2.1系统中任何服务提供者在启动的时候,都向ZooKeeper上的指定节点目录下写入自己的URL地址,如此即完成服务的发布;
2.2服务消费者启动时,订阅指定节点目录下的提供者URL地址,并向消费者目录下写入自己的URL地址,这些注册的地址都采用临时节点,如此保证服务提供者和消费者可以自动感应资源的变化;
2.3服务提供者根据消费者注册的地址获取相关参数并提供服务,最后将结果反馈给服务消费者;
步骤3、心跳检测与集群监控,集群的监控系统实时检测集群中的平台是否存活
3.1每一个动态加入集群的无人平台都在ZooKeeper中指定节点下注册自己的临时ZNode节点;
3.2监控系统在指定节点上注册一个Watcher,那么该节点下所有临时节点的变化都可以由Watcher实时通知到监控系统;
3.3由于无人平台的节点具有临时特性,若会话结束或过期,则该节点消失;
步骤4、分布式日志收集
4.1收集器按照业务来分配收集任务单元,因此在ZooKeeper上创建一个以业务名作为节点的节点P;
4.2将这个业务相关的所有机器ip,以子节点的形式注册到节点P上,当机器变动的时候,能够实时通知到收集器调整任务分配;
步骤5、分布式锁
在无人平台进行协同任务过程中,可能出现多个平台同时请求某一资源,这种情况下需要互斥锁进行保护,具体步骤如下:
5.1将ZooKeeper上的一个数据节点视为一个锁;
5.2当多个客户端同时调用create()创建该节点的时候,ZooKeeper能够保证在分布式高并发情况下节点创建的全局唯一性,即最终一定只有一个客户端请求能够创建成功;
创建成功的客户端视作获取锁成功,其他客户端则竞争失败;
5.3其他客户端注册Watcher对该节点进行监听;
5.4持有锁的客户端删除该节点,即释放锁后,监听的客户端就会收到Watcher通知,然后再去试图获取锁,如此反复;
步骤6、分布式队列
基于ZooKeeper的顺序节点即实现分布式队列。
2.根据如权利要求1所述的一种基于ZooKeeper的无人集群分布式协同指挥控制方法,其特征在于,所述步骤6还能创建同步分布式队列;
6.1创建一个父节点/queue;
6.2每个成员都在标志位节点/queue/start注册Watcher;
6.3每个成员都加入这个队列,加入队列的方式就是创建/queue/x(i)的临时目录节点,i为成员编号;
6.4每个成员获取/queue目录的所有子节点,也就是x(i),判断i的值是否已经是成员的个数,如果i小于成员个数则等待/queue/start的出现,如果i等于成员个数,则创建/queue/start。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110257626.0A CN113055461B (zh) | 2021-03-09 | 2021-03-09 | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110257626.0A CN113055461B (zh) | 2021-03-09 | 2021-03-09 | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113055461A CN113055461A (zh) | 2021-06-29 |
CN113055461B true CN113055461B (zh) | 2022-08-30 |
Family
ID=76510898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110257626.0A Active CN113055461B (zh) | 2021-03-09 | 2021-03-09 | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113055461B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115293513A (zh) * | 2022-07-08 | 2022-11-04 | 北京商越网络科技有限公司 | 一种采购平台异步任务调度方法、装置及系统 |
CN115426356A (zh) * | 2022-08-30 | 2022-12-02 | 中国银行股份有限公司 | 一种分布式定时任务锁更新控制执行方法和装置 |
CN115988005B (zh) * | 2022-11-08 | 2023-07-18 | 北京太格时代电气股份有限公司 | 一种采用分布式集群进行信号同步的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161533B (zh) * | 2015-04-09 | 2019-09-10 | 阿里巴巴集团控股有限公司 | 一种保障动物园管理员系统快速完成领导者选举的方法,装置及系统 |
CN106254100B (zh) * | 2016-07-27 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 一种数据容灾方法、装置和系统 |
CN111460030A (zh) * | 2020-03-18 | 2020-07-28 | 紫光云技术有限公司 | 基于ZooKeeper的分布式数据交换系统 |
-
2021
- 2021-03-09 CN CN202110257626.0A patent/CN113055461B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113055461A (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113055461B (zh) | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 | |
CN109618005B (zh) | 调用服务器的方法和代理服务器 | |
US10547693B2 (en) | Security device capability discovery and device selection | |
WO2020147331A1 (zh) | 一种微服务监控方法及系统 | |
CN112214338A (zh) | 一种基于微服务灵活部署的物联网云平台 | |
CN106921754B (zh) | 集群系统的负载均衡方法、装置、介质和电子设备 | |
CN109150987B (zh) | 基于主机层和容器层的两层式容器集群弹性扩容方法 | |
US20040078440A1 (en) | High availability event topic | |
CN112333249B (zh) | 一种业务服务系统及方法 | |
CN109218349A (zh) | 一种管理服务器集群的方法及装置 | |
JP2004519024A (ja) | 多数のノードを含むクラスタを管理するためのシステム及び方法 | |
CN103581276A (zh) | 集群管理装置、系统、业务客户端及相应方法 | |
CN102984501A (zh) | 一种网络视频录像集群系统 | |
US20160344582A1 (en) | Call home cluster | |
US8880665B2 (en) | Nonstop service system using voting, and information updating and providing method in the same | |
CN114448983A (zh) | 基于ZooKeeper的分布式数据交换方法 | |
JP6304499B2 (ja) | 相互接続ネットワークを管理する方法およびシステム | |
CN110971872B (zh) | 一种基于分布式集群的视频图像信息采集方法 | |
CN110083653B (zh) | 一种订单数据的操作方法、装置、计算机设备和存储介质 | |
CN113326100B (zh) | 一种集群管理方法、装置、设备及计算机存储介质 | |
CN113766004A (zh) | 一种基于多云平台的灾备系统、方法及存储介质 | |
CN115225645B (zh) | 一种服务更新方法、装置、系统和存储介质 | |
CN115391058B (zh) | 一种基于sdn的资源事件处理方法、资源创建方法及系统 | |
van Renesse et al. | Autonomic computing: A system-wide perspective | |
CN113254159B (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 |