自动驾驶通信中间件ecal源码分析—2. Broker vs Brokerless

      最后更新:2022-06-23 20:53:43 手机定位技术交流文章

      我们前面提到,ecal是无经纪人,那么什么是经纪人和无经纪人?

      1. Message Broker

      A message broker is software that enables applications, systems, and services to communicate with each other and exchange information. The message broker does this by translating messages between formal messaging protocols. This allows interdependent services to “talk” with one another directly, even if they were written in different languages or implemented on different platforms.

      消息经纪人是一个应用程序,它的存在使得不同的应用程序(APP)/系统/服务互相通信(数据交互)。经纪人可以实现消息协议之间的自动转换(假设接收者和发送者通信协议不同),即使应用程序在不同的系统上,它也会使用不同的编程语言编写。

      如上图所示,经纪人作为消息代理,从消息生产者接收数据,然后将其转换成协议(如果需要),然后发送给消息消费者。

      从上面看,我们很容易得到这个网络架构的优点:

      1. 经纪人的两端申请不需要知道其他申请(ip、port等)的存在,你唯一需要知道的是经纪人的IP信息。经纪人将接收到相应的应用程序的消息路径(基于“队列名称”,“路径键”,“主题”,“消息属性”等,不基于IP/终端信息);
      2. 没有需要重叠发送者和接收者的信息寿命。例如,发送者在向经纪人发送消息后结束进程,不会影响消息的接收者,因为经纪人负责向接收者发送消息;

      同时,这种网络架构的弊端也显而易见:

      1. 所有消息都通过经纪人发送/接收,因此经纪人成为整个系统的一个瓶颈,影响了整个系统的数据传输的延迟和吞吐量。

      2.Message Brokerless

      上面的图表显示了无中间体的网络架构(Brokerless),其优点是:

      1. 网络连接数从前6个数据连接减少到3个;
      2. 由于点到点的直接连接,网络架构适合低延迟/高耦合场景。

      但是,为了实现点点连接,消息生产者首先需要了解信息,例如消息消费者的IP(对于小系统来说,可以通过固定网络拓扑实现,但对于大系统来说并不现实),因此

      1. 首先需要解决的第一个问题是邻居的发现,通过这种发现,制造商可以自动发现消费者的IP信息。
      2. 第二个需要解决的问题是消息制作者和消费者动态进入和退出的实时处理机制。

      3. ros1的连接建立过程

      其次,基于 ro1的主题建立通信连接,描述了Broker和Brokerless,

      上面是Ros官方提供的数据连接的图片,它使用rviz查看激光点云数据(sensor_msgs/LaserScan)。

      1. 在任何节点启动之前,ros必须启动roscore节点(ros master),整个系统只有Oneroscore节点(进程);
      2. ros master有一个XMLRPCURI,所有其他节点节点都知道;
      3. 启动hokuyo_node驱动节点,驱动激光雷达,并发送到扫描主题sensor_msgs/LaserScan数据。在节点首先发送有关主题的数据之前,首先将发送的数据信息发送给主机,包括发送的数据类型,topic名字,发送者URI(主机名称+端口)等(上图的主题是扫描,主机名是foo,港口是1234),然后,Theros的主人将这些信息记录在出版商表中(如果没有订阅者,出版商将不实际发送数据);
      4. 当rviz启动时,它将启动一个订阅者订阅“扫描”主题sensor_msgs/LaserScan数据,首先进入 theros master通信,使用XMLRPC获取谁在“扫描”主题上发送数据, theros master返回发送者URIfoo:1234,但URI不用于发送数据;
      5. 订阅者连接到发布者URI,发布者返回真实数据URI时foo:2345然后,用户连接到出版商的数据URI来进行真正的TCP数据传输。

      从上面的过程可以看出,ros1并不是真正的代理网络架构,因为真正的TCP数据连接不通过罗斯主机.罗斯大师的主要任务是为系统其他节点提供主题登记服务,帮助出版商和订阅者完成连接设置,它负责寻找邻居的功能。它也不是无家可归。因为如果有诺罗斯大师的话,整个罗斯系统的数据连接根本无法建立,这也是ROS1的最大问题之一,单节点失效问题,如果系统运行,罗斯科有故障,整个系统不会正常运作。

      汽车通信中介电子源代码分析-2. “Broker vs Brokerless - Zhihu”.(com)

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/28230.html

          热门文章

          文章分类