范勁超
摘要:伴隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,各種新技術(shù)層出不窮,軟件架構(gòu)在新技術(shù)的推動(dòng)下經(jīng)歷了多次的更新與迭代。從最開始的單體架構(gòu),發(fā)展為SOA面向服務(wù)的架構(gòu),直到現(xiàn)今快速興起的微服務(wù)架構(gòu)。使用微服務(wù)架構(gòu)開發(fā)學(xué)生工作管理系統(tǒng),并結(jié)合容器化技術(shù)來實(shí)現(xiàn)業(yè)務(wù)功能的拆分,將學(xué)生工作的內(nèi)容拆分成多個(gè)業(yè)務(wù)領(lǐng)域的組件,既能夠作為單獨(dú)的系統(tǒng)運(yùn)行,又能作為子模塊運(yùn)行,并能夠和其他子系統(tǒng)進(jìn)行有效的銜接。有利于實(shí)現(xiàn)軟件資產(chǎn)的復(fù)用,促進(jìn)信息系統(tǒng)向開發(fā)運(yùn)維一體化方式的轉(zhuǎn)變。
關(guān)鍵詞:學(xué)工系統(tǒng);微服務(wù);容器
中圖分類號:TP393? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)21-0071-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
對于高校來說,學(xué)生工作的管理是一項(xiàng)極其重要的工作,它涉及了學(xué)生的各方面,包括了學(xué)工隊(duì)伍建設(shè)、學(xué)生信息采集、思想教育、素質(zhì)教育、評獎(jiǎng)評優(yōu)、學(xué)生資助及勤工助學(xué)等,學(xué)生工作的管理與學(xué)生的學(xué)風(fēng)建設(shè)及綜合素質(zhì)的培養(yǎng)息息相關(guān)。傳統(tǒng)的紙質(zhì)或者文件等形式的管理方式,工作量大,并且容易出錯(cuò),隨著計(jì)算機(jī)以及網(wǎng)絡(luò)技術(shù)的發(fā)展,使用新的技術(shù)來實(shí)現(xiàn)學(xué)生工作管理就是大勢所趨了。使用傳統(tǒng)的單體架構(gòu)進(jìn)行學(xué)生工作管理系統(tǒng)(之后簡稱學(xué)工系統(tǒng))的搭建面臨著業(yè)務(wù)功能重復(fù)、模塊之間耦合程度較高、需求變更困難等問題,同時(shí)十分依賴經(jīng)驗(yàn)豐富的運(yùn)維人員?;谖⒎?wù)架構(gòu)的學(xué)工系統(tǒng),引入微服務(wù)的架構(gòu),結(jié)合容器化技術(shù)來實(shí)現(xiàn)業(yè)務(wù)功能的拆分,將學(xué)工系統(tǒng)拆分為微服務(wù)的形式部署在容器平臺之上,實(shí)現(xiàn)分布式時(shí)代的微服務(wù)研發(fā)運(yùn)維一體化、微服務(wù)體系生態(tài)圈、微服務(wù)應(yīng)用全部生命周期管理。
1 容器平臺
容器平臺基于Kubernetes與Istio完成了應(yīng)用的部署、升級、啟動(dòng)、停止、上線、下線、監(jiān)控、治理、應(yīng)用彈性伸縮等。在Docker技術(shù)的基礎(chǔ)之上,為容器化應(yīng)用提供部署運(yùn)行、資源調(diào)度、服務(wù)發(fā)現(xiàn)以及動(dòng)態(tài)伸縮等一系列功能。系統(tǒng)架構(gòu)圖如圖1所示。
1.1 Docker
Docker是一個(gè)開源的應(yīng)用容器引擎。Docker虛擬化技術(shù)實(shí)現(xiàn)了操作系統(tǒng)虛擬化,使用戶在隔離的進(jìn)程之中運(yùn)行程序,并且能夠打包程序的代碼和依賴關(guān)系[1]。Docker一般用于Web應(yīng)用的自動(dòng)化打包及發(fā)布、自動(dòng)化測試和持續(xù)集成發(fā)布、在服務(wù)器型環(huán)境之中部署和調(diào)整數(shù)據(jù)庫或其他后臺應(yīng)用等場景。
使用Docker可以使應(yīng)用程序與基礎(chǔ)架構(gòu)分開,從而快速、一致地交付應(yīng)用程序。Docker具備可移植性及輕量級的特性,可以輕松地完成動(dòng)態(tài)管理的工作負(fù)擔(dān),能夠根據(jù)業(yè)務(wù)需求實(shí)時(shí)擴(kuò)展或拆除應(yīng)用程序及服務(wù)。
1.2 Kubernetes
Docker已逐漸成為虛擬化主流,為了實(shí)現(xiàn)Docker的集群化、規(guī)?;芾?,可以使用Kubernetes對容器化應(yīng)用進(jìn)行自動(dòng)部署、伸縮和管理[2]。Kubernetes(簡稱K8S)是Google推出的開源自動(dòng)化容器操作平臺[3],這些操作包括部署、調(diào)度以及節(jié)點(diǎn)集群間的擴(kuò)展,可以管理云平臺之中的多個(gè)主機(jī)上的容器化應(yīng)用, 如對容器實(shí)施版本升級與回退、維持應(yīng)用所需的狀態(tài)、對應(yīng)用進(jìn)行調(diào)度等。
使用Kubernetes可以自動(dòng)化容器的部署及復(fù)制、隨時(shí)對縮容器規(guī)模進(jìn)行收縮或者擴(kuò)展、提供容器之間的負(fù)載均衡,并方便容器的升級及回退版本等維護(hù)操作,Kubernetes的使用能夠?qū)Υ罅咳萜魈峁┮环N一體化的管理機(jī)制,讓用戶能夠?qū)Υ罅康娜萜鬟M(jìn)行高效地部署、更新等運(yùn)維操作,降低了對大量容器進(jìn)行管理的成本。
1.3 Istio
Istio是用于Kubernetes的Service Mesh(服務(wù)網(wǎng)格),負(fù)責(zé)處理服務(wù)之間的通信。官方對Istio的表述翻譯過來為連接、安全加固、控制和觀察服務(wù)的開放平臺。連接:控制中心能從集群之中獲取所有服務(wù)的信息,并且分發(fā)給代理,這樣代理就可以根據(jù)用戶的期望完成服務(wù)間的通信;安全加固:由于所有流量都通過代理,因此代理接收到?jīng)]有加密的網(wǎng)絡(luò)流量之后,可以自動(dòng)進(jìn)行一次封裝,將之升級為加密的流量;控制:用戶可以對各種規(guī)則進(jìn)行配置,當(dāng)代理發(fā)現(xiàn)服務(wù)之間的訪問與配置規(guī)則不符時(shí),就拒絕訪問;觀察:由于所有流量經(jīng)過代理,因此代理能夠清晰地知道整個(gè)集群的訪問情況,它將這些數(shù)據(jù)上報(bào)控制中心,管理員就能觀察到整個(gè)集群的流量情況了。
Kubernetes解決大量微服務(wù)有效聚合部署的問題,Istio解決服務(wù)上線面對的一系列治理問題。隨著Istio的成熟以及服務(wù)網(wǎng)格技術(shù)的流行,Istio補(bǔ)齊了Kubernetes的治理能力,提供了端到端服務(wù)運(yùn)行治理的治理平臺,使Istio、微服務(wù)、容器以及Kubernetes形成了一個(gè)完美的閉環(huán)[4]。
1.4 微服務(wù)與容器平臺
微服務(wù)將應(yīng)用系統(tǒng)拆分為多個(gè)業(yè)務(wù)領(lǐng)域組件,容器能將拆分的各個(gè)業(yè)務(wù)領(lǐng)域組件進(jìn)行容器化,容器化的技術(shù)正好為微服務(wù)提供了最佳的運(yùn)行環(huán)境。同時(shí),容器平臺為大量的容器化業(yè)務(wù)提供了一套管理中間件。容器平臺提供了微服務(wù)生態(tài)圈的體系管理,對微服務(wù)應(yīng)用的全生命周期進(jìn)行了管理,包括微服務(wù)開發(fā)、測試、部署、運(yùn)行、管理、治理、監(jiān)控、配置、注冊、網(wǎng)關(guān)、路由、授權(quán)等。實(shí)現(xiàn)了微服務(wù)應(yīng)用的持續(xù)集成以及多環(huán)境的一鍵發(fā)布能力,進(jìn)而實(shí)現(xiàn)了分布式時(shí)代的微服務(wù)研發(fā)運(yùn)維一體化。
2 學(xué)工系統(tǒng)與微服務(wù)
學(xué)工系統(tǒng)基于微服務(wù)的架構(gòu),使用模塊化的設(shè)計(jì)理念,將各部門學(xué)生工作內(nèi)容拆分為多個(gè)業(yè)務(wù)領(lǐng)域組件,以容器化的技術(shù)來實(shí)現(xiàn),同時(shí)通過容器平臺來進(jìn)行統(tǒng)一管理。
2.1 系統(tǒng)功能
基于當(dāng)前智慧校園的概念,學(xué)工系統(tǒng)采用當(dāng)前最新的J2EE架構(gòu)及ORACLE數(shù)據(jù)庫,能夠最大限度地保證業(yè)務(wù)系統(tǒng)與數(shù)據(jù)的一致性及穩(wěn)定性,提供了開放式的接口,采用安全可靠的體系架構(gòu),有效地保證了數(shù)據(jù)的安全性及有效性。系統(tǒng)基于模塊化的設(shè)計(jì)理念,將整個(gè)業(yè)務(wù)系統(tǒng)劃分為了多個(gè)業(yè)務(wù)領(lǐng)域組件,很好地契合了容器化的條件,并使其能與其他子系統(tǒng)有效地進(jìn)行銜接。同時(shí),學(xué)工系統(tǒng)采用了工作流引擎及表單設(shè)計(jì)技術(shù),可以根據(jù)實(shí)際的業(yè)務(wù)需求來繪制申請流程及設(shè)計(jì)申請表單,可以根據(jù)業(yè)務(wù)的需求變化來靈活地進(jìn)行調(diào)整。在權(quán)限管理方面,針對校級管理人員、院系管理人員、學(xué)生等可以設(shè)定不同的角色,從而實(shí)現(xiàn)權(quán)限的管理,使用戶能夠方便地進(jìn)行各級權(quán)限的管理。系統(tǒng)采用強(qiáng)大的報(bào)表引擎技術(shù)來對學(xué)生工作數(shù)據(jù)進(jìn)行統(tǒng)計(jì),使用表格、圖表、圖片等多種形式來實(shí)現(xiàn)統(tǒng)計(jì)數(shù)據(jù)的可視化,能更好地對學(xué)生管理工作進(jìn)行數(shù)據(jù)支撐。整個(gè)學(xué)工系統(tǒng)主要由學(xué)工隊(duì)伍建設(shè)、學(xué)生信息采集服務(wù)、思教服務(wù)、素質(zhì)教育測評服務(wù)、評獎(jiǎng)評優(yōu)服務(wù)、學(xué)生資助服務(wù)及勤工助學(xué)服務(wù)等業(yè)務(wù)模塊組成。