您当前的位置: 首页 >  分布式

小生叫安辰

暂无认证

  • 13浏览

    0关注

    105博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

分布式通信机制

小生叫安辰 发布时间:2021-11-21 00:40:22 ,浏览量:13

分布式通信机制

这里主要介绍鸿蒙系统中的通信机制。 主要分为下面两种

  1. 基于话题的通信
  2. 基于服务的通信
1、基于话题的通信机制

如图2-10所示,在该图中有两个节点:一个是发布者Talker,另一个是订阅者Listener.两个节点分别发布、订阅同一个话题,启动顺序没有强制要求,此处假设Talker 首先启动,可分成图中所示的七步来分析建立通信的详细过程。

  1. Talker注册 Talker启动,通过某端口使用RPC向管理端注册发布者的信息,包含所发布正 息的话题名: 管理端会将节点的注册信息加人注册列表中。
  2. Listener注册 Listener启动,同样通过RPC向管理端注册订阅者的信息,包含需要订阅的话题名。
  3. 管理端进行信息匹配力 管理端根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的发布者,则等待发布者的加人;如果找到匹配的发布者信息,则通过RPC向Listener 发送Talker的RPC地址信息。
  4. Listener发送连接请求 Listener接收到Master发回的Talker地址信息,尝试通过RPC向Talker发送连接请求,传输订阅的话题名、消息类型以及通信协议(TCP/UDP)。
  5. Talker确认连接请求 Talker接收到Listener发送的连接请求后,继续通过RPC向Listener确认连接信息,其中包含自身的TCP地址信息
  6. Listener尝试与Talker建立网络连接 Listener接收到确认信息后,使用TCP尝试与Talker 建立网络连接。
  7. Talker向Listener发布数据 成功建立连接后,Talker 开始向Listener发送话题消息数据。从上面的分析中可以发现,前五个步骤使用的通信协议都是RPC最后发布数据的过程才使用到TCP。管理端在节点建立连接的过程中起到了重要作用,但是并不参与节点之间最终的数据传输。

详细过程可以参照下图 在这里插入图片描述

2、基于服务的通信机制

服务是一种带有应答的通信机制,通信原理如图所示,与话题的通信机制相比,其减少了listener和talker的RPC通信 在这里插入图片描述

  1. Talker注册 Talker启动,通过1234端口使用RPC向管理者注册发布者的信息,包含所提供的服务名;管理端会将节点的注册信息加人注册列表中。
  2. Listener注册 Listener启动,同样通过RPC向管理端注册订阅者的信息,包含需要查找的服务名。
  3. 管理端进行信息匹配 Master根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的服务提供者,就等待该服务的提供者加入;如果找到匹配的服务提供者信息,则通过RPC像listener进行发送talker的TCP地址信息
  4. Listener与Talker建立网络连接 Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接,并且发送服务的请 求数据。
  5. Talker向Listener发布服务应答数据 Talker接收到服务请求和参数后,开始执行服务功能,执行完成后,向Listener发送应 答数据。
话题和服务的区别

话题和服务是ROS中最基础也是使用最多的通信方法,从2.5节介绍的ROS通信机制 中可以看到这两者有明确的差别,具体总结如表2-2所示。

话题服务同步性异步同步通信模型发布/订阅客户端/服务器底层协议TCP/UDPTCP/UDP反馈机制无有缓冲区有无实时性弱强节点关系多对多一对多使用场景数据传输逻辑处理

话题是ROS中基于发布/订阅模型的异步通信模式,这种方式讲信息的产生和使用双方解耦,常用于不断更新的、含有较少逻辑处理的数据通信;而服务多用于处理同步通信,采用客户端/服务器模型,常用于数据量较小的但是又较强逻辑的数据交换。

关注
打赏
1635606302
查看更多评论
立即登录/注册

微信扫码登录

0.1770s