V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cosmain
V2EX  ›  程序员

关于自动升级和更新

  •  
  •   cosmain · 8 小时 31 分钟前 · 867 次点击

    我们公司接了一个 IoT 项目,有不少终端( linux ),目前我们的程序要部署到这些终端上去。

    由于我以前没有这方面的经验,现在要开发一个自动更新功能,定期更新终端上项目的二进制文件和配置文件并重启应用,

    问题:

    1. 有什么现成的好用的框架或者组件没有?(终端性能弱,不太可能安装大的框架或者组建)
    2. 有什么好的思路没有? 比如要思考更新服务器的 ip 变动,保持终端不失联等。

    PS: 再顺便求一个 linux 下 c/c++写等简单的内网穿透工具,平时调试用,要简单,小巧(排除 golang),实现内网设备端口能映射到远端服务器。

    8 条回复    2025-01-22 18:38:34 +08:00
    Meld
        1
    Meld  
       8 小时 27 分钟前
    终端联网吗?
    Meld
        2
    Meld  
       8 小时 26 分钟前
    @Meld 二进制的话,脚本从 cdn 上拉就行了吧
    kuanat
        3
    kuanat  
       8 小时 15 分钟前
    部署和配置更新可以考虑 ansible ,中心式管理没有更简单的了,有 ssh 就行,没有性能需求。

    ip 变动的话一般要靠设备主动汇报,一般负责心跳的模块顺便就做了。我这里之前用的方案是 ansible inventory 是通过外部接口调取的。
    tool2dx
        4
    tool2dx  
       8 小时 2 分钟前
    仅仅是调试的话,用 ssh 自带的隧道功能,可以重定向 tcp 。

    如果长期使用,还是推荐 frp ,老版本的 frp 也没你想的那么大,挺稳定的。新版本体积比较大。
    cosmain
        5
    cosmain  
    OP
       7 小时 10 分钟前
    @tool2dx
    主要很多时候,golang 的程序都慢慢会内存爆炸,这在物联网设备上无法容忍。
    tool2dx
        6
    tool2dx  
       7 小时 6 分钟前
    @cosmain 我监测过 frp 的内存占用,目测挺低的。你说内存爆炸,估计写法有问题,有内存泄漏。

    我是在很低端的 openwrt 上用的,基本上 32M rom + 64M ram 这种级别,和你物联网也差不多了。
    KeysPAN
        7
    KeysPAN  
       6 小时 3 分钟前
    是 IOT 设备的话那直接在你们服务器布个 mqtt 服务啊,只要你们服务器地址不会变动,那就一直保持订阅就好了,然后你的终端是客户端的,甚至还能上报参数统计啥的。有更新服务器就下发一个 json 附带文件 url 就行了,其他的 gpt 写就好了,甚至全部都可以。纯 c/c++,linux 自带的库估计都够用了
    deepshe
        8
    deepshe  
       5 小时 22 分钟前
    服务器变更 ip 的话,设备可以存新旧两个服务器 ip 地址,变更后如果连不上新服务器,就回退到连接老服务器上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2390 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:01 · PVG 00:01 · LAX 08:01 · JFK 11:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.