Skip to content

客户端自动更新(终端程序自动比对与下载)

终端上跑的不只是操作系统,还有客户端程序自己和跟着它走的一批文件(驱动、辅助程序等)。这部分东西也要升级,偏偏不在「更新镜像」的常规流程里。

没有这条通道时,升一版客户端程序只有两条路:重新开更新、改镜像、再下发一轮(为几个文件让全机房重下一遍),或者一台台跑到现场替换。几百台机器碰上一次小修正就是一晚上的活。

客户端自动更新把这件事收成一句话:更新文件放到服务器上,终端自己按校验值比对,缺什么、不一致什么就下什么。

三条基本事实

  • 全自动。 管理台里没有这个功能的页面,也没有「立即检查更新」按钮,终端自己定时去问。
  • 比的是文件校验值,不是版本号大小。 服务器上放的是哪一份,终端就对齐成哪一份。
  • 它只负责把文件送到位,不负责让新程序立刻跑起来(见第四节)。

一、在哪里(管理台里没有这个页面)

这块功能分两头,都不在控制台菜单里:

两头做什么
服务端:更新目录更新文件按「操作系统 + CPU 架构」分子目录存放。服务端定时扫描这个目录,把里面的文件整理成一份清单(相对路径、大小、校验值),终端来问就给它
终端:客户端程序自己客户端启动、拿到引导服务器信息之后自己去要清单,比对、下载、替换,全程无人操作

更新目录的实际位置以实机部署为准

更新目录在服务端哪个位置、子目录具体叫什么名字,随部署方式与配置而定,本页不写死,请以现场实际部署为准或向服务提供方索取。

二、怎么用

1,向服务提供方取得对应平台与架构的更新文件。

2,放进服务端更新目录里该平台该架构的子目录。可以带子目录层级,子目录里的文件会一并进清单,终端按同样的相对位置落地。

3,等服务端下一轮扫描刷新清单(默认约 1 分钟一轮)。放进去不是立刻就能被终端拿到。

4,终端到点自动检查:逐个文件比对本地校验值,本地没有的、校验值不一致的才下载;全都一致就什么也不做。

5,下载先落到临时位置,逐个复核校验值;全部通过才替换到客户端程序所在目录。任何一个文件复核不过,本轮整批都不安装,等下一轮重来。

6,替换完成。若换掉的是客户端主程序本身,运行中的仍是旧那份,下次终端重启才真正换上。

放进更新目录的文件会原样下发

这条通道不校验文件来源——校验值只保证「终端下到的和服务器上的一模一样」,不证明这份文件该不该装。放进去的东西会下发到终端并覆盖同名文件,请只放服务提供方给的更新包

三、参数与默认值

默认值说明
服务端目录扫描开启关掉后清单不再刷新,终端拿到的一直是旧清单
服务启动时立即全量扫描关闭默认不在启动时扫,等下面那个延迟到点再扫
服务启动后首次扫描延迟约 2 分钟这段时间内终端来问,可能拿到一份空清单
之后每轮扫描间隔约 1 分钟上一轮跑完再计时
终端检查间隔约 1 小时客户端拿到引导服务器信息后先查一次,之后每小时一次
检查失败后重试约 1 分钟服务器不可达、清单取不到时;只记日志,不影响终端正常使用
校验方式逐文件 MD5服务端清单里给出,终端下完再复核一次
文件落地位置客户端程序所在目录清单里的相对路径原样保留

前四项由服务端配置控制

扫描开关与三个时间都是服务端配置项、可以调整,上表给的是产品默认值,要改请联系服务提供方。终端侧的检查间隔按终端程序版本而定,老版本客户端的节奏可能与上表不同。

四、边界与坑

只增不删。 清单里没有的文件不会被删掉。从更新目录里删掉一个文件,只是「以后不再下发」,终端上已有的那一份还在原地。

只比一致,不比新旧。 这条通道做的是「和服务器上那份对齐」,不是「比较版本号谁新」。把旧文件放上去,终端照样下下来覆盖成旧的。这既是回滚的做法,也意味着误放一个旧包就是全网降级。

架构对不上等于静默无更新。 终端只取跟它自己上报的「操作系统 + 架构」完全对上的那一份。对不上时它拿到的是空清单,表现为「一切正常、没有可更新的内容」,不报错、也没有任何提示。多架构混跑的现场(信创各平台、32 位与 64 位并存)务必核对子目录名与终端实际上报的架构串,这一步建议找服务提供方确认。

覆盖了文件但修改时间没变,等于没换。 服务端靠修改时间判断文件有没有变化,覆盖后修改时间与原来完全一致的,会被当成没变化,清单里留的还是旧校验值。

替换不等于生效。 换掉客户端主程序时要等终端下次重启。另外:Linux 下若被替换的是另一个正在运行的组件,会先强制结束该进程再换;Windows 下若目标文件正被占用,改走「旧文件改名、新文件顶上」,目录里可能因此留下一份改了名的旧文件。

落地的文件能不能留下来,取决于访问模式。 文件是写进客户机系统里的,还原模式下按该模式的既有规则处理(见 如何修改访问模式)。要让新版本长期固化在镜像里,仍要走更新镜像的标准流程。

终端要能连到引导服务器。 清单与文件是终端向它登录的那台引导服务器要的,不经过管理台。网络或端口不通时检查就会失败,只在终端本地日志留一条告警。多台引导服务器的现场,各台都要有同一份更新文件,具体以实机部署为准。

全程没有台账。 终端界面上不提示「正在更新」,管理台里也没有进度、结果和历史。要确认某台到底更新过没有,只能看那台终端本地的客户端日志。

五、配套阅读