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

2023-11-05

前面我们提到ecal是没有中间代理商的(brokerless),那么什么是Broker和Brokerless。

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.

Message broker是一个应用程序,它的存在可以使得不同的应用程序(APP)/系统/服务互相进行通信(数据交互)。Broker可以实现消息协议之间的自动转换(假设接收端和发送端的通信协议不同),即使应用程序位于不同的系统、采用不同的编程语言编写。

如上图所示,Broker充当了消息代理人的身份,它接收消息生产者(producer)的数据,然后对这些消息进行协议转换(如果需要),然后再发送给消息消费者(consumer)。

从上面的说明,我们能很容易得到broker这种网络架构带来的优点:

  1. 对于broker两端的应用程序等不需要知道其他应用程序的存在实体(ip,端口等),唯一需要知道的就是broker的ip等信息。broker会将接收到的消息路由到对应的应用程序(依据"queue name", “routing key”, “topic”, "message properties"等,而不是依据ip/端口等信息);
  2. 消息的发送者和接收者的生存期不必重叠,例如,消息发送端将消息发送给broker后程序结束,这时候不影响消息接收者,因为broker会负责将消息发送给接收者;

同时,broker这种网络架构带来的缺点也非常明显:

  1. 所有消息的发送/接收都要经过broker,所以broker会成为整个系统的瓶颈点,影响整个系统的数据传输的延时和吞吐量。

2.Message Brokerless

image-20220304165806452

上图所示为不带中间代理商的网络架构(Brokerless),可以看到其优点为:

  1. 网络连接数减少,由之前的6条数据连接减为3条;
  2. 由于是点对点直接连接,该网络架构适合于低延时/高并发的场景。

但是为了达到点对点连接,消息生产者首先需要知道消息消费者的ip等信息(对于小型的系统,可以用固定的网络拓扑来完成,但是对大型系统来说不现实),因此

  1. 首先需要解决的第一个问题是邻居发现(discovery),依靠邻居发现功能消息生产者可以自动发现消息消费者的ip等信息;
  2. 第二个要解决的问题是消息生产者和消费者的动态加入和退出的实时处理机制。

3.ros1的连接建立过程

接下来利用ros1中基于Topic的通信连接的建立来说明Broker和Brokerless,

image description

上图为ros官方提供的数据连接示意图,利用rviz查看激光点云数据(sensor_msgs/LaserScan),其具体流程为

  1. ros在启动任何节点之前都必须启动roscore节点(ros master),且整个系统也只会存在唯一一个roscore节点(进程);
  2. ros master有一个所有其他node节点都知道的XMLRPC URI;
  3. 启动hokuyo_node驱动节点,将激光雷达驱动起来,并在**”scan”** topic上发送sensor_msgs/LaserScan数据。在节点第一次在topic上发送数据之前,首先会将要发送的数据信息发送给master,包括发送的数据类型,topic名字,发送者的URI(hostname+port)等(上图中topic为scan,hostname为foo,port为1234),然后ros master会将这些信息记录在publisher表中(在没有subscriber时,publisher不会真正的发送数据);
  4. 当启动rviz配置好topic等信息后,会启动一个subscriber去订阅**”scan”** topic上的sensor_msgs/LaserScan数据,首先会去和ros master通信,利用XMLRPC去获取谁在**”scan”** topic上发送数据,ros master返回发送者的URIfoo:1234,但是该URI不是用来发送数据的;
  5. subscriber去连接publisher的URI,此时publisher返回真正的数据URIfoo:2345,接着subscriber去连接publisher的数据URI,进行真正的TCP数据传输。

从上面的过程可以看出,ros1不是真正意义上的broker网络架构,因为真正的TCP数据连接不经过ros master。ros master的主要作用是为系统的其他节点提供topic的注册服务,帮助publisher和subscriber完成连接的建立,起到了邻居发现的功能。同时也不是Brokerless的,因为如果没有ros master,整个ros系统的数据连接根本无法建立,这也是ROS1的一个最大问题,单节点失效问题,如果在系统正在运行过程中,roscore出现故障,整个系统就无法正常运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • upload-labs 第6-20关

    upload labs关数6 20 第6关 第7关 第8关 第9关 第10关 第11关 第12关 第13关 第14关 第15关 第16关 第17关 第18关 第19关 这几关都是特殊的绕过检测方式 第6关 第六关其实没什么思路 就是对比了一
  • 高亮必填字段

    程序需求 必填字段高亮提示 为输入文本框添加一个高亮样式 input ng invalid background color rgb 255 255 51 input ng invalid required background color
  • 2023年第五届人工智能与机器学习国际会议(FAIML 2023)

    2023年第五届人工智能与机器学习国际会议 FAIML 2023 重要信息 会议网址 www faiml org 会议时间 2023年4月14 16日 召开地点 中国北京 截稿时间 2023年3月15日 录用通知 投稿后2周内 收录检索 E

随机推荐

  • 高德地图android sdk 地图显示和定位 基本使用方法

    首先 定位和地图是分开的 定位有定位的sdk 地图有地图的sdk 地图显示分为MapView和 AMap 两个类 MapView重写activity内的基本所有生命周期方法 Amap由mapview产生 aMap mapView getMa
  • 剑指Offer 04. 二维数组中的查找

    原题链接 思路 题目中说 每一行都是 从左向右递增的 在一个递增的序列中 查找某个数是否是存在的 二分即可 注意对边界进行判断 时间复杂度 O nlogn 代码 class Solution public boolean check int
  • 将windows按键修改成mac的快捷键

    下载工具autoHotKey AutoHotkey 使用autoHotKey 下载后创建一个脚本 ahk文件 将下面的进行粘贴 右键run script运行当前的脚本 ahk文件 就可以实现mac的快捷键了 a Send a 将 Alt A
  • Visual Studio build tools 安装出错的一种解决办法

    一般是安装包丢失或损坏 那么我么可以用离线下载的方式来先行下载 用 h 看下帮助 主要是Layout参数 下载完 到下载目录安装吧 转载于 https www cnblogs com jackadam p 8279199 html
  • 数据库系统 复习总结

    绪论 关系数据库 关系模型 完整性约束 关系运算 SQL语句 数据库安全 数据库安全性 数据库完整性 数据库设计 数据库设计概述与需求分析 函数依赖 无损连接验证算法 范式 关系模式分解 物理存储结构 磁盘容错技术 主索引 辅助索引 事务
  • 桥接模式-

    定义 也称为桥梁模式 接口模式或柄体模式 是将抽象部分与它的具体实现部分分离 使它们都可以独立地变化 适用场景 1 在抽象和具体实现之间需要增加更多的灵活性的场景 2 一个类存在两个 或多个 独立变化的维度 而这两个 或多个 维度都需要独立
  • 记一次Connection refused: no further information: localhost/127.0.0.1:6379的排错

    解决Redis connection refusd遇到的一个问题 错误描述 我做一个登陆界面时 把token令牌储存在Redis中 输入正确的账号密码时 在控制台显示如下错误 2020 01 31 14 20 34 DEBUG Connec
  • 2023年“网络安全”赛项浙江省金华市选拔赛 任务书

    2023年 网络安全 赛项浙江省金华市选拔赛 任务书 任务书 一 竞赛时间 共计3小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一 Windows操作系统渗透测试 任务二 Linux操作
  • JavaScript基础Day05:对象

    JavaScript基础Day05 对象 文章目录 JavaScript基础Day05 对象 一 对象 1 创建对象 2 自定义构造函数创建对象 3 通过字面量创建对象 4 new关键字 5 this关键字 二 对象的使用 1 获取属性 两
  • [工业互联-5]:工业无线互联总线之IO-Link Wireless

    目录 第1章 IO Link Wireless概述 1 1 IO Link有线 1 2 IO Llink无线出现 1 3 IO Link Wireless概述 1 4 IO Link Wireless性能指标 第2章 IO Link Wir
  • qt android 开发篇之如何实现圆盘(hsv)颜色选择器

    在很多情况 我们开发应用的时候经常会用到颜色选择器 大一的时候我做一个涂鸦软件的时候遇到的一个问题 就是如何在qt上做一个圆盘的颜色选择器 这次做一个例子来让大家了解这种控件是怎么做的 首先我们要理解颜色中的hsv的概念 大家可以直接百度h
  • 对话框--QDialog(自定义对话框简单实例)

    dialog h头文件 ifndef DIALOG H define DIALOG H include
  • 【T+】畅捷通T+修改数据精度小数点,提示小数位数只能改大。

    问题描述 使用畅捷通T 软件过程中 修改数据精度过程中 由于误操作 误将数量小数位数改大 并且保存了 但是看软件的说明以及提示 软件提示 数量小数位只能改大 软件说明 建账后位数只能改长不能改短 解决方法 首先 表明自己的立场 如果小数位不
  • 什么是 C# ,什么是 .Net 框架(.Net Framework)及其开发环境(学习心得 1)

    超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从入门到放弃 C 是 Net 框架的一部分 用于编写 Net 应用程序 文章目录 Net 框架 Net Framework C 的集成开发环境 Integrated Development
  • ESP32(MicroPython)四轮差速底盘遥控

    本项目主控改为ESP32 C3 沿用之前的L298N电机驱动 12 6v 18650电池组 LM7805降压模块的方案 电机改用1 19减速比的 使用130mm车轮 主要考虑越野用途 遥控方面 本项目使用HC 14模块 实测连接到电脑可以通
  • 大数据技术与实践学习笔记(1 of 3,from hitwh)

    大数据技术与实践 注意 由于文章图片是通过typora一键上传图片实现 该功能还存在bug 容易导致图片顺序混乱 文章开头提供了原版文章的 pdf 资源下载 推荐下载 pdf 后观看 文章目录 大数据技术与实践 1 1 大数据技术概述 一
  • CSDN文章复制没有图片只有文字

    有朋友反映 复制CSDN页面内容 然后粘贴 结果发现图片没拷过来 只有文字部分 是这样吗 做一个测试 确认这个问题存在 随便找了一个页面 53 岁的我都退休了 但好想跨行当一名程序员 结果收到了 3 份 Offer 相当的励志 人家53岁老
  • 搭建Docker+SRS服务器实现推流拉流的效果

    最初的一个想法 是针对当前的网络电视去的 很多网络电视买回家 还要充很多会员 甚至跌入连环坑 我想给妈妈买一台电视 想把我自己收集的电影电视剧做成一个影视库 通过搭建家庭影院服务器 然后在安卓终端上面点播 最初想得很简单 就是做一个文件服务
  • web中css怎么去除链接的,css中怎么为导航添加超链接

    css中怎么为导航添加超链接 发布时间 2021 07 09 16 43 47 来源 亿速云 阅读 55 作者 Leah 这篇文章将为大家详细讲解有关css中怎么为导航添加超链接 文章内容质量较高 因此小编分享给大家做个参考 希望大家阅读完
  • 自动驾驶通信中间件ecal源码分析—2. Broker vs Brokerless

    前面我们提到ecal是没有中间代理商的 brokerless 那么什么是Broker和Brokerless 1 Message Broker A message broker is software that enables applica