客户端自动更新(终端程序自动比对与下载)
终端上跑的不只是操作系统,还有客户端程序自己和跟着它走的一批文件(驱动、辅助程序等)。这部分东西也要升级,偏偏不在「更新镜像」的常规流程里。
没有这条通道时,升一版客户端程序只有两条路:重新开更新、改镜像、再下发一轮(为几个文件让全机房重下一遍),或者一台台跑到现场替换。几百台机器碰上一次小修正就是一晚上的活。
客户端自动更新把这件事收成一句话:更新文件放到服务器上,终端自己按校验值比对,缺什么、不一致什么就下什么。
三条基本事实
- 全自动。 管理台里没有这个功能的页面,也没有「立即检查更新」按钮,终端自己定时去问。
- 比的是文件校验值,不是版本号大小。 服务器上放的是哪一份,终端就对齐成哪一份。
- 它只负责把文件送到位,不负责让新程序立刻跑起来(见第四节)。
一、在哪里(管理台里没有这个页面)
这块功能分两头,都不在控制台菜单里:
| 两头 | 做什么 |
|---|---|
| 服务端:更新目录 | 更新文件按「操作系统 + CPU 架构」分子目录存放。服务端定时扫描这个目录,把里面的文件整理成一份清单(相对路径、大小、校验值),终端来问就给它 |
| 终端:客户端程序自己 | 客户端启动、拿到引导服务器信息之后自己去要清单,比对、下载、替换,全程无人操作 |
更新目录的实际位置以实机部署为准
更新目录在服务端哪个位置、子目录具体叫什么名字,随部署方式与配置而定,本页不写死,请以现场实际部署为准或向服务提供方索取。
二、怎么用
1,向服务提供方取得对应平台与架构的更新文件。
2,放进服务端更新目录里该平台该架构的子目录。可以带子目录层级,子目录里的文件会一并进清单,终端按同样的相对位置落地。
3,等服务端下一轮扫描刷新清单(默认约 1 分钟一轮)。放进去不是立刻就能被终端拿到。
4,终端到点自动检查:逐个文件比对本地校验值,本地没有的、校验值不一致的才下载;全都一致就什么也不做。
5,下载先落到临时位置,逐个复核校验值;全部通过才替换到客户端程序所在目录。任何一个文件复核不过,本轮整批都不安装,等下一轮重来。
6,替换完成。若换掉的是客户端主程序本身,运行中的仍是旧那份,下次终端重启才真正换上。
放进更新目录的文件会原样下发
这条通道不校验文件来源——校验值只保证「终端下到的和服务器上的一模一样」,不证明这份文件该不该装。放进去的东西会下发到终端并覆盖同名文件,请只放服务提供方给的更新包。
三、参数与默认值
| 项 | 默认值 | 说明 |
|---|---|---|
| 服务端目录扫描 | 开启 | 关掉后清单不再刷新,终端拿到的一直是旧清单 |
| 服务启动时立即全量扫描 | 关闭 | 默认不在启动时扫,等下面那个延迟到点再扫 |
| 服务启动后首次扫描延迟 | 约 2 分钟 | 这段时间内终端来问,可能拿到一份空清单 |
| 之后每轮扫描间隔 | 约 1 分钟 | 上一轮跑完再计时 |
| 终端检查间隔 | 约 1 小时 | 客户端拿到引导服务器信息后先查一次,之后每小时一次 |
| 检查失败后重试 | 约 1 分钟 | 服务器不可达、清单取不到时;只记日志,不影响终端正常使用 |
| 校验方式 | 逐文件 MD5 | 服务端清单里给出,终端下完再复核一次 |
| 文件落地位置 | 客户端程序所在目录 | 清单里的相对路径原样保留 |
前四项由服务端配置控制
扫描开关与三个时间都是服务端配置项、可以调整,上表给的是产品默认值,要改请联系服务提供方。终端侧的检查间隔按终端程序版本而定,老版本客户端的节奏可能与上表不同。
四、边界与坑
只增不删。 清单里没有的文件不会被删掉。从更新目录里删掉一个文件,只是「以后不再下发」,终端上已有的那一份还在原地。
只比一致,不比新旧。 这条通道做的是「和服务器上那份对齐」,不是「比较版本号谁新」。把旧文件放上去,终端照样下下来覆盖成旧的。这既是回滚的做法,也意味着误放一个旧包就是全网降级。
架构对不上等于静默无更新。 终端只取跟它自己上报的「操作系统 + 架构」完全对上的那一份。对不上时它拿到的是空清单,表现为「一切正常、没有可更新的内容」,不报错、也没有任何提示。多架构混跑的现场(信创各平台、32 位与 64 位并存)务必核对子目录名与终端实际上报的架构串,这一步建议找服务提供方确认。
覆盖了文件但修改时间没变,等于没换。 服务端靠修改时间判断文件有没有变化,覆盖后修改时间与原来完全一致的,会被当成没变化,清单里留的还是旧校验值。
替换不等于生效。 换掉客户端主程序时要等终端下次重启。另外:Linux 下若被替换的是另一个正在运行的组件,会先强制结束该进程再换;Windows 下若目标文件正被占用,改走「旧文件改名、新文件顶上」,目录里可能因此留下一份改了名的旧文件。
落地的文件能不能留下来,取决于访问模式。 文件是写进客户机系统里的,还原模式下按该模式的既有规则处理(见 如何修改访问模式)。要让新版本长期固化在镜像里,仍要走更新镜像的标准流程。
终端要能连到引导服务器。 清单与文件是终端向它登录的那台引导服务器要的,不经过管理台。网络或端口不通时检查就会失败,只在终端本地日志留一条告警。多台引导服务器的现场,各台都要有同一份更新文件,具体以实机部署为准。
全程没有台账。 终端界面上不提示「正在更新」,管理台里也没有进度、结果和历史。要确认某台到底更新过没有,只能看那台终端本地的客户端日志。
五、配套阅读
- 如何更新数据:Windows 客户端 —— 更新镜像里的内容,与本页的客户端程序更新不是一回事
- 如何更新数据:Linux 客户端(含信创客户端)
- 如何修改访问模式 —— 决定落地的文件重启后还在不在
- 信创(非 x86)系统的上传与部署 —— 多架构现场的平台口径
- 服务器排障:端口检测 · 磁盘测速 · 日志开关
- 终端起不来或卡在「正在启动」怎么排查