【摘要】? ? 本文通過對(duì)單體應(yīng)用架構(gòu)的企業(yè)級(jí)OA系統(tǒng)現(xiàn)狀進(jìn)行深入分析,發(fā)現(xiàn)系統(tǒng)存在的問題,有針對(duì)性的提出了功能、性能、技術(shù)三方面的需求,并通過對(duì)系統(tǒng)功能設(shè)計(jì)、微服務(wù)架構(gòu)設(shè)計(jì)的詳細(xì)闡述,提出了一種基于微服務(wù)架構(gòu)思想和Spring Cloud框架重構(gòu)企業(yè)OA系統(tǒng)的方法。
【關(guān)鍵詞】? ? 微服務(wù)架構(gòu)? ? OA系統(tǒng)? ? Spring Cloud
引言:
互聯(lián)網(wǎng)、云計(jì)算等新一代信息技術(shù)的高速發(fā)展,企業(yè)對(duì)信息化的依賴程度日益加深,逐步建立了OA系統(tǒng)、ERP系統(tǒng)、主營業(yè)務(wù)系統(tǒng)等多個(gè)信息系統(tǒng),這些系統(tǒng)多數(shù)采用單體應(yīng)用架構(gòu),各系統(tǒng)之間集成度較差,存在信息孤島。隨著應(yīng)用程度的加深,在單體架構(gòu)中不斷累加新功能,導(dǎo)致系統(tǒng)越來越臃腫,開發(fā)維護(hù)變得十分困難,用戶體驗(yàn)也變差。近年來,隨著微服務(wù)技術(shù)架構(gòu)的逐漸成熟,同時(shí)容器技術(shù)的出現(xiàn)為微服務(wù)提供了更好的應(yīng)用環(huán)境,使得微服務(wù)架構(gòu)的優(yōu)勢(shì)快速凸顯,其優(yōu)異表現(xiàn)獲得了普遍認(rèn)可,越來越多的企業(yè)開始對(duì)原先的單體架構(gòu)信息系統(tǒng)進(jìn)行微服務(wù)化重構(gòu)。
本文將介紹一種基于微服務(wù)架構(gòu)思想和Spring Cloud框架,將企業(yè)OA系統(tǒng)重構(gòu)為微服務(wù)架構(gòu)的方法。
一、系統(tǒng)現(xiàn)狀
某企業(yè)OA系統(tǒng)最早建設(shè)于2013年,主要功能包括出差、請(qǐng)假、印章、培訓(xùn)等辦公申請(qǐng)類綜合業(yè)務(wù),采用傳統(tǒng)單體架構(gòu)模式,所有功能都被打包在一個(gè)應(yīng)用程序之中。2015年,在原架構(gòu)中又新增了資金類業(yè)務(wù)功能,包括合同付款、費(fèi)用報(bào)銷、差旅報(bào)銷等,并與銀行系統(tǒng)打通,形成資金的線上支付。2017年公司購買了主營業(yè)務(wù)系統(tǒng)軟件,涵蓋交易錄入、收發(fā)貨、運(yùn)輸、結(jié)算等功能,產(chǎn)生了大量單據(jù)審批和模板打印需求,于是又與OA系統(tǒng)進(jìn)行了深度集成,主營業(yè)務(wù)相關(guān)數(shù)據(jù)在主營業(yè)務(wù)系統(tǒng)中錄入,通過接口將數(shù)據(jù)集成給OA系統(tǒng),在OA系統(tǒng)中完成審批,并回傳審批結(jié)果。
隨著企業(yè)信息化應(yīng)用水平的不斷加深,大量的功能模塊和外部接口不斷在OA系統(tǒng)中疊加,功能模塊數(shù)量超過100個(gè),外部系統(tǒng)接口數(shù)量超過25個(gè),系統(tǒng)變得越來越臃腫,每次系統(tǒng)更新部署重啟服務(wù)耗時(shí)接近1小時(shí)。由于開發(fā)團(tuán)隊(duì)的不同,OA系統(tǒng)代碼可讀性、健壯性參差不齊,可維護(hù)性也變得更差。另外,因?yàn)镺A系統(tǒng)運(yùn)行多年,單據(jù)數(shù)量不斷累積,導(dǎo)致系統(tǒng)模塊加載時(shí)間過長,查詢、審批等待時(shí)間過長,用戶體驗(yàn)越來越差。
二、需求分析
通過對(duì)企業(yè)OA系統(tǒng)的現(xiàn)狀分析發(fā)現(xiàn)主要存在功能臃腫、界面不清,性能下降導(dǎo)致用戶體驗(yàn)較差,開發(fā)運(yùn)維難度大、維護(hù)成本高等問題。歸納來看,通過對(duì)OA系統(tǒng)的重構(gòu)需要滿足功能、性能、技術(shù)三方面主要需求:
1.功能需求。對(duì)企業(yè)的業(yè)務(wù)需求進(jìn)行全面重新梳理和分析,按照業(yè)務(wù)邊界重新劃分OA系統(tǒng)功能模塊,使各模塊功能更加貼合業(yè)務(wù)邏輯;摒棄非必要或已經(jīng)不在使用的功能,整合功能相似、相近的功能,改造使用頻次較低的功能,或與其他模塊融合,或提高其應(yīng)用的普遍性;簡化用戶操作、優(yōu)化界面展示效果。
2.性能需求。業(yè)務(wù)量的提升帶來用戶并發(fā)數(shù)量提升、數(shù)據(jù)量提升,通過對(duì)OA系統(tǒng)的重構(gòu),需要加快系統(tǒng)功能的處理時(shí)間、響應(yīng)時(shí)間,尤其需要解決財(cái)務(wù)月結(jié)時(shí)段高并發(fā)帶來的系統(tǒng)性能較差問題;需要充分考慮數(shù)據(jù)量累積帶來的效率緩慢降低問題,對(duì)數(shù)據(jù)的存儲(chǔ)、檢索邏輯進(jìn)行優(yōu)化。
3.技術(shù)需求。將單體應(yīng)用架構(gòu)的OA系統(tǒng)重構(gòu)為微服務(wù)架構(gòu),通過底層技術(shù)架構(gòu)的改造,對(duì)上層功能應(yīng)用的優(yōu)化改造提供技術(shù)支撐。
三、系統(tǒng)功能設(shè)計(jì)
系統(tǒng)功能架構(gòu)如圖1所示劃分為四個(gè)層次,從下到上依次為PaaS層、服務(wù)層、應(yīng)用層和訪問層。
1. PaaS層。為整個(gè)微服務(wù)架構(gòu)提供底層技術(shù)框架,包括容器服務(wù)、中間件服務(wù)和數(shù)據(jù)服務(wù)。
2.服務(wù)層。主要提供公共能力服務(wù),包括統(tǒng)一用戶管理、統(tǒng)一身份認(rèn)證、統(tǒng)一流程管理、統(tǒng)一門戶管理、統(tǒng)一服務(wù)管理、數(shù)據(jù)服務(wù)管理、運(yùn)維監(jiān)控管理、接口管理、模板管理、消息集成管理。服務(wù)層為業(yè)務(wù)應(yīng)用的開發(fā)、管理提供各項(xiàng)能力支撐。
3.應(yīng)用層。根據(jù)企業(yè)業(yè)務(wù)邏輯將OA系統(tǒng)的應(yīng)用重新劃分為綜合業(yè)務(wù)、資金業(yè)務(wù)、主營業(yè)務(wù)、運(yùn)輸業(yè)務(wù)四個(gè)主要的應(yīng)用服務(wù)。
1)綜合業(yè)務(wù)。主要包括請(qǐng)假申請(qǐng)、出差申請(qǐng)、印章申請(qǐng)、員工考勤、培訓(xùn)管理、采辦管理、合同管理等功能。
2)資金業(yè)務(wù)。主要包括預(yù)算管理、合同類付款、非合同付款、費(fèi)用報(bào)銷、差旅報(bào)銷、備用金管理等功能,并與銀行系統(tǒng)集成,實(shí)現(xiàn)資金的線上支付。
3)主營業(yè)務(wù)。主要包括交易申請(qǐng)、結(jié)算通知書申請(qǐng)、發(fā)票申請(qǐng)、增值稅發(fā)票申請(qǐng)、套保申請(qǐng)、許可證管理等功能,并與主營業(yè)務(wù)系統(tǒng)集成,實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的。
4)運(yùn)輸業(yè)務(wù)。因?yàn)檫\(yùn)輸業(yè)務(wù)相對(duì)獨(dú)立,所以從主營業(yè)務(wù)分離出來,成為獨(dú)立服務(wù),主要包括運(yùn)費(fèi)管理、雜費(fèi)管理、滯期費(fèi)管理、船代管理、貨代管理、租船單等功能。
4.訪問層。提供用戶終端的訪問能力,支持電腦、手機(jī)、平板多終端訪問。
四、微服務(wù)架構(gòu)設(shè)計(jì)
基于微服務(wù)的理念對(duì)OA系統(tǒng)進(jìn)行了如圖2所示的微服務(wù)架構(gòu)設(shè)計(jì),首先前端與后端服務(wù)進(jìn)行了分離,前端采用Vue.js+ElementUI,Vue.js是一個(gè)輕量級(jí)的框架,可以進(jìn)行組件化開發(fā),有效減少代碼編寫量,其編寫出來的界面效果是響應(yīng)式的,極大優(yōu)化了網(wǎng)頁在各種設(shè)備上顯示效果,而ElementUI是一個(gè)與VUE配合開發(fā)較好的UI框架。
后端采用SpringCloud微服務(wù)框架,使用Eureka組件實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn);Zuul組件作為微服務(wù)網(wǎng)關(guān),實(shí)現(xiàn)路由的轉(zhuǎn)發(fā)、過濾以及監(jiān)控功能;Ribbon組件提供負(fù)載均衡功能,使用輪詢算法將請(qǐng)求均勻的分配至一個(gè)服務(wù)的不同容器;Hystrix組件提供隔離、熔斷以及降級(jí)功能,避免因某個(gè)服務(wù)故障引發(fā)連鎖反應(yīng),導(dǎo)致整個(gè)系統(tǒng)崩潰;Sleuth組件提供服務(wù)鏈路追蹤功能,可以很方便的理清服務(wù)間的調(diào)用關(guān)系,而Zipkin則可以進(jìn)行實(shí)時(shí)數(shù)據(jù)監(jiān)控,及時(shí)發(fā)現(xiàn)系統(tǒng)的性能瓶頸;Config Server則為系統(tǒng)提供配置的集中管理、動(dòng)態(tài)調(diào)整、自動(dòng)更新。
為更好的支撐微服務(wù)架構(gòu),采用了Docker容器引擎技術(shù),每一個(gè)微服務(wù)均可以獨(dú)立部署在Docker容器中,具備高效部署、資源調(diào)度、服務(wù)發(fā)現(xiàn)和動(dòng)態(tài)伸縮等功能,并使用Kubernetes對(duì)容器進(jìn)行編排管理,簡化容器部署,提升部署效率。不同微服務(wù)之間使用REST API方式進(jìn)行相互調(diào)用。底層采用基于RedHat Openshift的PaaS平臺(tái),提供包括Kubernetes在內(nèi)的容器服務(wù)組件,以及多種微服務(wù)、中間件服務(wù)組件,為容器的調(diào)度、編排,微服務(wù)框架的部署、運(yùn)行,中間件的配置、應(yīng)用提供平臺(tái)級(jí)支撐。同時(shí)PaaS平臺(tái)還提供Gitlab等開發(fā)管理工具和APM、Prometheus等運(yùn)營管理工具,能有效提升開發(fā)、運(yùn)維管理水平。
五、結(jié)束語
本文從系統(tǒng)現(xiàn)狀分析、需求分析、功能架構(gòu)設(shè)計(jì)、微服務(wù)架構(gòu)設(shè)計(jì)四個(gè)方面詳細(xì)介紹了將企業(yè)OA系統(tǒng)重構(gòu)為微服務(wù)架構(gòu)的方法,對(duì)Spring Cloud框架及其主要功能組件進(jìn)行了詳細(xì)闡述。
微服務(wù)架構(gòu)具有高內(nèi)聚、低耦合的特點(diǎn),支持快速靈活部署、可擴(kuò)展和技術(shù)異構(gòu)等優(yōu)勢(shì),但微服務(wù)架構(gòu)也并不是萬能靈藥,依然具有其自身的缺陷,因此,企業(yè)在使用微服務(wù)架構(gòu)時(shí),一定要結(jié)合企業(yè)的業(yè)務(wù)實(shí)際、組織架構(gòu)、團(tuán)隊(duì)能力等多個(gè)方面進(jìn)行綜合判斷。
參? 考? 文? 獻(xiàn)
[1]劉彤.基于微服務(wù)架構(gòu)平臺(tái)在OA系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn)[J].民航管理,2018(07):73-76.
[2]王方旭.基于Spring Cloud實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)微服務(wù)化的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2018(08):60-61.
[3]吳俠,艾芳菊.基于微服務(wù)架構(gòu)的眾籌系統(tǒng)[J].湖北大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,42(01):103-108.
胡慶偉(1987.06),男 ,漢族,重慶市,大學(xué)本科,工程師,研究方向:信息系統(tǒng)集成。