宋江
(上海益吉科技有限公司 上海市 201805)
上汽大眾總部位于上海安亭,在南京、儀征、烏魯木齊、寧波、長沙等地建立了整車生產(chǎn)基地,日生產(chǎn)整車6000 余輛。車輛合格證是汽車最重要的憑證之一,不僅證明該車輛符合國家對機(jī)動車裝備質(zhì)量及有關(guān)標(biāo)準(zhǔn)的要求,同時也是用戶繳納車輛購置稅和上牌的必備證件,合格證在整車下線檢測合格后實(shí)時打印。
合格證打印系統(tǒng)宏觀上分為兩個階段:一階段為單證集中打印模式;二階段為分散打印模式。一階段的集中打印模式階段存在系統(tǒng)響應(yīng)慢、潛在風(fēng)險高、穩(wěn)定性差等隱患,因此進(jìn)行了第二階段的優(yōu)化和升級。
合格證打印系統(tǒng)在總裝車間使用,實(shí)現(xiàn)車輛合格證、一致性證書和首??ǖ拇蛴?,同時還具備部分生產(chǎn)控制的功能。系統(tǒng)主要業(yè)務(wù)流程如下:
(1)從主數(shù)據(jù)系統(tǒng)同步相關(guān)主數(shù)據(jù),主要包括:車型、企標(biāo)、一致性企標(biāo)等。
(2)從排產(chǎn)系統(tǒng)導(dǎo)入訂單數(shù)據(jù),主要包括車型、車身顏色(外色)、內(nèi)飾、排量、變速箱型號、輪轂尺寸、個性化選裝包配置等信息。
(3)通過數(shù)據(jù)庫聯(lián)邦查詢訂單車輛在MES 中的過點(diǎn)信息及其他數(shù)據(jù),用來判斷當(dāng)前車輛的最新過點(diǎn)狀態(tài)。
(4)通過基于UDP 協(xié)議的消息中間件進(jìn)行實(shí)時通信,獲取車輛過點(diǎn)狀態(tài),判斷車輛數(shù)據(jù)的業(yè)務(wù)完整性,對異常數(shù)據(jù)進(jìn)行報(bào)警,從而對生產(chǎn)進(jìn)行監(jiān)控。
(5)在車輛到達(dá)不同位置(M1、ZP7、ZP8)是完成自定義的業(yè)務(wù)處理邏輯。
(6)車輛下線后,將所有的過程數(shù)據(jù)及三證(首???、一致性證書、合格證)數(shù)據(jù)同步到歸檔系統(tǒng),生產(chǎn)庫中的數(shù)據(jù)保留70 天,歸檔庫中的數(shù)據(jù)永久保存。
(7)本系統(tǒng)提供多維度的車輛信息監(jiān)控功能,同時提供多維護(hù)(按時間、車型、顏色、型號)的生產(chǎn)報(bào)表查詢統(tǒng)計(jì)功能。
系統(tǒng)采用Java 語言開發(fā),主要分為主數(shù)據(jù)同步、訂單導(dǎo)入、訂單清理、網(wǎng)頁Web 模塊、客戶端窗體、后臺業(yè)務(wù)處理服務(wù)、歸檔程序等七個業(yè)務(wù)模塊,各模塊的關(guān)系圖如圖1 所示。
各模塊的功能介紹如下:
圖1
圖2
(1)訂單導(dǎo)入模塊:解析排產(chǎn)系統(tǒng)過來的文本訂單數(shù)據(jù),并導(dǎo)入系統(tǒng)。
(2)主數(shù)據(jù)同步模塊:從主數(shù)據(jù)系統(tǒng)同步車型、企標(biāo)、一致性企標(biāo)等業(yè)務(wù)數(shù)據(jù)。
(3)訂單清理模塊:生產(chǎn)數(shù)據(jù)庫中只保存70 天內(nèi)的數(shù)據(jù),超過70 天的數(shù)據(jù)同步到歸檔庫后進(jìn)行清理。
(4)歸檔模塊:生產(chǎn)完成的所有車輛電子數(shù)據(jù)同步到歸檔系統(tǒng)。
(5)網(wǎng)頁Web 模塊:主要負(fù)責(zé)主數(shù)據(jù)、用戶角色、權(quán)限、統(tǒng)計(jì)報(bào)表等查詢和維護(hù)功能。
(6)客戶端窗體程序:負(fù)責(zé)過點(diǎn)車輛的信息展示、三證(首保卡、一致性證書、合格證)的補(bǔ)打、重打、過點(diǎn)數(shù)據(jù)統(tǒng)計(jì)功能。
圖3
圖4
(7)后臺業(yè)務(wù)處理服務(wù):負(fù)責(zé)所有的后臺業(yè)務(wù)邏輯處理和計(jì)算,為網(wǎng)頁Web 模塊、客戶端提供服務(wù)接口。
各模塊使用的技術(shù)如下:
(1)后臺業(yè)務(wù)處理服務(wù)及Web 網(wǎng)頁模塊的程序采用Java 語言開發(fā),版本為1.5,基于Struts1.2 框架開發(fā)。
(2)客戶端窗體程序使用了IBM WMC 技術(shù),是基于 Eclipse 架構(gòu)進(jìn)行擴(kuò)展的一種組件開發(fā)。
(3)權(quán)限模塊使用了LDAP,系統(tǒng)的角色、權(quán)限、用戶、客戶端IP 等信息均存儲在LDAP 上。
(4)后臺應(yīng)用服務(wù)器使用了WAS,它是IBM WebSphere 軟件平臺的一個應(yīng)用組件,主要用來作為應(yīng)用服務(wù)器。
(5)集中打印服務(wù)器的程序使用Visual Studio 2008 開發(fā)。統(tǒng)一接收單證打印請求,并將單證打印到現(xiàn)場客戶端的打印機(jī)上。
(6)數(shù)據(jù)庫使用了DB2 9.7 的版本,因?yàn)橐蚆ES 保持一致。一期項(xiàng)目的系統(tǒng)部署圖如圖2 所示。
各工廠的后臺服務(wù)器共享一套環(huán)境,初期只有一兩家工廠使用時,這種架構(gòu)可以滿足要求,但后期隨著異地工廠不斷增多,產(chǎn)能要求不斷提高,客戶端越來越多,這個架構(gòu)的問題就逐漸凸顯出來了,主要表現(xiàn)在以下幾個方面:
2.2.1 集中打印服務(wù)器的單點(diǎn)問題
(1)所有打印機(jī)的打印任務(wù)均由集中打印服務(wù)器統(tǒng)一分發(fā),因此集中打印服務(wù)器存在單點(diǎn)故障風(fēng)險,雖然打印服務(wù)器有了НA(高可用),但仍有潛在風(fēng)險,隨著連接的打印機(jī)越來越多,風(fēng)險也隨之越來越大。
(2)打印服務(wù)器上的打印程序更新時,所有工廠需要一起協(xié)調(diào)停機(jī)時間窗口,溝通和管理的成本較大。
(3)產(chǎn)量越來越高,打印任務(wù)越來越多,導(dǎo)致服務(wù)器的響應(yīng)速度越來越慢,跟不上工廠的生產(chǎn)節(jié)拍。
2.2.2 后臺業(yè)務(wù)服務(wù)器的單點(diǎn)問題
(1)后臺業(yè)務(wù)服務(wù)器也存在單點(diǎn)故障的風(fēng)險,服務(wù)器故障會導(dǎo)致所有工廠的總裝車間停產(chǎn)停線。
(2)應(yīng)用系統(tǒng)升級時需要協(xié)調(diào)所有工廠的停機(jī)時間,溝通成本比較大。
(3)各工廠的后臺業(yè)務(wù)處理邏輯一致,不利于各工廠個性化業(yè)務(wù)的發(fā)展。
2.2.3 應(yīng)用系統(tǒng)的軟件架構(gòu)老舊,帶來運(yùn)維困難,需要進(jìn)行升級
(1)軟件應(yīng)用程序的Java 版本仍然在使用JDK1.5。
(2)客戶端使用的IBM WMC,同樣技術(shù)比較落后,入門難度大,給項(xiàng)目開發(fā)和運(yùn)維帶來很大的困難。
(3)訂單導(dǎo)入、訂單清理、歸檔等小的業(yè)務(wù)模塊比較多,同時使用.NET Framewok2.0 開發(fā),源碼版本比較老,兼容性也比較差,運(yùn)維起來比較困難,不利于業(yè)務(wù)更新。
(4)軟件程序已經(jīng)運(yùn)維了很多年,增加的臨時性代碼邏輯比較多,出現(xiàn)了很多冗余代碼,系統(tǒng)的運(yùn)行效率大大降低。也增加了系統(tǒng)變更、升級和運(yùn)維的復(fù)雜性。
2.2.4 使用IBM 的應(yīng)用服務(wù)器WAS,學(xué)習(xí)成本高,經(jīng)濟(jì)成本高
(1)WAS 的模塊和功能比較多,本系統(tǒng)只用到了其中很小一部分。
(2)WAS 學(xué)習(xí)、運(yùn)維的門檻比較高,給項(xiàng)目團(tuán)隊(duì)、運(yùn)維人員都帶來不小的挑戰(zhàn)。
(3)WAS 是商業(yè)軟件,存在許可證的費(fèi)用支出。
總體來講,性價比不高。
2.2.5 應(yīng)用使用LDAP 來做用戶和權(quán)限管理太復(fù)雜
(1)部署需要安裝LDAP,增加了軟件架構(gòu)的邏輯復(fù)雜性。
(2)通過數(shù)據(jù)庫管理用戶、角色、權(quán)限的關(guān)系已經(jīng)是主流,因此LDAP 不再適合。
以上這些問題,給系統(tǒng)升級、環(huán)境搭建、運(yùn)維管理等諸多環(huán)節(jié)帶來很多的困擾,同時也存在一定的潛在隱患。因此,已經(jīng)不再適應(yīng)當(dāng)前多工廠的生產(chǎn)環(huán)境需要,于是就有了二期的改造方案。
優(yōu)化后的系統(tǒng)仍主要使用Java 語言,將訂單導(dǎo)入、訂單歸檔、訂單清理和主數(shù)據(jù)同步四個模塊合并到Web 網(wǎng)頁模塊,因此新的系統(tǒng)架構(gòu)主要分為Web 網(wǎng)頁模塊、客戶端窗體程序、后臺業(yè)務(wù)處理服務(wù)三個業(yè)務(wù)模塊,業(yè)務(wù)關(guān)系圖如圖3 所示。
根據(jù)新的架構(gòu),各工廠的環(huán)境獨(dú)立部署,每個工廠一套硬件環(huán)境,新的服務(wù)器和客戶端部署情況如圖4 所示。
(1) 業(yè)務(wù)服務(wù)器有兩臺:一臺應(yīng)用服務(wù)器(APP),一臺數(shù)據(jù)庫服務(wù)器(DB),兩臺機(jī)器互為高可用(НA)。
(2)取消了集中打印服務(wù)器。
針對一期系統(tǒng)中軟件、代碼、技術(shù)架構(gòu)等方面的問題,我們在業(yè)務(wù)和系統(tǒng)架構(gòu)方面做了如下優(yōu)化:
3.2.1 單證集中打印調(diào)整為分散打印
業(yè)務(wù)邏輯:由客戶端負(fù)責(zé)打印數(shù)據(jù)的處理和準(zhǔn)備,直接調(diào)用本地打印機(jī)完成單證的打印,再把打印結(jié)果回傳給服務(wù)端。
調(diào)整后的優(yōu)勢體現(xiàn)在:
(1)由客戶端處理相關(guān)業(yè)務(wù)邏輯,緩解了服務(wù)端的壓力。
(2)由客戶端直接調(diào)用打印機(jī),不再由后臺處理,減少了網(wǎng)絡(luò)開銷,提高了處理的效率。
(3)解決了后臺集中打印服務(wù)器的單點(diǎn)問題,降低了系統(tǒng)風(fēng)險。
(4)取消集中打印服務(wù)器,降低了硬件投入成本。
調(diào)整后,單臺車輛單證打印的處理時間降低到30 秒左右,比調(diào)整前效率提升了40%,打印服務(wù)器的單點(diǎn)故障隱患徹底解決。
3.2.2 后臺服務(wù)器每個工廠獨(dú)立部署
架構(gòu):后臺的業(yè)務(wù)服務(wù)器和數(shù)據(jù)庫服務(wù)器各工廠獨(dú)立部署。
調(diào)整后的優(yōu)勢體現(xiàn)在:
(1)各工廠擁有獨(dú)立的服務(wù)器,性能有了極大的提升,響應(yīng)更快。
(2)各工廠可以做更多個性化的功能和配置,有利于業(yè)務(wù)的發(fā)展。
(3)各工廠可獨(dú)立的發(fā)布和更新,不再為協(xié)調(diào)停機(jī)時間而耗費(fèi)大量的管理成本。
調(diào)整后,各工廠的業(yè)務(wù)可獨(dú)立發(fā)展,不再相互制約,業(yè)務(wù)配置管理、系統(tǒng)的發(fā)布更新更加靈活,更好的適應(yīng)了公司業(yè)務(wù)的發(fā)展。
3.2.3 軟件程序升級、代碼重構(gòu)
主要體現(xiàn)在以下幾個方面:
(1)Java 的版本由1.5 升級到1.8。
(2).NET Framework 的版本由3.5 升級到了4.5,開發(fā)環(huán)境由VS2008 升級到VS2015。
(3)放棄了原來由IBM WMC 開發(fā)的客戶端,改為由C#開發(fā)的窗體程序。
(4)將主數(shù)據(jù)同步、訂單導(dǎo)入、清單清理、數(shù)據(jù)歸檔四個服務(wù)合并到網(wǎng)頁模塊。
(5)對后臺業(yè)務(wù)邏輯、Web 網(wǎng)頁的代碼進(jìn)行了重構(gòu)和優(yōu)化,去除了大約60%的代碼。
(6)在研發(fā)/運(yùn)維的版本管理方面借鑒了成熟產(chǎn)品的管理經(jīng)驗(yàn),借助Git 倉庫,項(xiàng)目和運(yùn)維的源碼分開管理,形成了一套適合自己的管理規(guī)范。
通過對框架升級和代碼重構(gòu)整合,使整個軟件架構(gòu)更加簡潔,代碼執(zhí)行效率更高,運(yùn)維更加方便。
3.2.4 應(yīng)用服務(wù)器調(diào)整為Tomcat
調(diào)整后的優(yōu)勢體現(xiàn)在:
(1)Tomcat 更加輕量級,啟動更快,20 秒即可啟動完成。
(2)應(yīng)用的安裝、啟停更加快捷。
(3)Tomcat 更容易上手,降低了學(xué)習(xí)和運(yùn)維的成本。
經(jīng)過一個月的試運(yùn)行,性能完全滿足生產(chǎn)的要求。
3.2.5 權(quán)限管理使用數(shù)據(jù)庫實(shí)現(xiàn)
主要調(diào)整內(nèi)容:
(1)不再使用LDAP,改由數(shù)據(jù)庫存儲相關(guān)業(yè)務(wù)數(shù)據(jù)。
(2)通過人員-角色-權(quán)限的關(guān)系來管理權(quán)限數(shù)據(jù),邏輯更簡單。
(3)取消原來基于WAS+LDAP 實(shí)現(xiàn)的單點(diǎn)登錄功能。
取消LDAP 存儲,改由數(shù)據(jù)庫存儲權(quán)限數(shù)據(jù),架構(gòu)更簡單,可擴(kuò)展性也更好。
經(jīng)過架構(gòu)、應(yīng)用程序、技術(shù)等幾方面的調(diào)整后,新系統(tǒng)各方面的效果還是比較顯著的,主要體現(xiàn)在以下幾個方面:
(1)整體的性能有所提升:服務(wù)器及客戶端的處理能力得到了提高,單臺車輛的數(shù)據(jù)處理時間由原來的大約50 秒減少到目前的30 秒,同比減少40%,可以適應(yīng)更高的生產(chǎn)節(jié)拍。
(2)系統(tǒng)的邏輯架構(gòu)更加簡潔:由原來的七模塊減少到三模塊,業(yè)務(wù)更清晰。
(3)解決了服務(wù)器的單點(diǎn)問題:降低了系統(tǒng)風(fēng)險,提高了系統(tǒng)的可用性和穩(wěn)定性。
(4)對業(yè)務(wù)代碼進(jìn)行重構(gòu):總代碼量減少了50%,效率有了大幅提升,應(yīng)用的穩(wěn)定性、可擴(kuò)展性得到了提升。
(5)使用更加輕量級的Tomcat 替代WAS,沒有降低性能的情況下,降低了經(jīng)濟(jì)成本,間接提升了效益。
在上汽大眾合格證打印系統(tǒng)項(xiàng)目升級改造的過程中,我們運(yùn)用了新的分析方法、新的IT 技術(shù)手段,通過對架構(gòu)進(jìn)行調(diào)整,對業(yè)務(wù)進(jìn)行整合,對代碼進(jìn)行重構(gòu)等一系列方法和措施提高了系統(tǒng)的性能和可用性,降低了系統(tǒng)不穩(wěn)定帶來的潛在風(fēng)險,更好的適應(yīng)了整車制造業(yè)務(wù)的發(fā)展,為公司創(chuàng)造了更大的價值。