宋江
(上海益吉科技有限公司 上海市 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 技術手段,通過對架構進行調整,對業務進行整合,對代碼進行重構等一系列方法和措施提高了系統的性能和可用性,降低了系統不穩定帶來的潛在風險,更好的適應了整車制造業務的發展,為公司創造了更大的價值。