寻找一个 Java 应用本地更新方案

2022-04-01 11:55:16 +08:00
 zhongjun96

公司采用工控机整机交付客户。机器上运行 jar 包+Mysql 数据库+web 应用。机器能访问外网。 如何更新这些应用? 目前考虑采用 shell 更新。更新 jar->更新数据库结构->启用 jar->更新 web 。 但是万一 jar 更新失败或者启动失败,需要回滚数据库及 web 。也无法保证回滚成功。 对这种问题,市面上有什么现成的解决方案吗?

2031 次点击
所在节点    程序员
22 条回复
qfdk
2022-04-01 14:15:29 +08:00
哈哈哈 shell 更新….
letitbesqzr
2022-04-01 14:50:23 +08:00
打包成 docker ,方案就比较多了..
wxy1991
2022-04-01 16:04:43 +08:00
你们公司没有测试吗。。。
chengyiqun
2022-04-01 17:31:27 +08:00
没有测试环境?
LoNeFong
2022-04-01 18:20:17 +08:00
准备数据库 up down 脚本 出问题好及时回滚
工控机安装 docker 也不现实 看来只能 scp 了
zhongjun96
2022-04-01 18:32:19 +08:00
@wxy1991 测试归测试啊,毕竟机器不在我们这边,啥情况都有可能。肯定要考虑启动失败的情况
zhongjun96
2022-04-01 18:33:15 +08:00
@LoNeFong scp 也不太可能,没有公网 ip ,也不允许外网映射。所以只能程序自己检测并自动更新
tuboshuv1
2022-04-01 21:21:47 +08:00
其实保证数据库更新不出错就可以了。应用开始更新的时候,就给中央服务器发通知,执行状态什么的。然后每走一步就仔细校验,错了立马暂停。这种情况的更新不可能没人值守的
anyele
2022-04-01 23:56:14 +08:00
难点是数据库更新, 要保留回滚的措施
night98
2022-04-02 01:14:01 +08:00
linux cron 每天晚上 3 点定期拉取 docker hub latest 镜像并重启,java 服务打包成 docker 镜像,内置一下 flyway ,最好买个 flyway 的授权
zhongjun96
2022-04-02 09:12:12 +08:00
@night98 工控机不能装 docker 。内存不够。
zzh7982
2022-04-02 10:02:11 +08:00
@zhongjun96 内存不够那为啥用 java 不用 go 呢
zhongjun96
2022-04-02 10:17:49 +08:00
@zzh7982 因为我不会 go
zzh7982
2022-04-02 11:09:31 +08:00
@zhongjun96 学啊
zzh7982
2022-04-02 11:10:23 +08:00
@zhongjun96 好像你 java 多会一样( dog
aptupdate
2022-04-02 11:32:18 +08:00
机器多大内存? docker 自身不会占用很多内存的。
gitdoit
2022-04-02 11:37:06 +08:00
别更表了, 直接建新库, 在新库上更新表结构,同步数据; 执行成功了 把数据源切过去
sky857412
2022-04-02 12:02:19 +08:00
你需要再写一个监控程序,负责更新。监控程序,集成 web shell 的功能,让客户再给你们开个跳板机,做运维。这样虽然麻烦一点,但是靠谱一点
AItsuki
2022-04-02 12:56:23 +08:00
建议还是上 Docker ,并且用 compose 配置,占不了多少内存的,java 你可以选择使用 openj9 版本。
zhongjun96
2022-04-02 14:11:02 +08:00
@aptupdate 只有 4G 。还要装 mysql ,nginx

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844288

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX