项目有一需求,要求在多机互联时,A\B\C多台上位机可以互相访问。每台上位机又要负责本机实时数据采集。而多机互访,主要解决远程操作对方主机的问题。
目前尝试采用mqttnet方案进行实现,具体如下:
1.工控上位机有两个网卡,分别连接内网与外网。
2.mqttnet服务部署在每台上位机的内网(192.*),既是服务端,也是订阅其他的上位机主题的客户端。
用以上方式 ,A做为服务端,已经可订阅到B的主题。但这种方式纯属个人所想,不知方案是否合理,有没有更好的方案推荐呢?
您的方案使用MQTT作为通信协议,并在每台上位机上部署了mqttnet服务。这种方式在实现多机互访和实时数据采集方面是可行的,但也存在一些其他的选择和注意事项,下面是一些建议:
MQTT方案:MQTT是一种轻量级的消息传输协议,适用于物联网和实时通信场景。它具有低延迟、可靠性高、支持发布/订阅模式等特点,非常适合您的需求。您可以继续使用MQTT方案,并根据实际情况进行性能和安全性的调优。
考虑安全性:由于您的上位机在内网和外网之间进行通信,确保通信的安全性非常重要。您可以使用TLS/SSL加密来保护MQTT通信,确保数据的机密性和完整性。另外,您还可以考虑使用认证机制,如用户名/密码或者证书,对连接进行身份验证。
分布式架构:如果您的需求涉及到大规模的多机互联和实时数据采集,考虑采用分布式架构可以提高系统的可伸缩性和性能。您可以将消息中间件(如MQTT代理)部署在独立的服务器上,而不是每台上位机上都部署,从而降低单个上位机的负载。
其他通信协议:除了MQTT,还有其他通信协议可以满足您的需求。例如,可以考虑使用WebSocket、RPC(远程过程调用)等协议。根据实际情况和具体要求,选择适合的通信协议。
网络拓扑和路由设置:在配置网络拓扑和路由时,确保内网和外网之间的连接畅通,并进行正确的端口映射和防火墙配置,以便实现多机互访。
总体来说,您的MQTT方案在实现多机互访和实时数据采集方面是可行的。然而,具体的方案选择还需要根据实际需求、性能要求和安全性等因素进行综合评估。建议您根据实际情况进行测试和验证,并根据反馈结果进行调整和优化。
想复杂了,一台服务器即可
如果都能访问外网,就直接用外网服务器
如果只能一台访问外网,那就这台当服务器进行代理转发
mqtt通过topic进行通信。
相关解释:
那么如果每台机器有自己的一个标识,比如我想对A通讯,那么我直接写个topic就行
"iot/{A的标识}/command"
A自己只需订阅 "iot/{A的标识}/#" 即可
你看到了,只要一个服务器即可,大家只连这个服务器。
至于群集把,这个也有,不过目的不是你的目的,他的目的是解决大并发,一台不够提供服务用多台同时提供服务
支持多对多的消息发布和订阅