ssh内网穿透管理平台(源码符合c++11标准)

内网穿透集群技术

场景分析

在嵌入式设备中,代码需要升级,部署环境差异化比较多的情况,会出现在实验室中没有观察到的现象。
这个即使异常情况。出现异常有两种解决方案:

  • 第一现场排查,适用于问题非常严重时。
  • 第二,设备返厂维护。
  • 第三,通过远程操作解决问题。

上述三种方案中,第三者方案是最成本最低,速度最快的方法。对于嵌入式Linux系统来说,可以通过ssh
去登陆到目标设备。那么又由大多数嵌入式设备,是部署在内网环境中的,所以需要内网穿透技术。

特点

通过ssh登陆设备,是偶发性需求,大多数时间,是不需要这样做的。因此需要的是松散、临时性的、非实时的网络拓扑结构
临时性,意味着可以动态申请资源,也就是资源复用。

模型分类

  • A方案:使用ssh协议转换,在服务节点将长连接的数据转换成ssh数据。
  • B方案:使用辅助协同协议,临时申请一个端口给ssh连接使用。

本文描述的方案,即是B方案。

模式设计

通过ASMQ服务实现大量设备无耦合连接。使用daemon进程解析协议,触发ssh临时通道的建立。 下面以frp为例。

ASMQ选取

主要mq指标对比:

管理平台需要的指标:
管理平台对嵌入式设备的控制,不是硬件(如马达,流水线,机械臂)这里实时性要求极高的场景,而是ssh这种,只需要
最终结果可用的非实时性消息传递机制。因此ms级的响应时间是够用的。
在RocketMQ和kafka之间选择。 java语言相对是一种比较普遍的开发语言,在性能差不多的情况下,RocketMQ具备回溯机制
,也就是有更高的可控性/可靠性。因此在这四种ASMQ种,可以选择RocketMQ作为消息中间件,来构建设备管理平台。

在实际工作中,如果是已经出货很多的设备,java部署和环境配置比较麻烦。这里推荐一个c 版本写的消息队列组件:zeromq。有java、c++、python版本。

c++版本调试通过的demo

基于本设计模型的源码实现 github 下载链接.

发布了61 篇原创文章 · 获赞 63 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/jacky128256/article/details/103387793