基于rosbridge 与业务系统长链接网关架构设计

技术背景:
业务系统:管理机器人,机器人任务执行等等
机器人使用是ros1 ,业务系统与机器人交互使用rosbridge, rosbridge 就是websocket 链接,所以就有了如下的一些架构思想

架构图

在这里插入图片描述

客户端

客户端主要分为app端、pc端、h5端等。每个端都会与网关维护一条稳定的长连接。当然pc端的多窗口其实是多websocket连接了

ingress

ingress负责七层域名,这里可以是nginx组件也可以是k8s的ingress controller组件。

并且在这一层可以挂载证书,做TLS的加解密,继而将长连接代理到网关去。

这里要注意的是客户端和ingress这一层是wws协议,ingress和ws-gateway是ws协议。

ws-gateway

ws-gateway维护了所有机器人登录后的ws长连接。有如下职责:

  • 尽可能的去承担机器人 的ws长连接。

  • 做机器人 鉴权,解析机器人ID和一些业务ID。

  • 负责将机器人消息分到到下游,将服务端消息通知到在线机器人。

生成socketId,并维护socketId与ws连接的关系。这里的sid在后续的设计中尤为重要。

网关的设计应该是稳定的,无业务的。

ws-api

ws-api是业务系统与网关的媒介。换句话说,它是业务系统与在线机器人沟通的桥梁。

ws-api与网关的信息交互,我们一开始的设计是ws通道,后续切换到了gRPC-Stream。关于这里的思考,大家可以看一些关于gRPC-Stream websocket的文章。

ws-api的职责如下:

负责向在线机器人 通知实时消息的API。

负责维护多个维度的映射关系。

负责消息广播,将一条消息广播到各个gateway的节点上。

负责维护连接的心跳(通过redis key ttl实现)。

负责消息/机器人 连接等指标统计。

负责将在线机器 消息下发到MQ Topic中,由下游的业务系统消费。

ws-api与ws-gateway是打包在一起的,一切业务皆在下游。

MQ

消息中间件,可以是RocketMQ,可以是Kafka,主要是做网关与业务系统的解藕。

至于用什么消息中间件看自己需求,基本上常用的都可以满足,看自己具体的业务需要了

下面我们来一起几个业务流程场景

业务系统推送架流程图

在线机器人消息推送

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/175418.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构第四课 -----线性表之栈

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

keepalived+haproxy配置集群和负载均衡

1、简介 1.1. Keepalived Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备…

旺店通·企业版对接打通金蝶云星空查询调拨单接口与分布式调入单新增接口

旺店通企业版对接打通金蝶云星空查询调拨单接口与分布式调入单新增接口 源系统:旺店通企业版 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化…

通过ping来测试网络带宽

在windows下通过 ping -l 5000 192.168.31.1 其中5000为设置ping的单个包的大小 192.168.31.1为目的地地址 假设ping 5000字节平均耗费1ms而ping 45000字节平均耗费4ms,因此,往返额外花费3ms单程额外花费1.5ms,多发送40000字节即320000比特…

从0到0.01入门 Webpack| 002.精选 Webpack面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

数据结构 | 图

最小生成树算法 Prime算法 算法思路:从已选顶点所关联的未选边中找出权重最小的边,并且生成树不存在环。 其中,已选顶点是构成最小生成树的结点,未选边是不属于生成树中的边。 例子: 第一步: 假设我们从顶…

Webpack Bundle Analyzer包分析器

当我们需要分析打包文件dist里哪些资源可以进一步优化时,就可以使用包分析器插件webpack-bundle-analyzer。NPM上的介绍是使用交互式可缩放树图可视化 webpack 输出文件的大小。 我的是vue2项目。 1、webpack-bundle-analyzer插件的安装 $ npm install --save-dev…

linux中的工程管理工具makefile

makefile文件:Linux上的工程管理工具,可以实现自动化编译; 工程中的源文件不计其数,可以根据模块,功能等存储在不同的目录中; makefile可以提高编译效率,使用make命令每次只会编译那些修改了的或者依赖修改了的这些文件,没有修改的文件不会重新编译. VS底层就有自己的makefile文…

CRM系统对科技企业有哪些帮助

随着国家政策的倾斜和5G等相关基础技术的发展,中国人工智能产业在各方的共同推动下进入爆发式增长阶段,市场发展潜力巨大。CRM客户管理系统作为当下最热门的企业应用,同样市场前景广阔。那么,CRM系统对科技企业有哪些帮助&#xf…

千兆路由只有200M,原来是模式选择不对,也找到了内网不能通过动态域名访问内部服务的原因

本来1000M的宽带接入的,但是一测试发现只有200M,把电信叼了过来, 一测试发现宽带没问题,网线正常,网卡正常,只有可能是路由器的问题了,尴尬了,赶紧给满意好评放他走。回头好好研究一…

在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?

文章目录 前言不过,时过境迁,QVTKOpenGLWidget用的越来越少,官方推荐使用qvtkopengnativewidget代替QVTKOpenGLWidget 前言 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,我们要使用QVTKOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢? 不过,时过境迁,Q…

3.3 Linux 文件管理

1、查看系统信息 tty 命令 描述:查看当前系统在哪个终端语法:tty Linux默认情况下提供6个虚拟终端来让用户登录,系统将F1~F6定义为tty1~tty6。 ctrlalt(F1~F6) :从图形界面切换到命令行界面的第 n 个虚拟终端(F1 是…