宋江
(上海益吉科技有限公司 上海市 201805)
上汽大众总部位于上海安亭,在南京、仪征、乌鲁木齐、宁波、长沙等地建立了整车生产基地,日生产整车6000 余辆。车辆合格证是汽车最重要的凭证之一,不仅证明该车辆符合国家对机动车装备质量及有关标准的要求,同时也是用户缴纳车辆购置税和上牌的必备证件,合格证在整车下线检测合格后实时打印。
合格证打印系统宏观上分为两个阶段:一阶段为单证集中打印模式;二阶段为分散打印模式。一阶段的集中打印模式阶段存在系统响应慢、潜在风险高、稳定性差等隐患,因此进行了第二阶段的优化和升级。
合格证打印系统在总装车间使用,实现车辆合格证、一致性证书和首保卡的打印,同时还具备部分生产控制的功能。系统主要业务流程如下:
(1)从主数据系统同步相关主数据,主要包括:车型、企标、一致性企标等。
(2)从排产系统导入订单数据,主要包括车型、车身颜色(外色)、内饰、排量、变速箱型号、轮毂尺寸、个性化选装包配置等信息。
(3)通过数据库联邦查询订单车辆在MES 中的过点信息及其他数据,用来判断当前车辆的最新过点状态。
(4)通过基于UDP 协议的消息中间件进行实时通信,获取车辆过点状态,判断车辆数据的业务完整性,对异常数据进行报警,从而对生产进行监控。
(5)在车辆到达不同位置(M1、ZP7、ZP8)是完成自定义的业务处理逻辑。
(6)车辆下线后,将所有的过程数据及三证(首保卡、一致性证书、合格证)数据同步到归档系统,生产库中的数据保留70 天,归档库中的数据永久保存。
(7)本系统提供多维度的车辆信息监控功能,同时提供多维护(按时间、车型、颜色、型号)的生产报表查询统计功能。
系统采用Java 语言开发,主要分为主数据同步、订单导入、订单清理、网页Web 模块、客户端窗体、后台业务处理服务、归档程序等七个业务模块,各模块的关系图如图1 所示。
各模块的功能介绍如下:
图1
图2
(1)订单导入模块:解析排产系统过来的文本订单数据,并导入系统。
(2)主数据同步模块:从主数据系统同步车型、企标、一致性企标等业务数据。
(3)订单清理模块:生产数据库中只保存70 天内的数据,超过70 天的数据同步到归档库后进行清理。
(4)归档模块:生产完成的所有车辆电子数据同步到归档系统。
(5)网页Web 模块:主要负责主数据、用户角色、权限、统计报表等查询和维护功能。
(6)客户端窗体程序:负责过点车辆的信息展示、三证(首保卡、一致性证书、合格证)的补打、重打、过点数据统计功能。
图3
图4
(7)后台业务处理服务:负责所有的后台业务逻辑处理和计算,为网页Web 模块、客户端提供服务接口。
各模块使用的技术如下:
(1)后台业务处理服务及Web 网页模块的程序采用Java 语言开发,版本为1.5,基于Struts1.2 框架开发。
(2)客户端窗体程序使用了IBM WMC 技术,是基于 Eclipse 架构进行扩展的一种组件开发。
(3)权限模块使用了LDAP,系统的角色、权限、用户、客户端IP 等信息均存储在LDAP 上。
(4)后台应用服务器使用了WAS,它是IBM WebSphere 软件平台的一个应用组件,主要用来作为应用服务器。
(5)集中打印服务器的程序使用Visual Studio 2008 开发。统一接收单证打印请求,并将单证打印到现场客户端的打印机上。
(6)数据库使用了DB2 9.7 的版本,因为要和MES 保持一致。一期项目的系统部署图如图2 所示。
各工厂的后台服务器共享一套环境,初期只有一两家工厂使用时,这种架构可以满足要求,但后期随着异地工厂不断增多,产能要求不断提高,客户端越来越多,这个架构的问题就逐渐凸显出来了,主要表现在以下几个方面:
2.2.1 集中打印服务器的单点问题
(1)所有打印机的打印任务均由集中打印服务器统一分发,因此集中打印服务器存在单点故障风险,虽然打印服务器有了НA(高可用),但仍有潜在风险,随着连接的打印机越来越多,风险也随之越来越大。
(2)打印服务器上的打印程序更新时,所有工厂需要一起协调停机时间窗口,沟通和管理的成本较大。
(3)产量越来越高,打印任务越来越多,导致服务器的响应速度越来越慢,跟不上工厂的生产节拍。
2.2.2 后台业务服务器的单点问题
(1)后台业务服务器也存在单点故障的风险,服务器故障会导致所有工厂的总装车间停产停线。
(2)应用系统升级时需要协调所有工厂的停机时间,沟通成本比较大。
(3)各工厂的后台业务处理逻辑一致,不利于各工厂个性化业务的发展。
2.2.3 应用系统的软件架构老旧,带来运维困难,需要进行升级
(1)软件应用程序的Java 版本仍然在使用JDK1.5。
(2)客户端使用的IBM WMC,同样技术比较落后,入门难度大,给项目开发和运维带来很大的困难。
(3)订单导入、订单清理、归档等小的业务模块比较多,同时使用.NET Framewok2.0 开发,源码版本比较老,兼容性也比较差,运维起来比较困难,不利于业务更新。
(4)软件程序已经运维了很多年,增加的临时性代码逻辑比较多,出现了很多冗余代码,系统的运行效率大大降低。也增加了系统变更、升级和运维的复杂性。
2.2.4 使用IBM 的应用服务器WAS,学习成本高,经济成本高
(1)WAS 的模块和功能比较多,本系统只用到了其中很小一部分。
(2)WAS 学习、运维的门槛比较高,给项目团队、运维人员都带来不小的挑战。
(3)WAS 是商业软件,存在许可证的费用支出。
总体来讲,性价比不高。
2.2.5 应用使用LDAP 来做用户和权限管理太复杂
(1)部署需要安装LDAP,增加了软件架构的逻辑复杂性。
(2)通过数据库管理用户、角色、权限的关系已经是主流,因此LDAP 不再适合。
以上这些问题,给系统升级、环境搭建、运维管理等诸多环节带来很多的困扰,同时也存在一定的潜在隐患。因此,已经不再适应当前多工厂的生产环境需要,于是就有了二期的改造方案。
优化后的系统仍主要使用Java 语言,将订单导入、订单归档、订单清理和主数据同步四个模块合并到Web 网页模块,因此新的系统架构主要分为Web 网页模块、客户端窗体程序、后台业务处理服务三个业务模块,业务关系图如图3 所示。
根据新的架构,各工厂的环境独立部署,每个工厂一套硬件环境,新的服务器和客户端部署情况如图4 所示。
(1) 业务服务器有两台:一台应用服务器(APP),一台数据库服务器(DB),两台机器互为高可用(НA)。
(2)取消了集中打印服务器。
针对一期系统中软件、代码、技术架构等方面的问题,我们在业务和系统架构方面做了如下优化:
3.2.1 单证集中打印调整为分散打印
业务逻辑:由客户端负责打印数据的处理和准备,直接调用本地打印机完成单证的打印,再把打印结果回传给服务端。
调整后的优势体现在:
(1)由客户端处理相关业务逻辑,缓解了服务端的压力。
(2)由客户端直接调用打印机,不再由后台处理,减少了网络开销,提高了处理的效率。
(3)解决了后台集中打印服务器的单点问题,降低了系统风险。
(4)取消集中打印服务器,降低了硬件投入成本。
调整后,单台车辆单证打印的处理时间降低到30 秒左右,比调整前效率提升了40%,打印服务器的单点故障隐患彻底解决。
3.2.2 后台服务器每个工厂独立部署
架构:后台的业务服务器和数据库服务器各工厂独立部署。
调整后的优势体现在:
(1)各工厂拥有独立的服务器,性能有了极大的提升,响应更快。
(2)各工厂可以做更多个性化的功能和配置,有利于业务的发展。
(3)各工厂可独立的发布和更新,不再为协调停机时间而耗费大量的管理成本。
调整后,各工厂的业务可独立发展,不再相互制约,业务配置管理、系统的发布更新更加灵活,更好的适应了公司业务的发展。
3.2.3 软件程序升级、代码重构
主要体现在以下几个方面:
(1)Java 的版本由1.5 升级到1.8。
(2).NET Framework 的版本由3.5 升级到了4.5,开发环境由VS2008 升级到VS2015。
(3)放弃了原来由IBM WMC 开发的客户端,改为由C#开发的窗体程序。
(4)将主数据同步、订单导入、清单清理、数据归档四个服务合并到网页模块。
(5)对后台业务逻辑、Web 网页的代码进行了重构和优化,去除了大约60%的代码。
(6)在研发/运维的版本管理方面借鉴了成熟产品的管理经验,借助Git 仓库,项目和运维的源码分开管理,形成了一套适合自己的管理规范。
通过对框架升级和代码重构整合,使整个软件架构更加简洁,代码执行效率更高,运维更加方便。
3.2.4 应用服务器调整为Tomcat
调整后的优势体现在:
(1)Tomcat 更加轻量级,启动更快,20 秒即可启动完成。
(2)应用的安装、启停更加快捷。
(3)Tomcat 更容易上手,降低了学习和运维的成本。
经过一个月的试运行,性能完全满足生产的要求。
3.2.5 权限管理使用数据库实现
主要调整内容:
(1)不再使用LDAP,改由数据库存储相关业务数据。
(2)通过人员-角色-权限的关系来管理权限数据,逻辑更简单。
(3)取消原来基于WAS+LDAP 实现的单点登录功能。
取消LDAP 存储,改由数据库存储权限数据,架构更简单,可扩展性也更好。
经过架构、应用程序、技术等几方面的调整后,新系统各方面的效果还是比较显著的,主要体现在以下几个方面:
(1)整体的性能有所提升:服务器及客户端的处理能力得到了提高,单台车辆的数据处理时间由原来的大约50 秒减少到目前的30 秒,同比减少40%,可以适应更高的生产节拍。
(2)系统的逻辑架构更加简洁:由原来的七模块减少到三模块,业务更清晰。
(3)解决了服务器的单点问题:降低了系统风险,提高了系统的可用性和稳定性。
(4)对业务代码进行重构:总代码量减少了50%,效率有了大幅提升,应用的稳定性、可扩展性得到了提升。
(5)使用更加轻量级的Tomcat 替代WAS,没有降低性能的情况下,降低了经济成本,间接提升了效益。
在上汽大众合格证打印系统项目升级改造的过程中,我们运用了新的分析方法、新的IT 技术手段,通过对架构进行调整,对业务进行整合,对代码进行重构等一系列方法和措施提高了系统的性能和可用性,降低了系统不稳定带来的潜在风险,更好的适应了整车制造业务的发展,为公司创造了更大的价值。