V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HHAO2019
V2EX  ›  物联网

物联网的技术方案都有哪些?刚入行

  •  
  •   HHAO2019 · 2022-03-16 13:54:44 +08:00 · 2293 次点击
    这是一个创建于 975 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们目前设备不多。数据流程如下:

    • 1 硬件设备使用 485 线连接通讯设备(DTU),使用 4G 网络传输数据
    • 2 通讯设备吧数据传输到 EMQX
    • 3 Java 程序订阅 EMQX 主题,接受 16 进制数据,并做解析 /告警校验等,录入 Influxdb

    遇到的问题是:java 程序挂掉,数据就丢失了,这里如何做高可用?

    第 1 条附言  ·  2022-03-18 14:28:17 +08:00
    仔细看了一下 emqx 的文档,使用规则引擎把数据通过 http 请求接口的形式解决了 java 客户端订阅总是断开的问题。
    13 条回复    2023-12-08 13:43:41 +08:00
    villivateur
        1
    villivateur  
       2022-03-16 13:59:38 +08:00 via Android
    你不如去解决下为什么 Java 会挂掉。

    另外物联网设备自己可以在本地做缓存
    cat007
        2
    cat007  
       2022-03-16 14:01:04 +08:00
    做高可用就不会挂掉了
    HHAO2019
        3
    HHAO2019  
    OP
       2022-03-16 14:11:05 +08:00
    @villivateur java 用的库是这个 Eclipse Paho Java Client ,经常 mqtt 断连 。重连机制一直在调试,最近几天好点了
    HHAO2019
        4
    HHAO2019  
    OP
       2022-03-16 14:14:48 +08:00
    @villivateur 我看挺多同行都自己研发了个通讯管理机做边缘计算,感觉那样会更稳
    HHAO2019
        5
    HHAO2019  
    OP
       2022-03-16 14:44:56 +08:00
    @cat007 主要是 java 服务订阅一个主题,如果订阅连接断了,重连也失败了,如何做高可用?我试过 system.exit 然后触发 docker 重启。
    mlhorizon
        6
    mlhorizon  
       2022-03-16 15:23:05 +08:00
    高可用就是不让这个程序挂掉。
    物联网设备本地缓存一般只对断网情况做缓存,它是没法知道数据消费者挂掉的。
    HHAO2019
        7
    HHAO2019  
    OP
       2022-03-16 16:09:11 +08:00
    @mlhorizon 是的 ,我可能说错了,我的意思是如何让消费者的连接断了能快速回复。或者我目前做的是不是错的方法?在物联网行业中如何保证录入数据的高可用性?
    cat007
        8
    cat007  
       2022-03-16 18:37:36 +08:00
    @HHAO2019 应该解决订阅为什么会断掉吧,如:网络不稳定、被别的客户端挤下线了
    paradoxs
        9
    paradoxs  
       2022-03-16 19:01:40 +08:00
    呵呵,既然你的 java 程序经常要挂,那我推荐你把 Influxdb 的数据持久化。
    HHAO2019
        10
    HHAO2019  
    OP
       2022-03-16 19:04:38 +08:00
    @paradoxs java 程序做解析,然后就直接 influxdb 持久化了。 我说错了,不是程序挂了,是订阅 emqx 的连接挂了,不好意思。我也不知道业内的逻辑是怎么样的,所以上来问问看我目前做的是不是有更好的解决方案
    paradoxs
        11
    paradoxs  
       2022-03-16 19:39:44 +08:00   ❤️ 1
    打开 emq 后台,找到插件,然后把 emqx_web_hook EMQ X WebHook Plugin 这个打开。

    vim etc/plugins/emqx_web_hook.conf , 把里面的链接换成你 java 程序监听的地址。

    重启一下 emqx ,然后在 java 里面就可以监听到断链的消息。

    后面再操作一下重新链接
    IfEles
        12
    IfEles  
       2022-04-07 22:58:55 +08:00   ❤️ 1
    @HHAO2019 mqtt 断开,有几种可能,你设备端的 clientId 重复,还有可能是你的 java 程序消费没有生产的速度快,导致 mq 队列积压阻塞,然后 mqtt 会断开,你可以排查一下程序经常断开的原因
    yzqdm
        13
    yzqdm  
       343 天前
    请教一下监控设备上下线有什么方案吗,设备掉线推送这种的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5425 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:37 · PVG 16:37 · LAX 00:37 · JFK 03:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.