最近公司接了一个项目,要部署在全国300左右个点。项目任务紧做的急,项目的大部分功能已经完成,应客户要求尽快上线,后期留下很多遗留问题,要解决300个点要人为维护的话我想,对任何一个实施人员来说都是一种挑战。考虑到实施过程中的维护费用、操作复杂度和认为操作的不确定性,决定开发一套分离于应用系统的自动升级程序系统,实现系统的自动升级,减少维护成本,降低实施人员的手动操作出错的概率还有减少实施人员的痛苦和昂贵的维护费用。
下面就简单说一下这个程序的网络拓扑图,这个项目是全国部署的,采用的是内部网络。在设计上,更新程序分成了多级部署,成金字塔形状,最上面是总服务器,控制着所有更新程序的版本。采用分级主要是减轻上级服务的压力,同时减轻上级对下级的控制。更新客户端实时心跳通知服务器端,检测网络的畅通,检测达到一定的时间范围内网络任然不通,发邮件和短信消息到指定的网络管理员手机。更新程序包括自己更新自己的功能和更新应用程序的功能(文件、数据库更新),更新程序和应用系统一对一更新操作,放在同一台服务器。如果在这一层的下级还有应用系统和更新客户端,在这一层再起一个更新服务或者单独搞一台更新服务器。
更新服务器的功能:
1.记录下级更新客户的端的应用的版本
2.下级应用的版本管理
3.更改下级更新客户端的更新服务器地址
4.记录更新程序的版本。
5.记录下级应用的更新程序的过程。
更新客户端功能:
1.自动升级应用程序文件
2.操作数据库,备份、DDL、DML
3.升级自身自己程序
4.发送新版本到同级更新服务器
5.支持手动升级(在网络出现问题时,通过介质承载过来的文件手动升级)。
6.如果是WEB应用,对容器的停止、重启、启动操作。
7.心跳功能,主要提供检测网络。